diff --git a/cmake/macros/SetupHifiLibrary.cmake b/cmake/macros/SetupHifiLibrary.cmake index 628f65b278..26c769c6e6 100644 --- a/cmake/macros/SetupHifiLibrary.cmake +++ b/cmake/macros/SetupHifiLibrary.cmake @@ -24,6 +24,16 @@ macro(SETUP_HIFI_LIBRARY) set_source_files_properties(${SRC} PROPERTIES COMPILE_FLAGS -mavx) endif() endforeach() + + # add compiler flags to AVX2 source files + file(GLOB_RECURSE AVX2_SRCS "src/avx2/*.cpp" "src/avx2/*.c") + foreach(SRC ${AVX2_SRCS}) + if (WIN32) + set_source_files_properties(${SRC} PROPERTIES COMPILE_FLAGS /arch:AVX2) + elseif (APPLE OR UNIX) + set_source_files_properties(${SRC} PROPERTIES COMPILE_FLAGS "-mavx2 -mfma") + endif() + endforeach() setup_memory_debugger() diff --git a/interface/resources/qml/AssetServer.qml b/interface/resources/qml/AssetServer.qml index e975037b5f..5b02020272 100644 --- a/interface/resources/qml/AssetServer.qml +++ b/interface/resources/qml/AssetServer.qml @@ -341,7 +341,7 @@ Window { HifiControls.GlyphButton { glyph: hifi.glyphs.reload - color: hifi.buttons.white + color: hifi.buttons.black colorScheme: root.colorScheme width: hifi.dimensions.controlLineHeight @@ -349,8 +349,8 @@ Window { } HifiControls.Button { - text: "ADD TO WORLD" - color: hifi.buttons.white + text: "Add To World" + color: hifi.buttons.black colorScheme: root.colorScheme width: 120 @@ -360,8 +360,8 @@ Window { } HifiControls.Button { - text: "RENAME" - color: hifi.buttons.white + text: "Rename" + color: hifi.buttons.black colorScheme: root.colorScheme width: 80 @@ -372,7 +372,7 @@ Window { HifiControls.Button { id: deleteButton - text: "DELETE" + text: "Delete" color: hifi.buttons.red colorScheme: root.colorScheme width: 80 diff --git a/libraries/audio/src/AudioSRC.cpp b/libraries/audio/src/AudioSRC.cpp index c187d381a4..98de36e655 100644 --- a/libraries/audio/src/AudioSRC.cpp +++ b/libraries/audio/src/AudioSRC.cpp @@ -14,552 +14,11 @@ #include #include "AudioSRC.h" +#include "AudioSRCData.h" -// -// prototype lowpass filter -// -// Minimum-phase equiripple FIR -// taps = 96, oversampling = 32 -// -// passband = 0.918 -// stopband = 1.010 -// passband ripple = +-0.01dB -// stopband attn = -125dB (-70dB at 1.000) -// -static const int PROTOTYPE_TAPS = 96; // filter taps per phase -static const int PROTOTYPE_PHASES = 32; // oversampling factor - -static const float prototypeFilter[PROTOTYPE_TAPS * PROTOTYPE_PHASES] = { - 0.00000000e+00f, 1.55021703e-05f, 1.46054865e-05f, 2.07057160e-05f, 2.91335519e-05f, 4.00091078e-05f, - 5.33544450e-05f, 7.03618468e-05f, 9.10821639e-05f, 1.16484613e-04f, 1.47165999e-04f, 1.84168304e-04f, - 2.28429617e-04f, 2.80913884e-04f, 3.42940399e-04f, 4.15773039e-04f, 5.01023255e-04f, 6.00234953e-04f, - 7.15133271e-04f, 8.47838855e-04f, 1.00032516e-03f, 1.17508881e-03f, 1.37452550e-03f, 1.60147614e-03f, - 1.85886458e-03f, 2.14985024e-03f, 2.47783071e-03f, 2.84666764e-03f, 3.26016878e-03f, 3.72252797e-03f, - 4.23825900e-03f, 4.81207874e-03f, 5.44904143e-03f, 6.15447208e-03f, 6.93399929e-03f, 7.79337059e-03f, - 8.73903392e-03f, 9.77729117e-03f, 1.09149561e-02f, 1.21591316e-02f, 1.35171164e-02f, 1.49965439e-02f, - 1.66053136e-02f, 1.83515384e-02f, 2.02435362e-02f, 2.22899141e-02f, 2.44995340e-02f, 2.68813362e-02f, - 2.94443254e-02f, 3.21979928e-02f, 3.51514690e-02f, 3.83143719e-02f, 4.16960560e-02f, 4.53060504e-02f, - 4.91538115e-02f, 5.32486197e-02f, 5.75998650e-02f, 6.22164253e-02f, 6.71072811e-02f, 7.22809789e-02f, - 7.77457552e-02f, 8.35095233e-02f, 8.95796944e-02f, 9.59631768e-02f, 1.02666457e-01f, 1.09695215e-01f, - 1.17054591e-01f, 1.24748885e-01f, 1.32781656e-01f, 1.41155521e-01f, 1.49872243e-01f, 1.58932534e-01f, - 1.68335961e-01f, 1.78081143e-01f, 1.88165339e-01f, 1.98584621e-01f, 2.09333789e-01f, 2.20406193e-01f, - 2.31793899e-01f, 2.43487398e-01f, 2.55475740e-01f, 2.67746404e-01f, 2.80285305e-01f, 2.93076743e-01f, - 3.06103423e-01f, 3.19346351e-01f, 3.32784916e-01f, 3.46396772e-01f, 3.60158039e-01f, 3.74043042e-01f, - 3.88024564e-01f, 4.02073759e-01f, 4.16160177e-01f, 4.30251886e-01f, 4.44315429e-01f, 4.58315954e-01f, - 4.72217175e-01f, 4.85981675e-01f, 4.99570709e-01f, 5.12944586e-01f, 5.26062401e-01f, 5.38882630e-01f, - 5.51362766e-01f, 5.63459860e-01f, 5.75130384e-01f, 5.86330458e-01f, 5.97016050e-01f, 6.07143161e-01f, - 6.16667840e-01f, 6.25546499e-01f, 6.33735979e-01f, 6.41193959e-01f, 6.47878856e-01f, 6.53750084e-01f, - 6.58768549e-01f, 6.62896349e-01f, 6.66097381e-01f, 6.68337353e-01f, 6.69583869e-01f, 6.69807061e-01f, - 6.68979117e-01f, 6.67075139e-01f, 6.64072812e-01f, 6.59952827e-01f, 6.54699116e-01f, 6.48298688e-01f, - 6.40742160e-01f, 6.32023668e-01f, 6.22141039e-01f, 6.11095903e-01f, 5.98893921e-01f, 5.85544600e-01f, - 5.71061707e-01f, 5.55463040e-01f, 5.38770639e-01f, 5.21010762e-01f, 5.02213839e-01f, 4.82414572e-01f, - 4.61651859e-01f, 4.39968628e-01f, 4.17412000e-01f, 3.94032951e-01f, 3.69886464e-01f, 3.45031084e-01f, - 3.19529091e-01f, 2.93446187e-01f, 2.66851164e-01f, 2.39815999e-01f, 2.12415399e-01f, 1.84726660e-01f, - 1.56829293e-01f, 1.28804933e-01f, 1.00736965e-01f, 7.27100355e-02f, 4.48100810e-02f, 1.71237415e-02f, - -1.02620228e-02f, -3.72599591e-02f, -6.37832871e-02f, -8.97457733e-02f, -1.15062201e-01f, -1.39648782e-01f, - -1.63423488e-01f, -1.86306368e-01f, -2.08220103e-01f, -2.29090072e-01f, -2.48845046e-01f, -2.67417270e-01f, - -2.84742946e-01f, -3.00762597e-01f, -3.15421127e-01f, -3.28668542e-01f, -3.40459849e-01f, -3.50755400e-01f, - -3.59521402e-01f, -3.66729768e-01f, -3.72358475e-01f, -3.76391839e-01f, -3.78820421e-01f, -3.79641287e-01f, - -3.78858203e-01f, -3.76481336e-01f, -3.72527677e-01f, -3.67020780e-01f, -3.59990760e-01f, -3.51474372e-01f, - -3.41514630e-01f, -3.30160971e-01f, -3.17468898e-01f, -3.03499788e-01f, -2.88320749e-01f, -2.72004315e-01f, - -2.54628056e-01f, -2.36274454e-01f, -2.17030464e-01f, -1.96986952e-01f, -1.76238733e-01f, -1.54883647e-01f, - -1.33022496e-01f, -1.10758449e-01f, -8.81964466e-02f, -6.54430504e-02f, -4.26055475e-02f, -1.97916415e-02f, - 2.89108184e-03f, 2.53355868e-02f, 4.74362201e-02f, 6.90887518e-02f, 9.01914308e-02f, 1.10644978e-01f, - 1.30353494e-01f, 1.49224772e-01f, 1.67170735e-01f, 1.84107975e-01f, 1.99958067e-01f, 2.14648181e-01f, - 2.28111323e-01f, 2.40286622e-01f, 2.51119890e-01f, 2.60563701e-01f, 2.68577740e-01f, 2.75129027e-01f, - 2.80192144e-01f, 2.83749177e-01f, 2.85790223e-01f, 2.86312986e-01f, 2.85323221e-01f, 2.82834421e-01f, - 2.78867915e-01f, 2.73452721e-01f, 2.66625431e-01f, 2.58429983e-01f, 2.48917457e-01f, 2.38145826e-01f, - 2.26179680e-01f, 2.13089734e-01f, 1.98952740e-01f, 1.83850758e-01f, 1.67870897e-01f, 1.51104879e-01f, - 1.33648388e-01f, 1.15600665e-01f, 9.70639763e-02f, 7.81429119e-02f, 5.89439889e-02f, 3.95749746e-02f, - 2.01442353e-02f, 7.60241152e-04f, -1.84690990e-02f, -3.74370397e-02f, -5.60385970e-02f, -7.41711039e-02f, - -9.17348686e-02f, -1.08633632e-01f, -1.24775254e-01f, -1.40071993e-01f, -1.54441372e-01f, -1.67806284e-01f, - -1.80095654e-01f, -1.91244732e-01f, -2.01195605e-01f, -2.09897310e-01f, -2.17306320e-01f, -2.23386736e-01f, - -2.28110407e-01f, -2.31457193e-01f, -2.33415044e-01f, -2.33980051e-01f, -2.33156463e-01f, -2.30956673e-01f, - -2.27401097e-01f, -2.22518148e-01f, -2.16343899e-01f, -2.08921985e-01f, -2.00303365e-01f, -1.90545790e-01f, - -1.79713804e-01f, -1.67877977e-01f, -1.55114789e-01f, -1.41505907e-01f, -1.27137921e-01f, -1.12101628e-01f, - -9.64915640e-02f, -8.04054232e-02f, -6.39434707e-02f, -4.72078814e-02f, -3.03021635e-02f, -1.33305082e-02f, - 3.60284977e-03f, 2.03942507e-02f, 3.69413014e-02f, 5.31433810e-02f, 6.89024656e-02f, 8.41234679e-02f, - 9.87150268e-02f, 1.12589969e-01f, 1.25665865e-01f, 1.37865538e-01f, 1.49117506e-01f, 1.59356490e-01f, - 1.68523664e-01f, 1.76567229e-01f, 1.83442499e-01f, 1.89112308e-01f, 1.93547212e-01f, 1.96725586e-01f, - 1.98633878e-01f, 1.99266486e-01f, 1.98625999e-01f, 1.96723008e-01f, 1.93576075e-01f, 1.89211557e-01f, - 1.83663562e-01f, 1.76973516e-01f, 1.69190033e-01f, 1.60368490e-01f, 1.50570805e-01f, 1.39864815e-01f, - 1.28324021e-01f, 1.16026978e-01f, 1.03056879e-01f, 8.95008829e-02f, 7.54496798e-02f, 6.09968238e-02f, - 4.62380664e-02f, 3.12708901e-02f, 1.61936956e-02f, 1.10531988e-03f, -1.38957653e-02f, -2.87119784e-02f, - -4.32472742e-02f, -5.74078385e-02f, -7.11026311e-02f, -8.42439713e-02f, -9.67481917e-02f, -1.08536049e-01f, - -1.19533350e-01f, -1.29671345e-01f, -1.38887238e-01f, -1.47124498e-01f, -1.54333373e-01f, -1.60470968e-01f, - -1.65501755e-01f, -1.69397631e-01f, -1.72138140e-01f, -1.73710602e-01f, -1.74110159e-01f, -1.73339798e-01f, - -1.71410274e-01f, -1.68340111e-01f, -1.64155335e-01f, -1.58889414e-01f, -1.52582850e-01f, -1.45283122e-01f, - -1.37044042e-01f, -1.27925722e-01f, -1.17993860e-01f, -1.07319421e-01f, -9.59781808e-02f, -8.40500777e-02f, - -7.16188049e-02f, -5.87710561e-02f, -4.55961475e-02f, -3.21851919e-02f, -1.86306406e-02f, -5.02554942e-03f, - 8.53698384e-03f, 2.19645467e-02f, 3.51659468e-02f, 4.80518693e-02f, 6.05355056e-02f, 7.25330700e-02f, - 8.39645094e-02f, 9.47537898e-02f, 1.04829753e-01f, 1.14126254e-01f, 1.22582788e-01f, 1.30144907e-01f, - 1.36764459e-01f, 1.42400029e-01f, 1.47017076e-01f, 1.50588312e-01f, 1.53093700e-01f, 1.54520736e-01f, - 1.54864367e-01f, 1.54127119e-01f, 1.52318991e-01f, 1.49457408e-01f, 1.45567062e-01f, 1.40679709e-01f, - 1.34833933e-01f, 1.28074855e-01f, 1.20453893e-01f, 1.12028129e-01f, 1.02860307e-01f, 9.30178765e-02f, - 8.25730032e-02f, 7.16016450e-02f, 6.01833134e-02f, 4.84002546e-02f, 3.63370724e-02f, 2.40800037e-02f, - 1.17163168e-02f, -6.66217400e-04f, -1.29801121e-02f, -2.51385315e-02f, -3.70562030e-02f, -4.86497748e-02f, - -5.98384928e-02f, -7.05447859e-02f, -8.06947592e-02f, -9.02187441e-02f, -9.90517313e-02f, -1.07133911e-01f, - -1.14410951e-01f, -1.20834483e-01f, -1.26362422e-01f, -1.30959116e-01f, -1.34595787e-01f, -1.37250547e-01f, - -1.38908600e-01f, -1.39562374e-01f, -1.39211442e-01f, -1.37862602e-01f, -1.35529795e-01f, -1.32233909e-01f, - -1.28002721e-01f, -1.22870611e-01f, -1.16878278e-01f, -1.10072477e-01f, -1.02505698e-01f, -9.42356124e-02f, - -8.53248753e-02f, -7.58404912e-02f, -6.58532924e-02f, -5.54376360e-02f, -4.46705953e-02f, -3.36315414e-02f, - -2.24015972e-02f, -1.10628991e-02f, 3.01894735e-04f, 1.16101918e-02f, 2.27801642e-02f, 3.37311642e-02f, - 4.43845430e-02f, 5.46640016e-02f, 6.44962637e-02f, 7.38115400e-02f, 8.25440784e-02f, 9.06325572e-02f, - 9.80206066e-02f, 1.04657146e-01f, 1.10496723e-01f, 1.15499920e-01f, 1.19633523e-01f, 1.22870824e-01f, - 1.25191729e-01f, 1.26582959e-01f, 1.27038061e-01f, 1.26557494e-01f, 1.25148528e-01f, 1.22825305e-01f, - 1.19608512e-01f, 1.15525479e-01f, 1.10609643e-01f, 1.04900592e-01f, 9.84435537e-02f, 9.12890948e-02f, - 8.34927732e-02f, 7.51146973e-02f, 6.62190194e-02f, 5.68735547e-02f, 4.71491262e-02f, 3.71191855e-02f, - 2.68591932e-02f, 1.64459573e-02f, 5.95731808e-03f, -4.52874940e-03f, -1.49344723e-02f, -2.51829130e-02f, - -3.51986373e-02f, -4.49081427e-02f, -5.42404654e-02f, -6.31276969e-02f, -7.15054163e-02f, -7.93132713e-02f, - -8.64953327e-02f, -9.30005042e-02f, -9.87829011e-02f, -1.03802223e-01f, -1.08023943e-01f, -1.11419636e-01f, - -1.13967111e-01f, -1.15650603e-01f, -1.16460855e-01f, -1.16395152e-01f, -1.15457368e-01f, -1.13657871e-01f, - -1.11013433e-01f, -1.07547117e-01f, -1.03288073e-01f, -9.82712708e-02f, -9.25372646e-02f, -8.61318657e-02f, - -7.91057486e-02f, -7.15141053e-02f, -6.34161588e-02f, -5.48747791e-02f, -4.59559696e-02f, -3.67282941e-02f, - -2.72624874e-02f, -1.76307914e-02f, -7.90648674e-03f, 1.83670340e-03f, 1.15251424e-02f, 2.10858716e-02f, - 3.04471304e-02f, 3.95388944e-02f, 4.82933904e-02f, 5.66456655e-02f, 6.45340054e-02f, 7.19003487e-02f, - 7.86908695e-02f, 8.48562395e-02f, 9.03519908e-02f, 9.51389501e-02f, 9.91834077e-02f, 1.02457361e-01f, - 1.04938834e-01f, 1.06611872e-01f, 1.07466724e-01f, 1.07499917e-01f, 1.06714213e-01f, 1.05118588e-01f, - 1.02728167e-01f, 9.95640680e-02f, 9.56532488e-02f, 9.10282406e-02f, 8.57269309e-02f, 7.97922261e-02f, - 7.32717395e-02f, 6.62174249e-02f, 5.86850536e-02f, 5.07339959e-02f, 4.24265058e-02f, 3.38274345e-02f, - 2.50036502e-02f, 1.60234844e-02f, 6.95628026e-03f, -2.12820655e-03f, -1.11602438e-02f, -2.00708281e-02f, - -2.87920337e-02f, -3.72576320e-02f, -4.54035426e-02f, -5.31684173e-02f, -6.04938939e-02f, -6.73253212e-02f, - -7.36119310e-02f, -7.93072981e-02f, -8.43697556e-02f, -8.87625537e-02f, -9.24542939e-02f, -9.54189981e-02f, - -9.76364402e-02f, -9.90921435e-02f, -9.97776003e-02f, -9.96902366e-02f, -9.88334463e-02f, -9.72165780e-02f, - -9.48547668e-02f, -9.17688999e-02f, -8.79853312e-02f, -8.35357688e-02f, -7.84569594e-02f, -7.27903677e-02f, - -6.65818940e-02f, -5.98814932e-02f, -5.27427333e-02f, -4.52224733e-02f, -3.73802459e-02f, -2.92780037e-02f, - -2.09794209e-02f, -1.25495498e-02f, -4.05425988e-03f, 4.44034349e-03f, 1.28682571e-02f, 2.11643361e-02f, - 2.92645357e-02f, 3.71066200e-02f, 4.46305203e-02f, 5.17788267e-02f, 5.84972389e-02f, 6.47349496e-02f, - 7.04450836e-02f, 7.55849928e-02f, 8.01165748e-02f, 8.40066506e-02f, 8.72270848e-02f, 8.97550618e-02f, - 9.15732179e-02f, 9.26698315e-02f, 9.30387881e-02f, 9.26796720e-02f, 9.15978025e-02f, 8.98040443e-02f, - 8.73148489e-02f, 8.41520461e-02f, 8.03426093e-02f, 7.59185468e-02f, 7.09165136e-02f, 6.53776255e-02f, - 5.93470480e-02f, 5.28736293e-02f, 4.60095655e-02f, 3.88099545e-02f, 3.13323302e-02f, 2.36362162e-02f, - 1.57827398e-02f, 7.83395091e-03f, -1.47413782e-04f, -8.09864153e-03f, -1.59574406e-02f, -2.36623595e-02f, - -3.11534717e-02f, -3.83725840e-02f, -4.52638947e-02f, -5.17743411e-02f, -5.78539729e-02f, -6.34564348e-02f, - -6.85392092e-02f, -7.30640654e-02f, -7.69971954e-02f, -8.03096220e-02f, -8.29772975e-02f, -8.49813524e-02f, - -8.63081836e-02f, -8.69495746e-02f, -8.69027157e-02f, -8.61702687e-02f, -8.47602668e-02f, -8.26860569e-02f, - -7.99661981e-02f, -7.66242997e-02f, -7.26887788e-02f, -6.81926752e-02f, -6.31733712e-02f, -5.76722279e-02f, - -5.17343061e-02f, -4.54080069e-02f, -3.87446321e-02f, -3.17980032e-02f, -2.46239897e-02f, -1.72801497e-02f, - -9.82518156e-03f, -2.31845300e-03f, 5.18037510e-03f, 1.26119044e-02f, 1.99174857e-02f, 2.70395921e-02f, - 3.39223499e-02f, 4.05119404e-02f, 4.67570465e-02f, 5.26092142e-02f, 5.80232695e-02f, 6.29576539e-02f, - 6.73747113e-02f, 7.12410320e-02f, 7.45276905e-02f, 7.72104218e-02f, 7.92698394e-02f, 8.06915952e-02f, - 8.14664004e-02f, 8.15901977e-02f, 8.10640907e-02f, 7.98943315e-02f, 7.80922975e-02f, 7.56743792e-02f, - 7.26617861e-02f, 6.90804346e-02f, 6.49606433e-02f, 6.03370049e-02f, 5.52479503e-02f, 4.97355660e-02f, - 4.38451300e-02f, 3.76248662e-02f, 3.11254263e-02f, 2.43995757e-02f, 1.75017105e-02f, 1.04874823e-02f, - 3.41321948e-03f, -3.66433362e-03f, -1.06886566e-02f, -1.76037566e-02f, -2.43547422e-02f, -3.08881238e-02f, - -3.71523818e-02f, -4.30982377e-02f, -4.86791529e-02f, -5.38515978e-02f, -5.85754991e-02f, -6.28144137e-02f, - -6.65359631e-02f, -6.97119559e-02f, -7.23186409e-02f, -7.43369897e-02f, -7.57526047e-02f, -7.65560812e-02f, - -7.67428560e-02f, -7.63134051e-02f, -7.52730583e-02f, -7.36321241e-02f, -7.14055927e-02f, -6.86132027e-02f, - -6.52791213e-02f, -6.14318004e-02f, -5.71037475e-02f, -5.23312158e-02f, -4.71539306e-02f, -4.16147519e-02f, - -3.57593331e-02f, -2.96357023e-02f, -2.32939478e-02f, -1.67857228e-02f, -1.01639251e-02f, -3.48213128e-03f, - 3.20566951e-03f, 9.84566549e-03f, 1.63845318e-02f, 2.27699627e-02f, 2.89509937e-02f, 3.48784838e-02f, - 4.05054571e-02f, 4.57875191e-02f, 5.06831561e-02f, 5.51541055e-02f, 5.91656321e-02f, 6.26867948e-02f, - 6.56907214e-02f, 6.81547545e-02f, 7.00607045e-02f, 7.13948753e-02f, 7.21482790e-02f, 7.23165894e-02f, - 7.19002973e-02f, 7.09044846e-02f, 6.93390331e-02f, 6.72183039e-02f, 6.45611568e-02f, 6.13906537e-02f, - 5.77340810e-02f, 5.36223917e-02f, 4.90902973e-02f, 4.41756853e-02f, 3.89195025e-02f, 3.33653266e-02f, - 2.75589553e-02f, 2.15482187e-02f, 1.53823433e-02f, 9.11173206e-03f, 2.78750380e-03f, -3.53899736e-03f, - -9.81648845e-03f, -1.59942887e-02f, -2.20226002e-02f, -2.78530676e-02f, -3.34389835e-02f, -3.87358558e-02f, - -4.37015752e-02f, -4.82968641e-02f, -5.24856104e-02f, -5.62350079e-02f, -5.95160314e-02f, -6.23034090e-02f, - -6.45760369e-02f, -6.63170246e-02f, -6.75138263e-02f, -6.81583864e-02f, -6.82471093e-02f, -6.77809819e-02f, - -6.67654439e-02f, -6.52104027e-02f, -6.31301405e-02f, -6.05431381e-02f, -5.74719510e-02f, -5.39430121e-02f, - -4.99864152e-02f, -4.56356108e-02f, -4.09271785e-02f, -3.59005358e-02f, -3.05975021e-02f, -2.50620982e-02f, - -1.93400931e-02f, -1.34786109e-02f, -7.52582921e-03f, -1.53047296e-03f, 4.45846396e-03f, 1.03922252e-02f, - 1.62226043e-02f, 2.19024111e-02f, 2.73857927e-02f, 3.26286453e-02f, 3.75889120e-02f, 4.22270162e-02f, - 4.65060678e-02f, 5.03922602e-02f, 5.38550360e-02f, 5.68673912e-02f, 5.94061299e-02f, 6.14518959e-02f, - 6.29894927e-02f, 6.40078422e-02f, 6.45002081e-02f, 6.44641312e-02f, 6.39014463e-02f, 6.28183549e-02f, - 6.12252434e-02f, 5.91366226e-02f, 5.65710713e-02f, 5.35509478e-02f, 5.01023211e-02f, 4.62546289e-02f, - 4.20405644e-02f, 3.74956324e-02f, 3.26580309e-02f, 2.75681921e-02f, 2.22685138e-02f, 1.68029869e-02f, - 1.12168479e-02f, 5.55616360e-03f, -1.32475496e-04f, -5.80242145e-03f, -1.14072870e-02f, -1.69013632e-02f, - -2.22399629e-02f, -2.73798231e-02f, -3.22793559e-02f, -3.68992177e-02f, -4.12022700e-02f, -4.51542301e-02f, - -4.87237130e-02f, -5.18825743e-02f, -5.46061242e-02f, -5.68733215e-02f, -5.86668721e-02f, -5.99735198e-02f, - -6.07838952e-02f, -6.10928895e-02f, -6.08993923e-02f, -6.02064781e-02f, -5.90213291e-02f, -5.73550887e-02f, - -5.52228853e-02f, -5.26435817e-02f, -4.96396897e-02f, -4.62371294e-02f, -4.24650256e-02f, -3.83554628e-02f, - -3.39432096e-02f, -2.92654225e-02f, -2.43613233e-02f, -1.92718970e-02f, -1.40395616e-02f, -8.70771728e-03f, - -3.32056777e-03f, 2.07744785e-03f, 7.44190391e-03f, 1.27287222e-02f, 1.78946228e-02f, 2.28975002e-02f, - 2.76965843e-02f, 3.22530140e-02f, 3.65299534e-02f, 4.04930363e-02f, 4.41105069e-02f, 4.73536159e-02f, - 5.01967201e-02f, 5.26175750e-02f, 5.45974724e-02f, 5.61213729e-02f, 5.71780843e-02f, 5.77601946e-02f, - 5.78643759e-02f, 5.74910914e-02f, 5.66448597e-02f, 5.53340158e-02f, 5.35707338e-02f, 5.13708843e-02f, - 4.87538683e-02f, 4.57425137e-02f, 4.23627999e-02f, 3.86437075e-02f, 3.46169024e-02f, 3.03165387e-02f, - 2.57788894e-02f, 2.10421222e-02f, 1.61459251e-02f, 1.11311994e-02f, 6.03970466e-03f, 9.13695817e-04f, - -4.20433431e-03f, -9.27218149e-03f, -1.42480682e-02f, -1.90911878e-02f, -2.37618648e-02f, -2.82220093e-02f, - -3.24353766e-02f, -3.63678336e-02f, -3.99876924e-02f, -4.32659237e-02f, -4.61764207e-02f, -4.86961602e-02f, - -5.08054551e-02f, -5.24880386e-02f, -5.37312181e-02f, -5.45260166e-02f, -5.48671104e-02f, -5.47530531e-02f, - -5.41860463e-02f, -5.31721475e-02f, -5.17210363e-02f, -4.98459868e-02f, -4.75637647e-02f, -4.48944406e-02f, - -4.18612746e-02f, -3.84904206e-02f, -3.48107925e-02f, -3.08537797e-02f, -2.66529685e-02f, -2.22438695e-02f, - -1.76636682e-02f, -1.29507560e-02f, -8.14466071e-03f, -3.28544776e-03f, 1.58643018e-03f, 6.43050440e-03f, - 1.12067405e-02f, 1.58756642e-02f, 2.03989020e-02f, 2.47393345e-02f, 2.88614617e-02f, 3.27317634e-02f, - 3.63187992e-02f, 3.95936470e-02f, 4.25300387e-02f, 4.51045672e-02f, 4.72968940e-02f, 4.90899703e-02f, - 5.04700047e-02f, 5.14267809e-02f, 5.19535643e-02f, 5.20472034e-02f, 5.17082287e-02f, 5.09406434e-02f, - 4.97521048e-02f, 4.81537188e-02f, 4.61599131e-02f, 4.37884262e-02f, 4.10600706e-02f, 3.79985488e-02f, - 3.46302622e-02f, 3.09841217e-02f, 2.70912412e-02f, 2.29847199e-02f, 1.86992847e-02f, 1.42711599e-02f, - 9.73752669e-03f, 5.13643650e-03f, 5.06379454e-04f, -4.11408166e-03f, -8.68649476e-03f, -1.31729621e-02f, - -1.75363807e-02f, -2.17408089e-02f, -2.57516979e-02f, -2.95362143e-02f, -3.30635093e-02f, -3.63049622e-02f, - -3.92344048e-02f, -4.18283298e-02f, -4.40661418e-02f, -4.59301913e-02f, -4.74060505e-02f, -4.84825511e-02f, - -4.91518827e-02f, -4.94096235e-02f, -4.92548579e-02f, -4.86900251e-02f, -4.77210458e-02f, -4.63571741e-02f, - -4.46108878e-02f, -4.24979107e-02f, -4.00368564e-02f, -3.72492987e-02f, -3.41594108e-02f, -3.07938448e-02f, - -2.71814552e-02f, -2.33531198e-02f, -1.93413598e-02f, -1.51802063e-02f, -1.09048013e-02f, -6.55114338e-03f, - -2.15581014e-03f, 2.24443555e-03f, 6.61280814e-03f, 1.09129453e-02f, 1.51091980e-02f, 1.91667630e-02f, - 2.30522168e-02f, 2.67335907e-02f, 3.01807365e-02f, 3.33655579e-02f, 3.62622051e-02f, 3.88473226e-02f, - 4.11002204e-02f, 4.30030300e-02f, 4.45408790e-02f, 4.57019705e-02f, 4.64777109e-02f, 4.68627135e-02f, - 4.68549093e-02f, 4.64554958e-02f, 4.56689373e-02f, 4.45029599e-02f, 4.29683919e-02f, 4.10791386e-02f, - 3.88520159e-02f, 3.63066475e-02f, 3.34652385e-02f, 3.03523892e-02f, 2.69949681e-02f, 2.34217263e-02f, - 1.96632025e-02f, 1.57513974e-02f, 1.17194459e-02f, 7.60145677e-03f, 3.43215481e-03f, -7.53454950e-04f, - -4.92025229e-03f, -9.03345904e-03f, -1.30587503e-02f, -1.69627406e-02f, -2.07130441e-02f, -2.42787472e-02f, - -2.76304969e-02f, -3.07408842e-02f, -3.35845310e-02f, -3.61384026e-02f, -3.83819804e-02f, -4.02973364e-02f, - -4.18693911e-02f, -4.30859849e-02f, -4.39379525e-02f, -4.44192202e-02f, -4.45268207e-02f, -4.42609489e-02f, - -4.36249417e-02f, -4.26251693e-02f, -4.12710965e-02f, -3.95751119e-02f, -3.75524034e-02f, -3.52209020e-02f, - -3.26010732e-02f, -2.97156826e-02f, -2.65897306e-02f, -2.32501339e-02f, -1.97255230e-02f, -1.60459906e-02f, - -1.22428645e-02f, -8.34840613e-03f, -4.39555788e-03f, -4.17641093e-04f, 3.55186529e-03f, 7.47969548e-03f, - 1.13330289e-02f, 1.50796895e-02f, 1.86886063e-02f, 2.21298440e-02f, 2.53750227e-02f, 2.83974776e-02f, - 3.11724713e-02f, 3.36774564e-02f, 3.58921485e-02f, 3.77988281e-02f, 3.93823848e-02f, 4.06304645e-02f, - 4.15335460e-02f, 4.20850895e-02f, 4.22814530e-02f, 4.21220657e-02f, 4.16092724e-02f, 4.07484568e-02f, - 3.95478256e-02f, 3.80185099e-02f, 3.61742882e-02f, 3.40316228e-02f, 3.16093467e-02f, 2.89286854e-02f, - 2.60129143e-02f, 2.28872072e-02f, 1.95785162e-02f, 1.61151429e-02f, 1.25266872e-02f, 8.84367289e-03f, - 5.09737541e-03f, 1.31946573e-03f, -2.45819207e-03f, -6.20382907e-03f, -9.88599514e-03f, -1.34739714e-02f, - -1.69377975e-02f, -2.02487225e-02f, -2.33793144e-02f, -2.63038233e-02f, -2.89981802e-02f, -3.14404213e-02f, - -3.36107546e-02f, -3.54916723e-02f, -3.70682427e-02f, -3.83280672e-02f, -3.92614736e-02f, -3.98615776e-02f, - -4.01243243e-02f, -4.00484517e-02f, -3.96356708e-02f, -3.88903731e-02f, -3.78198781e-02f, -3.64341365e-02f, - -3.47457457e-02f, -3.27698392e-02f, -3.05238882e-02f, -2.80276282e-02f, -2.53028218e-02f, -2.23730957e-02f, - -1.92637467e-02f, -1.60015029e-02f, -1.26142882e-02f, -9.13104283e-03f, -5.58138981e-03f, -1.99542434e-03f, - 1.59649307e-03f, 5.16408174e-03f, 8.67737144e-03f, 1.21068581e-02f, 1.54239205e-02f, 1.86009100e-02f, - 2.16114772e-02f, 2.44306994e-02f, 2.70354163e-02f, 2.94042665e-02f, 3.15179985e-02f, 3.33595356e-02f, - 3.49141593e-02f, 3.61696229e-02f, 3.71161871e-02f, 3.77468512e-02f, 3.80571878e-02f, 3.80455485e-02f, - 3.77129900e-02f, 3.70632810e-02f, 3.61028508e-02f, 3.48407199e-02f, 3.32884428e-02f, 3.14600053e-02f, - 2.93716228e-02f, 2.70417408e-02f, 2.44907277e-02f, 2.17407576e-02f, 1.88156734e-02f, 1.57406803e-02f, - 1.25421761e-02f, 9.24754692e-03f, 5.88488640e-03f, 2.48280587e-03f, -9.29864758e-04f, -4.32426314e-03f, - -7.67179184e-03f, -1.09442952e-02f, -1.41143886e-02f, -1.71555974e-02f, -2.00425787e-02f, -2.27514891e-02f, - -2.52599054e-02f, -2.75472706e-02f, -2.95949315e-02f, -3.13863062e-02f, -3.29069832e-02f, -3.41450096e-02f, - -3.50907101e-02f, -3.57369992e-02f, -3.60793163e-02f, -3.61156751e-02f, -3.58467080e-02f, -3.52755740e-02f, - -3.44080617e-02f, -3.32523628e-02f, -3.18191314e-02f, -3.01213186e-02f, -2.81740846e-02f, -2.59946393e-02f, - -2.36021125e-02f, -2.10173975e-02f, -1.82629132e-02f, -1.53624700e-02f, -1.23410560e-02f, -9.22456599e-03f, - -6.03967755e-03f, -2.81350877e-03f, 4.26514319e-04f, 3.65292660e-03f, 6.83848944e-03f, 9.95638508e-03f, - 1.29804234e-02f, 1.58853076e-02f, 1.86468203e-02f, 2.12420277e-02f, 2.36494909e-02f, 2.58493792e-02f, - 2.78237450e-02f, 2.95565060e-02f, 3.10338053e-02f, 3.22438572e-02f, 3.31772716e-02f, 3.38269627e-02f, - 3.41883176e-02f, 3.42591610e-02f, 3.40397435e-02f, 3.35328606e-02f, 3.27436351e-02f, 3.16796573e-02f, - 3.03507246e-02f, 2.87689689e-02f, 2.69484839e-02f, 2.49054827e-02f, 2.26579086e-02f, 2.02254442e-02f, - 1.76292617e-02f, 1.48918382e-02f, 1.20368159e-02f, 9.08872468e-03f, 6.07283273e-03f, 3.01489838e-03f, - -5.90212194e-05f, -3.12287666e-03f, -6.15069532e-03f, -9.11695091e-03f, -1.19967033e-02f, -1.47657868e-02f, - -1.74011004e-02f, -1.98807214e-02f, -2.21841025e-02f, -2.42922632e-02f, -2.61879368e-02f, -2.78557311e-02f, - -2.92821801e-02f, -3.04559562e-02f, -3.13678907e-02f, -3.20110632e-02f, -3.23808087e-02f, -3.24749193e-02f, - -3.22933847e-02f, -3.18386269e-02f, -3.11153366e-02f, -3.01304804e-02f, -2.88932552e-02f, -2.74148734e-02f, - -2.57086673e-02f, -2.37898314e-02f, -2.16752343e-02f, -1.93835013e-02f, -1.69345799e-02f, -1.43497284e-02f, - -1.16513243e-02f, -8.86259097e-03f, -6.00748525e-03f, -3.11044903e-03f, -1.96143386e-04f, 2.71056658e-03f, - 5.58512222e-03f, 8.40318833e-03f, 1.11410160e-02f, 1.37756382e-02f, 1.62850338e-02f, 1.86482666e-02f, - 2.08457445e-02f, 2.28593437e-02f, 2.46725329e-02f, 2.62705694e-02f, 2.76405329e-02f, 2.87715470e-02f, - 2.96547092e-02f, 3.02833419e-02f, 3.06529059e-02f, 3.07610441e-02f, 3.06076742e-02f, 3.01949567e-02f, - 2.95271502e-02f, 2.86107876e-02f, 2.74543883e-02f, 2.60685701e-02f, 2.44657863e-02f, 2.26603655e-02f, - 2.06682557e-02f, 1.85070033e-02f, 1.61954603e-02f, 1.37537720e-02f, 1.12030588e-02f, 8.56537064e-03f, - 5.86336215e-03f, 3.12021752e-03f, 3.59345288e-04f, -2.39571357e-03f, -5.12158252e-03f, -7.79518527e-03f, - -1.03939536e-02f, -1.28961026e-02f, -1.52805838e-02f, -1.75275761e-02f, -1.96183935e-02f, -2.15357712e-02f, - -2.32639542e-02f, -2.47888545e-02f, -2.60981899e-02f, -2.71814567e-02f, -2.80302370e-02f, -2.86380088e-02f, - -2.90003996e-02f, -2.91151172e-02f, -2.89819544e-02f, -2.86028697e-02f, -2.79818317e-02f, -2.71249297e-02f, - -2.60401957e-02f, -2.47375751e-02f, -2.32288414e-02f, -2.15275091e-02f, -1.96486443e-02f, -1.76087964e-02f, - -1.54258426e-02f, -1.31187994e-02f, -1.07076937e-02f, -8.21335282e-03f, -5.65730582e-03f, -3.06143405e-03f, - -4.47990175e-04f, 2.16074548e-03f, 4.74260737e-03f, 7.27569124e-03f, 9.73864733e-03f, 1.21106824e-02f, - 1.43719841e-02f, 1.65036001e-02f, 1.84878471e-02f, 2.03083286e-02f, 2.19500531e-02f, 2.33996493e-02f, - 2.46453861e-02f, 2.56773512e-02f, 2.64874345e-02f, 2.70694463e-02f, 2.74192279e-02f, 2.75344951e-02f, - 2.74150667e-02f, 2.70627089e-02f, 2.64811913e-02f, 2.56761950e-02f, 2.46553112e-02f, 2.34279326e-02f, - 2.20051823e-02f, 2.03998041e-02f, 1.86260730e-02f, 1.66996483e-02f, 1.46373888e-02f, 1.24573628e-02f, - 1.01784699e-02f, 7.82046099e-03f, 5.40366356e-03f, 2.94886537e-03f, 4.77074685e-04f, -1.99056008e-03f, - -4.43309957e-03f, -6.82975366e-03f, -9.16032780e-03f, -1.14051392e-02f, -1.35453571e-02f, -1.55631186e-02f, - -1.74416221e-02f, -1.91653203e-02f, -2.07200521e-02f, -2.20931290e-02f, -2.32734389e-02f, -2.42515770e-02f, - -2.50198790e-02f, -2.55724740e-02f, -2.59053977e-02f, -2.60165073e-02f, -2.59056121e-02f, -2.55744100e-02f, - -2.50263861e-02f, -2.42670139e-02f, -2.33034172e-02f, -2.21444752e-02f, -2.08007704e-02f, -1.92843016e-02f, - -1.76086143e-02f, -1.57885066e-02f, -1.38399632e-02f, -1.17800468e-02f, -9.62665505e-03f, -7.39846180e-03f, - -5.11473979e-03f, -2.79509520e-03f, -4.59475153e-04f, 1.87219411e-03f, 4.18004886e-03f, 6.44446028e-03f, - 8.64630036e-03f, 1.07670050e-02f, 1.27887263e-02f, 1.46946183e-02f, 1.64687696e-02f, 1.80965074e-02f, - 1.95644657e-02f, 2.08606409e-02f, 2.19745569e-02f, 2.28973400e-02f, 2.36217678e-02f, 2.41423032e-02f, - 2.44552329e-02f, 2.45585559e-02f, 2.44521268e-02f, 2.41375247e-02f, 2.36181843e-02f, 2.28991883e-02f, - 2.19873596e-02f, 2.08911372e-02f, 1.96204854e-02f, 1.81868423e-02f, 1.66029686e-02f, 1.48829260e-02f, - 1.30418196e-02f, 1.10957823e-02f, 9.06176569e-03f, 6.95742371e-03f, 4.80095797e-03f, 2.61094572e-03f, - 4.06163422e-04f, -1.79448120e-03f, -3.97227507e-03f, -6.10867089e-03f, -8.18559133e-03f, -1.01855447e-02f, - -1.20916775e-02f, -1.38880736e-02f, -1.55597947e-02f, -1.70929424e-02f, -1.84749792e-02f, -1.96945768e-02f, - -2.07419008e-02f, -2.16086011e-02f, -2.22879060e-02f, -2.27746496e-02f, -2.30653527e-02f, -2.31582122e-02f, - -2.30530853e-02f, -2.27516002e-02f, -2.22569518e-02f, -2.15740851e-02f, -2.07094459e-02f, -1.96710504e-02f, - -1.84683607e-02f, -1.71122258e-02f, -1.56147530e-02f, -1.39891960e-02f, -1.22499260e-02f, -1.04121226e-02f, - -8.49187069e-03f, -6.50583812e-03f, -4.47121574e-03f, -2.40553061e-03f, -3.26560349e-04f, 1.74792849e-03f, - 3.80020986e-03f, 5.81284812e-03f, 7.76878436e-03f, 9.65152189e-03f, 1.14452321e-02f, 1.31348903e-02f, - 1.47064602e-02f, 1.61469015e-02f, 1.74443880e-02f, 1.85883329e-02f, 1.95694960e-02f, 2.03800747e-02f, - 2.10137416e-02f, 2.14657028e-02f, 2.17327470e-02f, 2.18132189e-02f, 2.17071096e-02f, 2.14159688e-02f, - 2.09429396e-02f, 2.02927056e-02f, 1.94714591e-02f, 1.84867806e-02f, 1.73476996e-02f, 1.60644888e-02f, - 1.46486021e-02f, 1.31126305e-02f, 1.14700918e-02f, 9.73543186e-03f, 7.92379251e-03f, 6.05090462e-03f, - 4.13301608e-03f, 2.18669055e-03f, 2.28581333e-04f, -1.72441072e-03f, -3.65572200e-03f, -5.54887990e-03f, - -7.38782061e-03f, -9.15706782e-03f, -1.08417082e-02f, -1.24276657e-02f, -1.39017311e-02f, -1.52516970e-02f, - -1.64664949e-02f, -1.75361817e-02f, -1.84521823e-02f, -1.92071599e-02f, -1.97953056e-02f, -2.02121243e-02f, - -2.04547147e-02f, -2.05216098e-02f, -2.04128534e-02f, -2.01300439e-02f, -1.96761990e-02f, -1.90558123e-02f, - -1.82748056e-02f, -1.73404276e-02f, -1.62612067e-02f, -1.50469098e-02f, -1.37084115e-02f, -1.22575769e-02f, - -1.07072432e-02f, -9.07102930e-03f, -7.36320826e-03f, -5.59869147e-03f, -3.79270806e-03f, -1.96092013e-03f, - -1.19027325e-04f, 1.71713152e-03f, 3.53191747e-03f, 5.30986343e-03f, 7.03590331e-03f, 8.69547560e-03f, - 1.02746006e-02f, 1.17601122e-02f, 1.31396009e-02f, 1.44016653e-02f, 1.55359973e-02f, 1.65332483e-02f, - 1.73855033e-02f, 1.80859434e-02f, 1.86291305e-02f, 1.90110277e-02f, 1.92289384e-02f, 1.92815880e-02f, - 1.91691688e-02f, 1.88932135e-02f, 1.84567183e-02f, 1.78639790e-02f, 1.71206377e-02f, 1.62336473e-02f, - 1.52110920e-02f, 1.40622274e-02f, 1.27973510e-02f, 1.14277163e-02f, 9.96541843e-03f, 8.42333112e-03f, - 6.81491991e-03f, 5.15420944e-03f, 3.45559138e-03f, 1.73374462e-03f, 3.49154958e-06f, -1.72033182e-03f, - -3.42300908e-03f, -5.09002877e-03f, -6.70728983e-03f, -8.26110592e-03f, -9.73843101e-03f, -1.11269177e-02f, - -1.24149972e-02f, -1.35920411e-02f, -1.46483675e-02f, -1.55754162e-02f, -1.63657097e-02f, -1.70130158e-02f, - -1.75123254e-02f, -1.78599156e-02f, -1.80533642e-02f, -1.80916471e-02f, -1.79749596e-02f, -1.77049199e-02f, - -1.72844059e-02f, -1.67175734e-02f, -1.60098348e-02f, -1.51677846e-02f, -1.41991369e-02f, -1.31126308e-02f, - -1.19180614e-02f, -1.06260158e-02f, -9.24795820e-03f, -7.79599691e-03f, -6.28282689e-03f, -4.72166017e-03f, - -3.12602130e-03f, -1.50971188e-03f, 1.13358008e-04f, 1.72924640e-03f, 3.32419869e-03f, 4.88457483e-03f, - 6.39719332e-03f, 7.84928507e-03f, 9.22860374e-03f, 1.05236737e-02f, 1.17237027e-02f, 1.28187631e-02f, - 1.37999219e-02f, 1.46591627e-02f, 1.53896448e-02f, 1.59855771e-02f, 1.64423748e-02f, 1.67566705e-02f, - 1.69263151e-02f, 1.69504088e-02f, 1.68293192e-02f, 1.65646048e-02f, 1.61591292e-02f, 1.56168830e-02f, - 1.49430466e-02f, 1.41438870e-02f, 1.32267343e-02f, 1.21999194e-02f, 1.10726150e-02f, 9.85491162e-03f, - 8.55755480e-03f, 7.19198626e-03f, 5.77013714e-03f, 4.30443841e-03f, 2.80758857e-03f, 1.29252809e-03f, - -2.27683018e-04f, -1.74000213e-03f, -3.23153173e-03f, -4.68956247e-03f, -6.10171563e-03f, -7.45612506e-03f, - -8.74136426e-03f, -9.94672023e-03f, -1.10621909e-02f, -1.20785406e-02f, -1.29874795e-02f, -1.37816456e-02f, - -1.44546479e-02f, -1.50012468e-02f, -1.54172106e-02f, -1.56995155e-02f, -1.58462779e-02f, -1.58567437e-02f, - -1.57313825e-02f, -1.54717967e-02f, -1.50807184e-02f, -1.45620705e-02f, -1.39207297e-02f, -1.31627253e-02f, - -1.22950111e-02f, -1.13254027e-02f, -1.02626834e-02f, -9.11627932e-03f, -7.89634415e-03f, -6.61364765e-03f, - -5.27939952e-03f, -3.90525708e-03f, -2.50314317e-03f, -1.08517576e-03f, 3.36418391e-04f, 1.74945190e-03f, - 3.14186033e-03f, 4.50178261e-03f, 5.81769448e-03f, 7.07851939e-03f, 8.27365386e-03f, 9.39310326e-03f, - 1.04276320e-02f, 1.13686527e-02f, 1.22085379e-02f, 1.29404450e-02f, 1.35585678e-02f, 1.40580446e-02f, - 1.44350939e-02f, 1.46869568e-02f, 1.48120098e-02f, 1.48096348e-02f, 1.46804295e-02f, 1.44259781e-02f, - 1.40489668e-02f, 1.35531325e-02f, 1.29432014e-02f, 1.22248563e-02f, 1.14046959e-02f, 1.04901687e-02f, - 9.48948107e-03f, 8.41156632e-03f, 7.26596347e-03f, 6.06280447e-03f, 4.81257444e-03f, 3.52622627e-03f, - 2.21492506e-03f, 8.89983592e-04f, -4.37153812e-04f, -1.75513167e-03f, -3.05265494e-03f, -4.31872834e-03f, - -5.54261874e-03f, -6.71396264e-03f, -7.82302244e-03f, -8.86045250e-03f, -9.81773278e-03f, -1.06869351e-02f, - -1.14610023e-02f, -1.21336754e-02f, -1.26995953e-02f, -1.31543908e-02f, -1.34945718e-02f, -1.37177266e-02f, - -1.38224110e-02f, -1.38082286e-02f, -1.36757739e-02f, -1.34266887e-02f, -1.30635886e-02f, -1.25900369e-02f, - -1.20105709e-02f, -1.13305978e-02f, -1.05563538e-02f, -9.69485926e-03f, -8.75389081e-03f, -7.74181164e-03f, - -6.66761679e-03f, -5.54076187e-03f, -4.37111830e-03f, -3.16893052e-03f, -1.94457115e-03f, -7.08705149e-04f, - 5.28079290e-04f, 1.75515870e-03f, 2.96204304e-03f, 4.13848585e-03f, 5.27451557e-03f, 6.36060039e-03f, - 7.38755863e-03f, 8.34692530e-03f, 9.23070802e-03f, 1.00316534e-02f, 1.07432528e-02f, 1.13597680e-02f, - 1.18763350e-02f, 1.22889283e-02f, 1.25944631e-02f, 1.27907515e-02f, 1.28765994e-02f, 1.28517102e-02f, - 1.27167966e-02f, 1.24734480e-02f, 1.21242371e-02f, 1.16725839e-02f, 1.11228281e-02f, 1.04800592e-02f, - 9.75022575e-03f, 8.93990424e-03f, 8.05644990e-03f, 7.10768601e-03f, 6.10205625e-03f, 5.04843878e-03f, - 3.95605458e-03f, 2.83441418e-03f, 1.69331277e-03f, 5.42568186e-04f, -6.07877124e-04f, -1.74818575e-03f, - -2.86860405e-03f, -3.95962685e-03f, -5.01201657e-03f, -6.01690058e-03f, -6.96589716e-03f, -7.85110424e-03f, - -8.66518231e-03f, -9.40145619e-03f, -1.00540095e-02f, -1.06175123e-02f, -1.10876024e-02f, -1.14606062e-02f, - -1.17337519e-02f, -1.19051415e-02f, -1.19737311e-02f, -1.19393909e-02f, -1.18028751e-02f, -1.15657387e-02f, - -1.12305357e-02f, -1.08005049e-02f, -1.02797519e-02f, -9.67318729e-03f, -8.98632838e-03f, -8.22543877e-03f, - -7.39737215e-03f, -6.50950785e-03f, -5.56975395e-03f, -4.58632875e-03f, -3.56792674e-03f, -2.52340823e-03f, - -1.46183597e-03f, -3.92391156e-04f, 6.75701684e-04f, 1.73331709e-03f, 2.77141530e-03f, 3.78118353e-03f, - 4.75407672e-03f, 5.68193005e-03f, 6.55698994e-03f, 7.37195674e-03f, 8.12013345e-03f, 8.79539509e-03f, - 9.39225030e-03f, 9.90597190e-03f, 1.03324819e-02f, 1.06685242e-02f, 1.09116177e-02f, 1.10600973e-02f, - 1.11130936e-02f, 1.10705983e-02f, 1.09333788e-02f, 1.07030445e-02f, 1.03819949e-02f, 9.97335332e-03f, - 9.48107464e-03f, 8.90968434e-03f, 8.26449756e-03f, 7.55132972e-03f, 6.77664458e-03f, 5.94731079e-03f, - 5.07073939e-03f, 4.15462520e-03f, 3.20700306e-03f, 2.23616222e-03f, 1.25050340e-03f, 2.58592562e-04f, - -7.31105992e-04f, -1.71003848e-03f, -2.66991104e-03f, -3.60254805e-03f, -4.50009626e-03f, -5.35500152e-03f, - -6.16013372e-03f, -6.90880302e-03f, -7.59484887e-03f, -8.21267759e-03f, -8.75730297e-03f, -9.22437062e-03f, - -9.61022818e-03f, -9.91196266e-03f, -1.01273334e-02f, -1.02549146e-02f, -1.02939949e-02f, -1.02446487e-02f, - -1.01077102e-02f, -9.88473930e-03f, -9.57804506e-03f, -9.19065219e-03f, -8.72623997e-03f, -8.18914967e-03f, - -7.58431711e-03f, -6.91725624e-03f, -6.19393169e-03f, -5.42085678e-03f, -4.60486090e-03f, -3.75314479e-03f, - -2.87318400e-03f, -1.97263669e-03f, -1.05936420e-03f, -1.41184633e-04f, 7.73935206e-04f, 1.67818033e-03f, - 2.56387121e-03f, 3.42348245e-03f, 4.24972968e-03f, 5.03575853e-03f, 5.77493594e-03f, 6.46117800e-03f, - 7.08885263e-03f, 7.65282423e-03f, 8.14856911e-03f, 8.57214716e-03f, 8.92027019e-03f, 9.19029194e-03f, - 9.38027470e-03f, 9.48895025e-03f, 9.51578399e-03f, 9.46091429e-03f, 9.32518284e-03f, 9.11016180e-03f, - 8.81806173e-03f, 8.45171440e-03f, 8.01466407e-03f, 7.51094572e-03f, 6.94521826e-03f, 6.32261691e-03f, - 5.64875255e-03f, 4.92963671e-03f, 4.17165548e-03f, 3.38149573e-03f, 2.56610069e-03f, 1.73253154e-03f, - 8.88083719e-04f, 4.00140997e-05f, -8.04377007e-04f, -1.63786496e-03f, -2.45336348e-03f, -3.24394120e-03f, - -4.00297149e-03f, -4.72406012e-03f, -5.40122825e-03f, -6.02886353e-03f, -6.60184564e-03f, -7.11547043e-03f, - -7.56567204e-03f, -7.94886879e-03f, -8.26207948e-03f, -8.50298133e-03f, -8.66984745e-03f, -8.76158174e-03f, - -8.77778600e-03f, -8.71866903e-03f, -8.58510255e-03f, -8.37858953e-03f, -8.10125332e-03f, -7.75580633e-03f, - -7.34555568e-03f, -6.87431135e-03f, -6.34642360e-03f, -5.76669768e-03f, -5.14031767e-03f, -4.47294897e-03f, - -3.77043291e-03f, -3.03903272e-03f, -2.28511456e-03f, -1.51527024e-03f, -7.36178447e-04f, 4.54225562e-05f, - 8.22859022e-04f, 1.58943109e-03f, 2.33866278e-03f, 3.06420334e-03f, 3.75990680e-03f, 4.42002538e-03f, - 5.03901750e-03f, 5.61180111e-03f, 6.13366220e-03f, 6.60043272e-03f, 7.00831931e-03f, 7.35414500e-03f, - 7.63524392e-03f, 7.84953557e-03f, 7.99547645e-03f, 8.07218955e-03f, 8.07933095e-03f, 8.01721906e-03f, - 7.88666864e-03f, 7.68919343e-03f, 7.42679720e-03f, 7.10202788e-03f, 6.71802523e-03f, 6.27832934e-03f, - 5.78702253e-03f, 5.24853339e-03f, 4.66776048e-03f, 4.04985033e-03f, 3.40032055e-03f, 2.72486114e-03f, - 2.02943382e-03f, 1.32005555e-03f, 6.02922229e-04f, -1.15810889e-04f, -8.29962401e-04f, -1.53344695e-03f, - -2.22024937e-03f, -2.88460828e-03f, -3.52090915e-03f, -4.12386103e-03f, -4.68844782e-03f, -5.21000854e-03f, - -5.68433641e-03f, -6.10753890e-03f, -6.47629357e-03f, -6.78770430e-03f, -7.03936807e-03f, -7.22944790e-03f, - -7.35662441e-03f, -7.42012069e-03f, -7.41971164e-03f, -7.35573757e-03f, -7.22905724e-03f, -7.04107429e-03f, - -6.79370122e-03f, -6.48940038e-03f, -6.13102314e-03f, -5.72192873e-03f, -5.26590521e-03f, -4.76707464e-03f, - -4.22993214e-03f, -3.65930825e-03f, -3.06022345e-03f, -2.43797793e-03f, -1.79803310e-03f, -1.14594988e-03f, - -4.87389180e-04f, 1.71985886e-04f, 8.26505744e-04f, 1.47057292e-03f, 2.09875564e-03f, 2.70572827e-03f, - 3.28638788e-03f, 3.83592350e-03f, 4.34975506e-03f, 4.82368759e-03f, 5.25383132e-03f, 5.63677359e-03f, - 5.96942535e-03f, 6.24924092e-03f, 6.47405650e-03f, 6.64226721e-03f, 6.75269253e-03f, 6.80469430e-03f, - 6.79815717e-03f, 6.73340631e-03f, 6.61130455e-03f, 6.43322863e-03f, 6.20094526e-03f, 5.91677710e-03f, - 5.58340169e-03f, 5.20393196e-03f, 4.78187614e-03f, 4.32106320e-03f, 3.82565711e-03f, 3.30005613e-03f, - 2.74895362e-03f, 2.17719303e-03f, 1.58978015e-03f, 9.91844057e-04f, 3.88540330e-04f, -2.14916878e-04f, - -8.13361192e-04f, -1.40168257e-03f, -1.97489740e-03f, -2.52818059e-03f, -3.05688539e-03f, -3.55662656e-03f, - -4.02326574e-03f, -4.45296958e-03f, -4.84228652e-03f, -5.18803438e-03f, -5.48755315e-03f, -5.73848611e-03f, - -5.93891991e-03f, -6.08745626e-03f, -6.18305471e-03f, -6.22520840e-03f, -6.21382472e-03f, -6.14928419e-03f, - -6.03244633e-03f, -5.86455879e-03f, -5.64736180e-03f, -5.38296537e-03f, -5.07389363e-03f, -4.72301916e-03f, - -4.33361321e-03f, -3.90915761e-03f, -3.45353173e-03f, -2.97077347e-03f, -2.46516689e-03f, -1.94119584e-03f, - -1.40340595e-03f, -8.56512644e-04f, -3.05232133e-04f, 2.45691031e-04f, 7.91538060e-04f, 1.32763724e-03f, - 1.84949345e-03f, 2.35267547e-03f, 2.83299113e-03f, 3.28645035e-03f, 3.70931698e-03f, 4.09812665e-03f, - 4.44973511e-03f, 4.76135341e-03f, 5.03050354e-03f, 5.25513155e-03f, 5.43353323e-03f, 5.56447821e-03f, - 5.64705544e-03f, 5.68083601e-03f, 5.66583437e-03f, 5.60238431e-03f, 5.49135375e-03f, 5.33391723e-03f, - 5.13169207e-03f, 4.88664671e-03f, 4.60113202e-03f, 4.27780860e-03f, 3.91964875e-03f, 3.52989866e-03f, - 3.11212090e-03f, 2.66999053e-03f, 2.20744344e-03f, 1.72859110e-03f, 1.23756351e-03f, 7.38678150e-04f, - 2.36236760e-04f, -2.65462378e-04f, -7.62072815e-04f, -1.24943395e-03f, -1.72337956e-03f, -2.17993754e-03f, - -2.61530935e-03f, -3.02588421e-03f, -3.40825196e-03f, -3.75935360e-03f, -4.07630652e-03f, -4.35660760e-03f, - -4.59808398e-03f, -4.79883718e-03f, -4.95743843e-03f, -5.07271280e-03f, -5.14393833e-03f, -5.17077608e-03f, - -5.15318763e-03f, -5.09164480e-03f, -4.98686807e-03f, -4.84002285e-03f, -4.65260103e-03f, -4.42642977e-03f, - -4.16366446e-03f, -3.86678300e-03f, -3.53847751e-03f, -3.18177292e-03f, -2.79986847e-03f, -2.39618401e-03f, - -1.97429017e-03f, -1.53788782e-03f, -1.09083664e-03f, -6.36973406e-04f, -1.80264329e-04f, 2.75399352e-04f, - 7.26104424e-04f, 1.16802598e-03f, 1.59744046e-03f, 2.01073128e-03f, 2.40446819e-03f, 2.77538562e-03f, - 3.12044615e-03f, 3.43683203e-03f, 3.72202393e-03f, 3.97374850e-03f, 4.19002854e-03f, 4.36925418e-03f, - 4.51006070e-03f, 4.61152219e-03f, 4.67293053e-03f, 4.69404975e-03f, 4.67490366e-03f, 4.61589307e-03f, - 4.51775252e-03f, 4.38154991e-03f, 4.20868532e-03f, 4.00082377e-03f, 3.75997274e-03f, 3.48836415e-03f, - 3.18851504e-03f, 2.86314343e-03f, 2.51519536e-03f, 2.14776743e-03f, 1.76411750e-03f, 1.36763070e-03f, - 9.61751835e-04f, 5.50052405e-04f, 1.36015058e-04f, -2.76720943e-04f, -6.84698152e-04f, -1.08442387e-03f, - -1.47253691e-03f, -1.84578853e-03f, -2.20105818e-03f, -2.53544188e-03f, -2.84616998e-03f, -3.13076058e-03f, - -3.38689733e-03f, -3.61260297e-03f, -3.80606518e-03f, -3.96589267e-03f, -4.09087232e-03f, -4.18013173e-03f, - -4.23315965e-03f, -4.24970953e-03f, -4.22981560e-03f, -4.17392494e-03f, -4.08267808e-03f, -3.95709577e-03f, - -3.79845153e-03f, -3.60829670e-03f, -3.38844338e-03f, -3.14094669e-03f, -2.86809742e-03f, -2.57237442e-03f, - -2.25643831e-03f, -1.92312165e-03f, -1.57535841e-03f, -1.21624129e-03f, -8.48868370e-04f, -4.76457354e-04f, - -1.02227062e-04f, 2.70659894e-04f, 6.38948957e-04f, 9.99596773e-04f, 1.34950884e-03f, 1.68579412e-03f, - 2.00565112e-03f, 2.30644176e-03f, 2.58570970e-03f, 2.84121989e-03f, 3.07087670e-03f, 3.27296771e-03f, - 3.44584695e-03f, 3.58825627e-03f, 3.69915439e-03f, 3.77779535e-03f, 3.82369144e-03f, 3.83666312e-03f, - 3.81678507e-03f, 3.76444486e-03f, 3.68027755e-03f, 3.56519883e-03f, 3.42038694e-03f, 3.24725992e-03f, - 3.04745181e-03f, 2.82287635e-03f, 2.57555610e-03f, 2.30778342e-03f, 2.02193938e-03f, 1.72060684e-03f, - 1.40642226e-03f, 1.08218540e-03f, 7.50708128e-04f, 4.14852040e-04f, 7.75468400e-05f, -2.58336678e-04f, - -5.89954675e-04f, -9.14464553e-04f, -1.22917409e-03f, -1.53142096e-03f, -1.81874942e-03f, -2.08875765e-03f, - -2.33925204e-03f, -2.56824046e-03f, -2.77387464e-03f, -2.95457151e-03f, -3.10891286e-03f, -3.23576957e-03f, - -3.33422309e-03f, -3.40361730e-03f, -3.44352432e-03f, -3.45380945e-03f, -3.43454926e-03f, -3.38612359e-03f, - -3.30910238e-03f, -3.20434413e-03f, -3.07289782e-03f, -2.91605448e-03f, -2.73534798e-03f, -2.53242439e-03f, - -2.30918427e-03f, -2.06766744e-03f, -1.81002532e-03f, -1.53857461e-03f, -1.25572213e-03f, -9.63956082e-04f, - -6.65804929e-04f, -3.63875198e-04f, -6.07622519e-05f, 2.40955893e-04f, 5.38685581e-04f, 8.29936911e-04f, - 1.11224977e-03f, 1.38328230e-03f, 1.64080028e-03f, 1.88265574e-03f, 2.10694670e-03f, 2.31181334e-03f, - 2.49567938e-03f, 2.65707799e-03f, 2.79477329e-03f, 2.90778929e-03f, 2.99526804e-03f, 3.05666792e-03f, - 3.09159989e-03f, 3.09996074e-03f, 3.08183486e-03f, 3.03757314e-03f, 2.96768997e-03f, 2.87296391e-03f, - 2.75438271e-03f, 2.61305979e-03f, 2.45041225e-03f, 2.26792371e-03f, 2.06728115e-03f, 1.85034398e-03f, - 1.61901728e-03f, 1.37543970e-03f, 1.12168235e-03f, 8.60048928e-04f, 5.92781787e-04f, 3.22217129e-04f, - 5.06437951e-05f, -2.19547817e-04f, -4.86132510e-04f, -7.46817210e-04f, -9.99443627e-04f, -1.24188233e-03f, - -1.47217245e-03f, -1.68839648e-03f, -1.88883105e-03f, -2.07184785e-03f, -2.23601745e-03f, -2.38006048e-03f, - -2.50288118e-03f, -2.60358292e-03f, -2.68144174e-03f, -2.73595307e-03f, -2.76679595e-03f, -2.77388624e-03f, - -2.75729794e-03f, -2.71735188e-03f, -2.65451985e-03f, -2.56952130e-03f, -2.46319204e-03f, -2.33660956e-03f, - -2.19096493e-03f, -2.02765268e-03f, -1.84815939e-03f, -1.65412932e-03f, -1.44731483e-03f, -1.22956426e-03f, - -1.00280075e-03f, -7.69022668e-04f, -5.30268510e-04f, -2.88586883e-04f, -4.60956253e-05f, 1.95186584e-04f, - 4.33161045e-04f, 6.65873263e-04f, 8.91328897e-04f, 1.10770620e-03f, 1.31316296e-03f, 1.50610067e-03f, - 1.68489795e-03f, 1.84814923e-03f, 1.99458512e-03f, 2.12304250e-03f, 2.23258384e-03f, 2.32237953e-03f, - 2.39181962e-03f, 2.44043032e-03f, 2.46796938e-03f, 2.47430968e-03f, 2.45957831e-03f, 2.42401283e-03f, - 2.36808884e-03f, 2.29238471e-03f, 2.19773378e-03f, 2.08501666e-03f, 1.95534528e-03f, 1.80993801e-03f, - 1.65014053e-03f, 1.47739854e-03f, 1.29329221e-03f, 1.09944593e-03f, 8.97596290e-04f, 6.89486470e-04f, - 4.76967544e-04f, 2.61847472e-04f, 4.59979030e-05f, -1.68770369e-04f, -3.80612759e-04f, -5.87744421e-04f, - -7.88452414e-04f, -9.81081718e-04f, -1.16402219e-03f, -1.33580811e-03f, -1.49504859e-03f, -1.64047131e-03f, - -1.77095587e-03f, -1.88548340e-03f, -1.98318254e-03f, -2.06335667e-03f, -2.12544333e-03f, -2.16903096e-03f, - -2.19389731e-03f, -2.19994674e-03f, -2.18726700e-03f, -2.15609170e-03f, -2.10683457e-03f, -2.04002290e-03f, - -1.95633800e-03f, -1.85665258e-03f, -1.74189023e-03f, -1.61313165e-03f, -1.47159921e-03f, -1.31856217e-03f, - -1.15541374e-03f, -9.83590913e-04f, -8.04645529e-04f, -6.20138811e-04f, -4.31664744e-04f, -2.40859759e-04f, - -4.93718861e-05f, 1.41183920e-04f, 3.29184443e-04f, 5.13049545e-04f, 6.91252710e-04f, 8.62329668e-04f, - 1.02486089e-03f, 1.17753306e-03f, 1.31912530e-03f, 1.44851584e-03f, 1.56468190e-03f, 1.66675270e-03f, - 1.75393226e-03f, 1.82562545e-03f, 1.88129935e-03f, 1.92062935e-03f, 1.94336360e-03f, 1.94946381e-03f, - 1.93898469e-03f, 1.91211060e-03f, 1.86925265e-03f, 1.81081128e-03f, 1.73745800e-03f, 1.64989979e-03f, - 1.54896085e-03f, 1.43565148e-03f, 1.31095906e-03f, 1.17607031e-03f, 1.03219054e-03f, 8.80596006e-04f, - 7.22634695e-04f, 5.59715925e-04f, 3.93223384e-04f, 2.24602808e-04f, 5.53223372e-05f, -1.13204206e-04f, - -2.79527886e-04f, -4.42273875e-04f, -6.00090187e-04f, -7.51646708e-04f, -8.95738714e-04f, -1.03117771e-03f, - -1.15687770e-03f, -1.27187587e-03f, -1.37523688e-03f, -1.46618576e-03f, -1.54403989e-03f, -1.60825931e-03f, - -1.65836399e-03f, -1.69405240e-03f, -1.71514183e-03f, -1.72154028e-03f, -1.71331327e-03f, -1.69063272e-03f, - -1.65381037e-03f, -1.60326168e-03f, -1.53948863e-03f, -1.46318779e-03f, -1.37503217e-03f, -1.27591969e-03f, - -1.16672308e-03f, -1.04846883e-03f, -9.22232848e-04f, -7.89108246e-04f, -6.50329911e-04f, -5.07057241e-04f, - -3.60579584e-04f, -2.12138548e-04f, -6.30166060e-05f, 8.55107333e-05f, 2.32212191e-04f, 3.75851456e-04f, - 5.15213418e-04f, 6.49182851e-04f, 7.76642588e-04f, 8.96585347e-04f, 1.00803198e-03f, 1.11010987e-03f, - 1.20203475e-03f, 1.28308439e-03f, 1.35268783e-03f, 1.41030687e-03f, 1.45558664e-03f, 1.48819124e-03f, - 1.50798717e-03f, 1.51486502e-03f, 1.50888467e-03f, 1.49022209e-03f, 1.45906012e-03f, 1.41583581e-03f, - 1.36095722e-03f, 1.29499749e-03f, 1.21859138e-03f, 1.13249419e-03f, 1.03745344e-03f, 9.34384957e-04f, - 8.24209226e-04f, 7.07921644e-04f, 5.86535461e-04f, 4.61118668e-04f, 3.32797940e-04f, 2.02615430e-04f, - 7.17560319e-05f, -5.87215139e-05f, -1.87700771e-04f, -3.14093799e-04f, -4.36855019e-04f, -5.54982470e-04f, - -6.67514567e-04f, -7.73539543e-04f, -8.72216549e-04f, -9.62754726e-04f, -1.04446836e-03f, -1.11673823e-03f, - -1.17901020e-03f, -1.23084835e-03f, -1.27191263e-03f, -1.30189831e-03f, -1.32066941e-03f, -1.32816613e-03f, - -1.32437715e-03f, -1.30944714e-03f, -1.28360668e-03f, -1.24710492e-03f, -1.20038313e-03f, -1.14391116e-03f, - -1.07822250e-03f, -1.00394823e-03f, -9.21799577e-04f, -8.32520513e-04f, -7.36916195e-04f, -6.35853312e-04f, - -5.30218398e-04f, -4.20950684e-04f, -3.08981087e-04f, -1.95310152e-04f, -8.08721649e-05f, 3.33481785e-05f, - 1.46369769e-04f, 2.57271691e-04f, 3.65123878e-04f, 4.69053422e-04f, 5.68205019e-04f, 6.61777482e-04f, - 7.49035427e-04f, 8.29295760e-04f, 9.01919035e-04f, 9.66370937e-04f, 1.02218113e-03f, 1.06892877e-03f, - 1.10630552e-03f, 1.13406370e-03f, 1.15204451e-03f, 1.16019052e-03f, 1.15848806e-03f, 1.14706630e-03f, - 1.12606449e-03f, 1.09574589e-03f, 1.05645362e-03f, 1.00859266e-03f, 9.52601766e-04f, 8.89057609e-04f, - 8.18535938e-04f, 7.41697389e-04f, 6.59241262e-04f, 5.71884368e-04f, 4.80414698e-04f, 3.85677252e-04f, - 2.88406796e-04f, 1.89536836e-04f, 8.98491837e-05f, -9.79888746e-06f, -1.08531507e-04f, -2.05575498e-04f, - -3.00092231e-04f, -3.91327952e-04f, -4.78537671e-04f, -5.61003964e-04f, -6.38090388e-04f, -7.09209697e-04f, - -7.73747838e-04f, -8.31297964e-04f, -8.81364804e-04f, -9.23641236e-04f, -9.57793553e-04f, -9.83624619e-04f, - -1.00098424e-03f, -1.00979404e-03f, -1.01003977e-03f, -1.00180772e-03f, -9.85219816e-04f, -9.60506778e-04f, - -9.27905874e-04f, -8.87790902e-04f, -8.40553609e-04f, -7.86632276e-04f, -7.26559669e-04f, -6.60872173e-04f, - -5.90177860e-04f, -5.15099219e-04f, -4.36341554e-04f, -3.54526447e-04f, -2.70436804e-04f, -1.84757234e-04f, - -9.82406108e-05f, -1.16228429e-05f, 7.44116225e-05f, 1.59099493e-04f, 2.41739119e-04f, 3.21707034e-04f, - 3.98276352e-04f, 4.70887555e-04f, 5.38973046e-04f, 6.01940918e-04f, 6.59368174e-04f, 7.10783030e-04f, - 7.55802336e-04f, 7.94127086e-04f, 8.25478803e-04f, 8.49639386e-04f, 8.66487952e-04f, 8.75935969e-04f, - 8.77948893e-04f, 8.72611584e-04f, 8.59994515e-04f, 8.40271458e-04f, 8.13696181e-04f, 7.80491851e-04f, - 7.41053306e-04f, 6.95727202e-04f, 6.44936090e-04f, 5.89181503e-04f, 5.28946796e-04f, 4.64790448e-04f, - 3.97272420e-04f, 3.27000597e-04f, 2.54559578e-04f, 1.80597276e-04f, 1.05760446e-04f, 3.06209047e-05f, - -4.41172003e-05f, -1.17884760e-04f, -1.90032814e-04f, -2.60000039e-04f, -3.27213235e-04f, -3.91110007e-04f, - -4.51226928e-04f, -5.07042112e-04f, -5.58194586e-04f, -6.04189222e-04f, -6.44816381e-04f, -6.79653847e-04f, - -7.08557315e-04f, -7.31282579e-04f, -7.47702169e-04f, -7.57731688e-04f, -7.61359812e-04f, -7.58589885e-04f, - -7.49503361e-04f, -7.34226582e-04f, -7.12935677e-04f, -6.85882645e-04f, -6.53307567e-04f, -6.15569562e-04f, - -5.72978650e-04f, -5.25977418e-04f, -4.74963705e-04f, -4.20426590e-04f, -3.62819514e-04f, -3.02647353e-04f, - -2.40497241e-04f, -1.76810216e-04f, -1.12210871e-04f, -4.71976690e-05f, 1.76624641e-05f, 8.18440593e-05f, - 1.44804207e-04f, 2.06021410e-04f, 2.65025446e-04f, 3.21327783e-04f, 3.74487008e-04f, 4.24062432e-04f, - 4.69715655e-04f, 5.11042943e-04f, 5.47794530e-04f, 5.79655168e-04f, 6.06446384e-04f, 6.27934546e-04f, - 6.44010762e-04f, 6.54614698e-04f, 6.59636425e-04f, 6.59157826e-04f, 6.53158826e-04f, 6.41794049e-04f, - 6.25154916e-04f, 6.03470855e-04f, 5.76917242e-04f, 5.45789736e-04f, 5.10368292e-04f, 4.70998661e-04f, - 4.28021656e-04f, 3.81834126e-04f, 3.32863326e-04f, 2.81489629e-04f, 2.28231239e-04f, 1.73484261e-04f, - 1.17756607e-04f, 6.14881351e-05f, 5.17778269e-06f, -5.07352374e-05f, -1.05745987e-04f, -1.59454662e-04f, - -2.11394268e-04f, -2.61151905e-04f, -3.08351703e-04f, -3.52598590e-04f, -3.93545002e-04f, -4.30916147e-04f, - -4.64387406e-04f, -4.93756593e-04f, -5.18755281e-04f, -5.39265493e-04f, -5.55137934e-04f, -5.66259303e-04f, - -5.72606783e-04f, -5.74140344e-04f, -5.70903292e-04f, -5.62934741e-04f, -5.50388898e-04f, -5.33351962e-04f, - -5.12028510e-04f, -4.86612455e-04f, -4.57392981e-04f, -4.24578939e-04f, -3.88503808e-04f, -3.49487518e-04f, - -3.07895836e-04f, -2.64036522e-04f, -2.18356445e-04f, -1.71198300e-04f, -1.22998901e-04f, -7.41392080e-05f, - -2.50280393e-05f, 2.38852047e-05f, 7.22663332e-05f, 1.19659647e-04f, 1.65718806e-04f, 2.10055385e-04f, - 2.52324173e-04f, 2.92190427e-04f, 3.29337577e-04f, 3.63510150e-04f, 3.94385715e-04f, 4.21803288e-04f, - 4.45519433e-04f, 4.65391876e-04f, 4.81270460e-04f, 4.93057625e-04f, 5.00688030e-04f, 5.04121708e-04f, - 5.03379627e-04f, 4.98485604e-04f, 4.89499566e-04f, 4.76539317e-04f, 4.59760023e-04f, 4.39274612e-04f, - 4.15334876e-04f, 3.88103885e-04f, 3.57902146e-04f, 3.24908089e-04f, 2.89490480e-04f, 2.51922687e-04f, - 2.12512220e-04f, 1.71637404e-04f, 1.29609890e-04f, 8.67866183e-05f, 4.35312276e-05f, 1.98808307e-07f, - -4.28589070e-05f, -8.52865394e-05f, -1.26765698e-04f, -1.66922292e-04f, -2.05456466e-04f, -2.42095652e-04f, - -2.76487494e-04f, -3.08425602e-04f, -3.37638832e-04f, -3.63923042e-04f, -3.87022898e-04f, -4.06875144e-04f, - -4.23245129e-04f, -4.36071615e-04f, -4.45236993e-04f, -4.50724682e-04f, -4.52491230e-04f, -4.50548104e-04f, - -4.44936790e-04f, -4.35725612e-04f, -4.22987381e-04f, -4.06882738e-04f, -3.87548587e-04f, -3.65123104e-04f, - -3.39860288e-04f, -3.11947486e-04f, -2.81618569e-04f, -2.49166817e-04f, -2.14824344e-04f, -1.78876370e-04f, - -1.41684861e-04f, -1.03466427e-04f, -6.45996088e-05f, -2.53738050e-05f, 1.39035721e-05f, 5.28977578e-05f, - 9.13010773e-05f, 1.28809554e-04f, 1.65139924e-04f, 2.00005346e-04f, 2.33095696e-04f, 2.64232233e-04f, - 2.93070034e-04f, 3.19508024e-04f, 3.43252648e-04f, 3.64165224e-04f, 3.82074036e-04f, 3.96868082e-04f, - 4.08408250e-04f, 4.16671952e-04f, 4.21556517e-04f, 4.23035822e-04f, 4.21172111e-04f, 4.15928838e-04f, - 4.07377025e-04f, 3.95568598e-04f, 3.80628038e-04f, 3.62729177e-04f, 3.41921136e-04f, 3.18489958e-04f, - 2.92497406e-04f, 2.64266550e-04f, 2.33955571e-04f, 2.01809261e-04f, 1.68092145e-04f, 1.33141461e-04f, - 9.71043460e-05f, 6.03452880e-05f, 2.31264055e-05f, -1.43105089e-05f, -5.15607083e-05f, -8.84833364e-05f, - -1.24679461e-04f, -1.59910519e-04f, -1.93952723e-04f, -2.26496145e-04f, -2.57307566e-04f, -2.86175538e-04f, - -3.12853472e-04f, -3.37140613e-04f, -3.58914997e-04f, -3.77932329e-04f, -3.94117065e-04f, -4.07317063e-04f, - -4.17422308e-04f, -4.24419479e-04f, -4.28161231e-04f, -4.28700484e-04f, -4.26016659e-04f, -4.20088126e-04f, - -4.11009185e-04f, -3.98835037e-04f, -3.83585114e-04f, -3.65493072e-04f, -3.44616197e-04f, -3.21064387e-04f, - -2.95119418e-04f, -2.66863117e-04f, -2.36549174e-04f, -2.04391686e-04f, -1.70585806e-04f, -1.35432614e-04f, - -9.91006984e-05f, -6.19152828e-05f, -2.41012311e-05f, 1.40621144e-05f, 5.22867497e-05f, 9.03199843e-05f, - 1.27917614e-04f, 1.64740292e-04f, 2.00634478e-04f, 2.35261402e-04f, 2.68377430e-04f, 2.99818019e-04f, - 3.29273634e-04f, 3.56562766e-04f, 3.81532332e-04f, 4.03948113e-04f, 4.23655375e-04f, 4.40488930e-04f, - 4.54376777e-04f, 4.65137195e-04f, 4.72679704e-04f, 4.77014073e-04f, 4.77982201e-04f, 4.75625277e-04f, - 4.69878507e-04f, 4.60802987e-04f, 4.48367418e-04f, 4.32641679e-04f, 4.13709630e-04f, 3.91634147e-04f, - 3.66512902e-04f, 3.38481392e-04f, 3.07634938e-04f, 2.74189182e-04f, 2.38229594e-04f, 1.99985879e-04f, - 1.59632210e-04f, 1.17351364e-04f, 7.33404728e-05f, 2.78844831e-05f, -1.89099461e-05f, -6.67343638e-05f, - -1.15367449e-04f, -1.64649983e-04f, -2.14224348e-04f, -2.64019844e-04f, -3.13654244e-04f, -3.62990333e-04f, - -4.11800705e-04f, -4.59821928e-04f, -5.06946486e-04f, -5.52847863e-04f, -5.97397068e-04f, -6.40454770e-04f, - -6.81765968e-04f, -7.21210131e-04f, -7.58634477e-04f, -7.93939572e-04f, -8.26964876e-04f, -8.57585335e-04f, - -8.85733438e-04f, -9.11351007e-04f, -9.34300512e-04f, -9.54617442e-04f, -9.72159416e-04f, -9.87012089e-04f, - -9.99095133e-04f, -1.00846242e-03f, -1.01506022e-03f, -1.01897105e-03f, -1.02021427e-03f, -1.01887259e-03f, - -1.01497557e-03f, -1.00861358e-03f, -9.99877741e-04f, -9.88823136e-04f, -9.75617693e-04f, -9.60303769e-04f, - -9.43035535e-04f, -9.23922797e-04f, -9.03105429e-04f, -8.80708716e-04f, -8.56853281e-04f, -8.31685264e-04f, - -8.05348207e-04f, -7.77961627e-04f, -7.49713086e-04f, -7.20674604e-04f, -6.91032783e-04f, -6.60888020e-04f, - -6.30372917e-04f, -5.99673349e-04f, -5.68830563e-04f, -5.38013304e-04f, -5.07353303e-04f, -4.76915043e-04f, - -4.46832926e-04f, -4.17179291e-04f, -3.88083307e-04f, -3.59575024e-04f, -3.31820735e-04f, -3.04804303e-04f, - -2.78616041e-04f, -2.53335964e-04f, -2.28986996e-04f, -2.05619529e-04f, -1.83318449e-04f, -1.61979425e-04f, - -1.41791423e-04f, -1.22648816e-04f, -1.04625498e-04f, -8.77122910e-05f, -7.18653457e-05f, -5.71787106e-05f, - -4.34807639e-05f, -3.09618857e-05f, -1.94074401e-05f, -8.88017971e-06f, 6.09625220e-07f, 9.14020334e-06f, - 1.67805558e-05f, 2.35369965e-05f, 2.94278194e-05f, 3.45049751e-05f, 3.88373828e-05f, 4.24291966e-05f, - 4.53445665e-05f, 4.76965834e-05f, 4.93395567e-05f, 5.05392111e-05f, 5.12257065e-05f, 5.14579340e-05f, - 5.12651750e-05f, 5.07312551e-05f, 4.98486765e-05f, 4.87082573e-05f, 4.73439631e-05f, 4.56740817e-05f, - 4.38653618e-05f, 4.19399075e-05f, 3.99125668e-05f, 3.77616021e-05f, 3.56135997e-05f, 3.33554815e-05f, - 3.11656899e-05f, 2.89038150e-05f, 2.67281634e-05f, 2.46192762e-05f, 2.24899205e-05f, 2.04698700e-05f, - 1.84927655e-05f, 1.66762886e-05f, 1.49393771e-05f, 1.32258081e-05f, 1.16985586e-05f, 1.01874391e-05f, - 8.99882100e-06f, 7.61267073e-06f, 6.57702907e-06f, 5.59829210e-06f, 4.27698546e-06f, 1.03248674e-05f, -}; - -// -// polyphase filter -// -static const int SRC_PHASEBITS = 8; -static const int SRC_PHASES = (1 << SRC_PHASEBITS); -static const int SRC_FRACBITS = 32 - SRC_PHASEBITS; -static const uint32_t SRC_FRACMASK = (1 << SRC_FRACBITS) - 1; - -static const float QFRAC_TO_FLOAT = 1.0f / (1 << SRC_FRACBITS); -static const float Q32_TO_FLOAT = 1.0f / (1ULL << 32); - -// blocking size in frames, chosen so block processing fits in L1 cache -static const int SRC_BLOCK = 1024; - -#define lo32(a) ((uint32_t)(a)) -#define hi32(a) ((int32_t)((a) >> 32)) +// high/low part of int64_t +#define LO32(a) ((uint32_t)(a)) +#define HI32(a) ((int32_t)((a) >> 32)) // // Portable aligned malloc/free @@ -610,8 +69,8 @@ static void cubicInterpolation(const float* input, float* output, int inputSize, // Lagrange interpolation using Farrow structure for (int j = 0; j < outputSize; j++) { - int32_t i = hi32(offset); - uint32_t f = lo32(offset); + int32_t i = HI32(offset); + uint32_t f = LO32(offset); // values outside the window are zero float x0 = (i - 1 < 0) ? 0.0f : input[i - 1]; @@ -649,7 +108,7 @@ int AudioSRC::createRationalFilter(int upFactor, int downFactor, float gain) { numTaps = (numCoefs + upFactor - 1) / upFactor; gain *= (float)oldCoefs / numCoefs; } - numTaps = (numTaps + 3) & ~3; // SIMD4 + numTaps = (numTaps + 7) & ~7; // SIMD8 // interpolate the coefficients of the prototype filter float* tempFilter = new float[numTaps * numPhases]; @@ -658,7 +117,7 @@ int AudioSRC::createRationalFilter(int upFactor, int downFactor, float gain) { cubicInterpolation(prototypeFilter, tempFilter, prototypeCoefs, numCoefs, gain); // create the polyphase filter - _polyphaseFilter = (float*)aligned_malloc(numTaps * numPhases * sizeof(float), 16); // SIMD4 + _polyphaseFilter = (float*)aligned_malloc(numTaps * numPhases * sizeof(float), 32); // SIMD8 // rearrange into polyphase form, ordered by use for (int i = 0; i < numPhases; i++) { @@ -699,7 +158,7 @@ int AudioSRC::createIrrationalFilter(int upFactor, int downFactor, float gain) { numTaps = (numCoefs + upFactor - 1) / upFactor; gain *= (float)oldCoefs / numCoefs; } - numTaps = (numTaps + 3) & ~3; // SIMD4 + numTaps = (numTaps + 7) & ~7; // SIMD8 // interpolate the coefficients of the prototype filter float* tempFilter = new float[numTaps * numPhases]; @@ -708,7 +167,7 @@ int AudioSRC::createIrrationalFilter(int upFactor, int downFactor, float gain) { cubicInterpolation(prototypeFilter, tempFilter, prototypeCoefs, numCoefs, gain); // create the polyphase filter, with extra phase at the end to simplify coef interpolation - _polyphaseFilter = (float*)aligned_malloc(numTaps * (numPhases + 1) * sizeof(float), 16); // SIMD4 + _polyphaseFilter = (float*)aligned_malloc(numTaps * (numPhases + 1) * sizeof(float), 32); // SIMD8 // rearrange into polyphase form, ordered by fractional delay for (int phase = 0; phase < numPhases; phase++) { @@ -741,14 +200,14 @@ int AudioSRC::createIrrationalFilter(int upFactor, int downFactor, float gain) { #include -int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFrames) { +int AudioSRC::multirateFilter1_SSE(const float* input0, float* output0, int inputFrames) { int outputFrames = 0; - assert((_numTaps & 0x3) == 0); // SIMD4 + assert(_numTaps % 4 == 0); // SIMD4 if (_step == 0) { // rational - int32_t i = hi32(_offset); + int32_t i = HI32(_offset); while (i < inputFrames) { @@ -761,7 +220,7 @@ int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFra //float coef = c0[j]; __m128 coef0 = _mm_loadu_ps(&c0[j]); - //acc0 += input0[i + j] * coef; + //acc += input[i + j] * coef; acc0 = _mm_add_ps(_mm_mul_ps(_mm_loadu_ps(&input0[i + j]), coef0), acc0); } @@ -781,10 +240,10 @@ int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFra } else { // irrational - while (hi32(_offset) < inputFrames) { + while (HI32(_offset) < inputFrames) { - int32_t i = hi32(_offset); - uint32_t f = lo32(_offset); + int32_t i = HI32(_offset); + uint32_t f = LO32(_offset); uint32_t phase = f >> SRC_FRACBITS; __m128 frac = _mm_set1_ps((f & SRC_FRACMASK) * QFRAC_TO_FLOAT); @@ -802,7 +261,7 @@ int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFra coef1 = _mm_sub_ps(coef1, coef0); coef0 = _mm_add_ps(_mm_mul_ps(coef1, frac), coef0); - //acc0 += input0[i + j] * coef; + //acc += input[i + j] * coef; acc0 = _mm_add_ps(_mm_mul_ps(_mm_loadu_ps(&input0[i + j]), coef0), acc0); } @@ -821,14 +280,14 @@ int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFra return outputFrames; } -int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* output0, float* output1, int inputFrames) { +int AudioSRC::multirateFilter2_SSE(const float* input0, const float* input1, float* output0, float* output1, int inputFrames) { int outputFrames = 0; - assert((_numTaps & 0x3) == 0); // SIMD4 + assert(_numTaps % 4 == 0); // SIMD4 if (_step == 0) { // rational - int32_t i = hi32(_offset); + int32_t i = HI32(_offset); while (i < inputFrames) { @@ -842,7 +301,7 @@ int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* //float coef = c0[j]; __m128 coef0 = _mm_loadu_ps(&c0[j]); - //acc0 += input0[i + j] * coef; + //acc += input[i + j] * coef; acc0 = _mm_add_ps(_mm_mul_ps(_mm_loadu_ps(&input0[i + j]), coef0), acc0); acc1 = _mm_add_ps(_mm_mul_ps(_mm_loadu_ps(&input1[i + j]), coef0), acc1); } @@ -866,10 +325,10 @@ int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* } else { // irrational - while (hi32(_offset) < inputFrames) { + while (HI32(_offset) < inputFrames) { - int32_t i = hi32(_offset); - uint32_t f = lo32(_offset); + int32_t i = HI32(_offset); + uint32_t f = LO32(_offset); uint32_t phase = f >> SRC_FRACBITS; __m128 frac = _mm_set1_ps((f & SRC_FRACMASK) * QFRAC_TO_FLOAT); @@ -888,7 +347,7 @@ int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* coef1 = _mm_sub_ps(coef1, coef0); coef0 = _mm_add_ps(_mm_mul_ps(coef1, frac), coef0); - //acc0 += input0[i + j] * coef; + //acc += input[i + j] * coef; acc0 = _mm_add_ps(_mm_mul_ps(_mm_loadu_ps(&input0[i + j]), coef0), acc0); acc1 = _mm_add_ps(_mm_mul_ps(_mm_loadu_ps(&input1[i + j]), coef0), acc1); } @@ -911,6 +370,24 @@ int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* return outputFrames; } +// +// Runtime CPU dispatch +// + +#include "CPUDetect.h" + +int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFrames) { + + static auto f = cpuSupportsAVX2() ? &AudioSRC::multirateFilter1_AVX2 : &AudioSRC::multirateFilter1_SSE; + return (this->*f)(input0, output0, inputFrames); // dispatch +} + +int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* output0, float* output1, int inputFrames) { + + static auto f = cpuSupportsAVX2() ? &AudioSRC::multirateFilter2_AVX2 : &AudioSRC::multirateFilter2_SSE; + return (this->*f)(input0, input1, output0, output1, inputFrames); // dispatch +} + // convert int16_t to float, deinterleave stereo void AudioSRC::convertInputFromInt16(const int16_t* input, float** outputs, int numFrames) { __m128 scale = _mm_set1_ps(1/32768.0f); @@ -1069,7 +546,7 @@ int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFra if (_step == 0) { // rational - int32_t i = hi32(_offset); + int32_t i = HI32(_offset); while (i < inputFrames) { @@ -1096,10 +573,10 @@ int AudioSRC::multirateFilter1(const float* input0, float* output0, int inputFra } else { // irrational - while (hi32(_offset) < inputFrames) { + while (HI32(_offset) < inputFrames) { - int32_t i = hi32(_offset); - uint32_t f = lo32(_offset); + int32_t i = HI32(_offset); + uint32_t f = LO32(_offset); uint32_t phase = f >> SRC_FRACBITS; float frac = (f & SRC_FRACMASK) * QFRAC_TO_FLOAT; @@ -1132,7 +609,7 @@ int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* if (_step == 0) { // rational - int32_t i = hi32(_offset); + int32_t i = HI32(_offset); while (i < inputFrames) { @@ -1162,10 +639,10 @@ int AudioSRC::multirateFilter2(const float* input0, const float* input1, float* } else { // irrational - while (hi32(_offset) < inputFrames) { + while (HI32(_offset) < inputFrames) { - int32_t i = hi32(_offset); - uint32_t f = lo32(_offset); + int32_t i = HI32(_offset); + uint32_t f = LO32(_offset); uint32_t phase = f >> SRC_FRACBITS; float frac = (f & SRC_FRACMASK) * QFRAC_TO_FLOAT; @@ -1320,7 +797,7 @@ AudioSRC::AudioSRC(int inputSampleRate, int outputSampleRate, int numChannels) { assert(inputSampleRate > 0); assert(outputSampleRate > 0); assert(numChannels > 0); - assert(numChannels <= MAX_CHANNELS); + assert(numChannels <= SRC_MAX_CHANNELS); _inputSampleRate = inputSampleRate; _outputSampleRate = outputSampleRate; @@ -1349,7 +826,7 @@ AudioSRC::AudioSRC(int inputSampleRate, int outputSampleRate, int numChannels) { _numTaps = createIrrationalFilter(_upFactor, _downFactor, 1.0f); } - //printf("up=%d down=%.3f taps=%d\n", _upFactor, _downFactor + (lo32(_step)< +static const int SRC_MAX_CHANNELS = 2; + +// polyphase filter +static const int SRC_PHASEBITS = 8; +static const int SRC_PHASES = (1 << SRC_PHASEBITS); +static const int SRC_FRACBITS = 32 - SRC_PHASEBITS; +static const uint32_t SRC_FRACMASK = (1 << SRC_FRACBITS) - 1; + +static const float QFRAC_TO_FLOAT = 1.0f / (1 << SRC_FRACBITS); +static const float Q32_TO_FLOAT = 1.0f / (1ULL << 32); + +// blocking size in frames, chosen so block processing fits in L1 cache +static const int SRC_BLOCK = 256; + class AudioSRC { public: - static const int MAX_CHANNELS = 2; - AudioSRC(int inputSampleRate, int outputSampleRate, int numChannels); ~AudioSRC(); @@ -33,9 +45,9 @@ private: float* _polyphaseFilter; int* _stepTable; - float* _history[MAX_CHANNELS]; - float* _inputs[MAX_CHANNELS]; - float* _outputs[MAX_CHANNELS]; + float* _history[SRC_MAX_CHANNELS]; + float* _inputs[SRC_MAX_CHANNELS]; + float* _outputs[SRC_MAX_CHANNELS]; int _inputSampleRate; int _outputSampleRate; @@ -57,6 +69,12 @@ private: int multirateFilter1(const float* input0, float* output0, int inputFrames); int multirateFilter2(const float* input0, const float* input1, float* output0, float* output1, int inputFrames); + int multirateFilter1_SSE(const float* input0, float* output0, int inputFrames); + int multirateFilter2_SSE(const float* input0, const float* input1, float* output0, float* output1, int inputFrames); + + int multirateFilter1_AVX2(const float* input0, float* output0, int inputFrames); + int multirateFilter2_AVX2(const float* input0, const float* input1, float* output0, float* output1, int inputFrames); + void convertInputFromInt16(const int16_t* input, float** outputs, int numFrames); void convertOutputToInt16(float** inputs, int16_t* output, int numFrames); diff --git a/libraries/audio/src/AudioSRCData.h b/libraries/audio/src/AudioSRCData.h new file mode 100644 index 0000000000..8ab868e898 --- /dev/null +++ b/libraries/audio/src/AudioSRCData.h @@ -0,0 +1,548 @@ +// +// AudioSRCData.h +// libraries/audio/src +// +// Created by Ken Cooke on 6/6/16. +// Copyright 2016 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +// +// Prototype filter coefficients for audio sampling rate conversion. +// +// See "Design of Optimal Minimum Phase Digital FIR Filters Using Discrete Hilbert Transforms" +// IEEE TRANSACTIONS ON SIGNAL PROCESSING, May 2000 +// +// Minimum-phase equiripple FIR lowpass +// taps = 96, phases = 32 +// +// passband = 0.918 (20.2khz @ 44.1khz sampling rate) +// stopband = 1.010 (22.2khz @ 44.1khz sampling rate) +// passband ripple = +-0.01dB +// stopband attn = -125dB (-70dB at 1.000) +// +// Resampling algorithm: +// One of two methods is used, depending on whether the conversion is reducible to a ratio of small integers L/M. +// For rational ratio, the prototype is upsampled to L/M polyphase filter using 3rd-order Lagrange interpolation. +// For irrational ratio, the prototype is upsampled to 256/M polyphase filter, followed by linear interpolation. +// For both cases, oversampling at each stage ensures the original passband and stopband specifications are met. +// +static const int PROTOTYPE_TAPS = 96; // filter taps per phase +static const int PROTOTYPE_PHASES = 32; // oversampling factor + +static const float prototypeFilter[PROTOTYPE_TAPS * PROTOTYPE_PHASES] = { + 0.00000000e+00f, 1.55021703e-05f, 1.46054865e-05f, 2.07057160e-05f, 2.91335519e-05f, 4.00091078e-05f, + 5.33544450e-05f, 7.03618468e-05f, 9.10821639e-05f, 1.16484613e-04f, 1.47165999e-04f, 1.84168304e-04f, + 2.28429617e-04f, 2.80913884e-04f, 3.42940399e-04f, 4.15773039e-04f, 5.01023255e-04f, 6.00234953e-04f, + 7.15133271e-04f, 8.47838855e-04f, 1.00032516e-03f, 1.17508881e-03f, 1.37452550e-03f, 1.60147614e-03f, + 1.85886458e-03f, 2.14985024e-03f, 2.47783071e-03f, 2.84666764e-03f, 3.26016878e-03f, 3.72252797e-03f, + 4.23825900e-03f, 4.81207874e-03f, 5.44904143e-03f, 6.15447208e-03f, 6.93399929e-03f, 7.79337059e-03f, + 8.73903392e-03f, 9.77729117e-03f, 1.09149561e-02f, 1.21591316e-02f, 1.35171164e-02f, 1.49965439e-02f, + 1.66053136e-02f, 1.83515384e-02f, 2.02435362e-02f, 2.22899141e-02f, 2.44995340e-02f, 2.68813362e-02f, + 2.94443254e-02f, 3.21979928e-02f, 3.51514690e-02f, 3.83143719e-02f, 4.16960560e-02f, 4.53060504e-02f, + 4.91538115e-02f, 5.32486197e-02f, 5.75998650e-02f, 6.22164253e-02f, 6.71072811e-02f, 7.22809789e-02f, + 7.77457552e-02f, 8.35095233e-02f, 8.95796944e-02f, 9.59631768e-02f, 1.02666457e-01f, 1.09695215e-01f, + 1.17054591e-01f, 1.24748885e-01f, 1.32781656e-01f, 1.41155521e-01f, 1.49872243e-01f, 1.58932534e-01f, + 1.68335961e-01f, 1.78081143e-01f, 1.88165339e-01f, 1.98584621e-01f, 2.09333789e-01f, 2.20406193e-01f, + 2.31793899e-01f, 2.43487398e-01f, 2.55475740e-01f, 2.67746404e-01f, 2.80285305e-01f, 2.93076743e-01f, + 3.06103423e-01f, 3.19346351e-01f, 3.32784916e-01f, 3.46396772e-01f, 3.60158039e-01f, 3.74043042e-01f, + 3.88024564e-01f, 4.02073759e-01f, 4.16160177e-01f, 4.30251886e-01f, 4.44315429e-01f, 4.58315954e-01f, + 4.72217175e-01f, 4.85981675e-01f, 4.99570709e-01f, 5.12944586e-01f, 5.26062401e-01f, 5.38882630e-01f, + 5.51362766e-01f, 5.63459860e-01f, 5.75130384e-01f, 5.86330458e-01f, 5.97016050e-01f, 6.07143161e-01f, + 6.16667840e-01f, 6.25546499e-01f, 6.33735979e-01f, 6.41193959e-01f, 6.47878856e-01f, 6.53750084e-01f, + 6.58768549e-01f, 6.62896349e-01f, 6.66097381e-01f, 6.68337353e-01f, 6.69583869e-01f, 6.69807061e-01f, + 6.68979117e-01f, 6.67075139e-01f, 6.64072812e-01f, 6.59952827e-01f, 6.54699116e-01f, 6.48298688e-01f, + 6.40742160e-01f, 6.32023668e-01f, 6.22141039e-01f, 6.11095903e-01f, 5.98893921e-01f, 5.85544600e-01f, + 5.71061707e-01f, 5.55463040e-01f, 5.38770639e-01f, 5.21010762e-01f, 5.02213839e-01f, 4.82414572e-01f, + 4.61651859e-01f, 4.39968628e-01f, 4.17412000e-01f, 3.94032951e-01f, 3.69886464e-01f, 3.45031084e-01f, + 3.19529091e-01f, 2.93446187e-01f, 2.66851164e-01f, 2.39815999e-01f, 2.12415399e-01f, 1.84726660e-01f, + 1.56829293e-01f, 1.28804933e-01f, 1.00736965e-01f, 7.27100355e-02f, 4.48100810e-02f, 1.71237415e-02f, + -1.02620228e-02f, -3.72599591e-02f, -6.37832871e-02f, -8.97457733e-02f, -1.15062201e-01f, -1.39648782e-01f, + -1.63423488e-01f, -1.86306368e-01f, -2.08220103e-01f, -2.29090072e-01f, -2.48845046e-01f, -2.67417270e-01f, + -2.84742946e-01f, -3.00762597e-01f, -3.15421127e-01f, -3.28668542e-01f, -3.40459849e-01f, -3.50755400e-01f, + -3.59521402e-01f, -3.66729768e-01f, -3.72358475e-01f, -3.76391839e-01f, -3.78820421e-01f, -3.79641287e-01f, + -3.78858203e-01f, -3.76481336e-01f, -3.72527677e-01f, -3.67020780e-01f, -3.59990760e-01f, -3.51474372e-01f, + -3.41514630e-01f, -3.30160971e-01f, -3.17468898e-01f, -3.03499788e-01f, -2.88320749e-01f, -2.72004315e-01f, + -2.54628056e-01f, -2.36274454e-01f, -2.17030464e-01f, -1.96986952e-01f, -1.76238733e-01f, -1.54883647e-01f, + -1.33022496e-01f, -1.10758449e-01f, -8.81964466e-02f, -6.54430504e-02f, -4.26055475e-02f, -1.97916415e-02f, + 2.89108184e-03f, 2.53355868e-02f, 4.74362201e-02f, 6.90887518e-02f, 9.01914308e-02f, 1.10644978e-01f, + 1.30353494e-01f, 1.49224772e-01f, 1.67170735e-01f, 1.84107975e-01f, 1.99958067e-01f, 2.14648181e-01f, + 2.28111323e-01f, 2.40286622e-01f, 2.51119890e-01f, 2.60563701e-01f, 2.68577740e-01f, 2.75129027e-01f, + 2.80192144e-01f, 2.83749177e-01f, 2.85790223e-01f, 2.86312986e-01f, 2.85323221e-01f, 2.82834421e-01f, + 2.78867915e-01f, 2.73452721e-01f, 2.66625431e-01f, 2.58429983e-01f, 2.48917457e-01f, 2.38145826e-01f, + 2.26179680e-01f, 2.13089734e-01f, 1.98952740e-01f, 1.83850758e-01f, 1.67870897e-01f, 1.51104879e-01f, + 1.33648388e-01f, 1.15600665e-01f, 9.70639763e-02f, 7.81429119e-02f, 5.89439889e-02f, 3.95749746e-02f, + 2.01442353e-02f, 7.60241152e-04f, -1.84690990e-02f, -3.74370397e-02f, -5.60385970e-02f, -7.41711039e-02f, + -9.17348686e-02f, -1.08633632e-01f, -1.24775254e-01f, -1.40071993e-01f, -1.54441372e-01f, -1.67806284e-01f, + -1.80095654e-01f, -1.91244732e-01f, -2.01195605e-01f, -2.09897310e-01f, -2.17306320e-01f, -2.23386736e-01f, + -2.28110407e-01f, -2.31457193e-01f, -2.33415044e-01f, -2.33980051e-01f, -2.33156463e-01f, -2.30956673e-01f, + -2.27401097e-01f, -2.22518148e-01f, -2.16343899e-01f, -2.08921985e-01f, -2.00303365e-01f, -1.90545790e-01f, + -1.79713804e-01f, -1.67877977e-01f, -1.55114789e-01f, -1.41505907e-01f, -1.27137921e-01f, -1.12101628e-01f, + -9.64915640e-02f, -8.04054232e-02f, -6.39434707e-02f, -4.72078814e-02f, -3.03021635e-02f, -1.33305082e-02f, + 3.60284977e-03f, 2.03942507e-02f, 3.69413014e-02f, 5.31433810e-02f, 6.89024656e-02f, 8.41234679e-02f, + 9.87150268e-02f, 1.12589969e-01f, 1.25665865e-01f, 1.37865538e-01f, 1.49117506e-01f, 1.59356490e-01f, + 1.68523664e-01f, 1.76567229e-01f, 1.83442499e-01f, 1.89112308e-01f, 1.93547212e-01f, 1.96725586e-01f, + 1.98633878e-01f, 1.99266486e-01f, 1.98625999e-01f, 1.96723008e-01f, 1.93576075e-01f, 1.89211557e-01f, + 1.83663562e-01f, 1.76973516e-01f, 1.69190033e-01f, 1.60368490e-01f, 1.50570805e-01f, 1.39864815e-01f, + 1.28324021e-01f, 1.16026978e-01f, 1.03056879e-01f, 8.95008829e-02f, 7.54496798e-02f, 6.09968238e-02f, + 4.62380664e-02f, 3.12708901e-02f, 1.61936956e-02f, 1.10531988e-03f, -1.38957653e-02f, -2.87119784e-02f, + -4.32472742e-02f, -5.74078385e-02f, -7.11026311e-02f, -8.42439713e-02f, -9.67481917e-02f, -1.08536049e-01f, + -1.19533350e-01f, -1.29671345e-01f, -1.38887238e-01f, -1.47124498e-01f, -1.54333373e-01f, -1.60470968e-01f, + -1.65501755e-01f, -1.69397631e-01f, -1.72138140e-01f, -1.73710602e-01f, -1.74110159e-01f, -1.73339798e-01f, + -1.71410274e-01f, -1.68340111e-01f, -1.64155335e-01f, -1.58889414e-01f, -1.52582850e-01f, -1.45283122e-01f, + -1.37044042e-01f, -1.27925722e-01f, -1.17993860e-01f, -1.07319421e-01f, -9.59781808e-02f, -8.40500777e-02f, + -7.16188049e-02f, -5.87710561e-02f, -4.55961475e-02f, -3.21851919e-02f, -1.86306406e-02f, -5.02554942e-03f, + 8.53698384e-03f, 2.19645467e-02f, 3.51659468e-02f, 4.80518693e-02f, 6.05355056e-02f, 7.25330700e-02f, + 8.39645094e-02f, 9.47537898e-02f, 1.04829753e-01f, 1.14126254e-01f, 1.22582788e-01f, 1.30144907e-01f, + 1.36764459e-01f, 1.42400029e-01f, 1.47017076e-01f, 1.50588312e-01f, 1.53093700e-01f, 1.54520736e-01f, + 1.54864367e-01f, 1.54127119e-01f, 1.52318991e-01f, 1.49457408e-01f, 1.45567062e-01f, 1.40679709e-01f, + 1.34833933e-01f, 1.28074855e-01f, 1.20453893e-01f, 1.12028129e-01f, 1.02860307e-01f, 9.30178765e-02f, + 8.25730032e-02f, 7.16016450e-02f, 6.01833134e-02f, 4.84002546e-02f, 3.63370724e-02f, 2.40800037e-02f, + 1.17163168e-02f, -6.66217400e-04f, -1.29801121e-02f, -2.51385315e-02f, -3.70562030e-02f, -4.86497748e-02f, + -5.98384928e-02f, -7.05447859e-02f, -8.06947592e-02f, -9.02187441e-02f, -9.90517313e-02f, -1.07133911e-01f, + -1.14410951e-01f, -1.20834483e-01f, -1.26362422e-01f, -1.30959116e-01f, -1.34595787e-01f, -1.37250547e-01f, + -1.38908600e-01f, -1.39562374e-01f, -1.39211442e-01f, -1.37862602e-01f, -1.35529795e-01f, -1.32233909e-01f, + -1.28002721e-01f, -1.22870611e-01f, -1.16878278e-01f, -1.10072477e-01f, -1.02505698e-01f, -9.42356124e-02f, + -8.53248753e-02f, -7.58404912e-02f, -6.58532924e-02f, -5.54376360e-02f, -4.46705953e-02f, -3.36315414e-02f, + -2.24015972e-02f, -1.10628991e-02f, 3.01894735e-04f, 1.16101918e-02f, 2.27801642e-02f, 3.37311642e-02f, + 4.43845430e-02f, 5.46640016e-02f, 6.44962637e-02f, 7.38115400e-02f, 8.25440784e-02f, 9.06325572e-02f, + 9.80206066e-02f, 1.04657146e-01f, 1.10496723e-01f, 1.15499920e-01f, 1.19633523e-01f, 1.22870824e-01f, + 1.25191729e-01f, 1.26582959e-01f, 1.27038061e-01f, 1.26557494e-01f, 1.25148528e-01f, 1.22825305e-01f, + 1.19608512e-01f, 1.15525479e-01f, 1.10609643e-01f, 1.04900592e-01f, 9.84435537e-02f, 9.12890948e-02f, + 8.34927732e-02f, 7.51146973e-02f, 6.62190194e-02f, 5.68735547e-02f, 4.71491262e-02f, 3.71191855e-02f, + 2.68591932e-02f, 1.64459573e-02f, 5.95731808e-03f, -4.52874940e-03f, -1.49344723e-02f, -2.51829130e-02f, + -3.51986373e-02f, -4.49081427e-02f, -5.42404654e-02f, -6.31276969e-02f, -7.15054163e-02f, -7.93132713e-02f, + -8.64953327e-02f, -9.30005042e-02f, -9.87829011e-02f, -1.03802223e-01f, -1.08023943e-01f, -1.11419636e-01f, + -1.13967111e-01f, -1.15650603e-01f, -1.16460855e-01f, -1.16395152e-01f, -1.15457368e-01f, -1.13657871e-01f, + -1.11013433e-01f, -1.07547117e-01f, -1.03288073e-01f, -9.82712708e-02f, -9.25372646e-02f, -8.61318657e-02f, + -7.91057486e-02f, -7.15141053e-02f, -6.34161588e-02f, -5.48747791e-02f, -4.59559696e-02f, -3.67282941e-02f, + -2.72624874e-02f, -1.76307914e-02f, -7.90648674e-03f, 1.83670340e-03f, 1.15251424e-02f, 2.10858716e-02f, + 3.04471304e-02f, 3.95388944e-02f, 4.82933904e-02f, 5.66456655e-02f, 6.45340054e-02f, 7.19003487e-02f, + 7.86908695e-02f, 8.48562395e-02f, 9.03519908e-02f, 9.51389501e-02f, 9.91834077e-02f, 1.02457361e-01f, + 1.04938834e-01f, 1.06611872e-01f, 1.07466724e-01f, 1.07499917e-01f, 1.06714213e-01f, 1.05118588e-01f, + 1.02728167e-01f, 9.95640680e-02f, 9.56532488e-02f, 9.10282406e-02f, 8.57269309e-02f, 7.97922261e-02f, + 7.32717395e-02f, 6.62174249e-02f, 5.86850536e-02f, 5.07339959e-02f, 4.24265058e-02f, 3.38274345e-02f, + 2.50036502e-02f, 1.60234844e-02f, 6.95628026e-03f, -2.12820655e-03f, -1.11602438e-02f, -2.00708281e-02f, + -2.87920337e-02f, -3.72576320e-02f, -4.54035426e-02f, -5.31684173e-02f, -6.04938939e-02f, -6.73253212e-02f, + -7.36119310e-02f, -7.93072981e-02f, -8.43697556e-02f, -8.87625537e-02f, -9.24542939e-02f, -9.54189981e-02f, + -9.76364402e-02f, -9.90921435e-02f, -9.97776003e-02f, -9.96902366e-02f, -9.88334463e-02f, -9.72165780e-02f, + -9.48547668e-02f, -9.17688999e-02f, -8.79853312e-02f, -8.35357688e-02f, -7.84569594e-02f, -7.27903677e-02f, + -6.65818940e-02f, -5.98814932e-02f, -5.27427333e-02f, -4.52224733e-02f, -3.73802459e-02f, -2.92780037e-02f, + -2.09794209e-02f, -1.25495498e-02f, -4.05425988e-03f, 4.44034349e-03f, 1.28682571e-02f, 2.11643361e-02f, + 2.92645357e-02f, 3.71066200e-02f, 4.46305203e-02f, 5.17788267e-02f, 5.84972389e-02f, 6.47349496e-02f, + 7.04450836e-02f, 7.55849928e-02f, 8.01165748e-02f, 8.40066506e-02f, 8.72270848e-02f, 8.97550618e-02f, + 9.15732179e-02f, 9.26698315e-02f, 9.30387881e-02f, 9.26796720e-02f, 9.15978025e-02f, 8.98040443e-02f, + 8.73148489e-02f, 8.41520461e-02f, 8.03426093e-02f, 7.59185468e-02f, 7.09165136e-02f, 6.53776255e-02f, + 5.93470480e-02f, 5.28736293e-02f, 4.60095655e-02f, 3.88099545e-02f, 3.13323302e-02f, 2.36362162e-02f, + 1.57827398e-02f, 7.83395091e-03f, -1.47413782e-04f, -8.09864153e-03f, -1.59574406e-02f, -2.36623595e-02f, + -3.11534717e-02f, -3.83725840e-02f, -4.52638947e-02f, -5.17743411e-02f, -5.78539729e-02f, -6.34564348e-02f, + -6.85392092e-02f, -7.30640654e-02f, -7.69971954e-02f, -8.03096220e-02f, -8.29772975e-02f, -8.49813524e-02f, + -8.63081836e-02f, -8.69495746e-02f, -8.69027157e-02f, -8.61702687e-02f, -8.47602668e-02f, -8.26860569e-02f, + -7.99661981e-02f, -7.66242997e-02f, -7.26887788e-02f, -6.81926752e-02f, -6.31733712e-02f, -5.76722279e-02f, + -5.17343061e-02f, -4.54080069e-02f, -3.87446321e-02f, -3.17980032e-02f, -2.46239897e-02f, -1.72801497e-02f, + -9.82518156e-03f, -2.31845300e-03f, 5.18037510e-03f, 1.26119044e-02f, 1.99174857e-02f, 2.70395921e-02f, + 3.39223499e-02f, 4.05119404e-02f, 4.67570465e-02f, 5.26092142e-02f, 5.80232695e-02f, 6.29576539e-02f, + 6.73747113e-02f, 7.12410320e-02f, 7.45276905e-02f, 7.72104218e-02f, 7.92698394e-02f, 8.06915952e-02f, + 8.14664004e-02f, 8.15901977e-02f, 8.10640907e-02f, 7.98943315e-02f, 7.80922975e-02f, 7.56743792e-02f, + 7.26617861e-02f, 6.90804346e-02f, 6.49606433e-02f, 6.03370049e-02f, 5.52479503e-02f, 4.97355660e-02f, + 4.38451300e-02f, 3.76248662e-02f, 3.11254263e-02f, 2.43995757e-02f, 1.75017105e-02f, 1.04874823e-02f, + 3.41321948e-03f, -3.66433362e-03f, -1.06886566e-02f, -1.76037566e-02f, -2.43547422e-02f, -3.08881238e-02f, + -3.71523818e-02f, -4.30982377e-02f, -4.86791529e-02f, -5.38515978e-02f, -5.85754991e-02f, -6.28144137e-02f, + -6.65359631e-02f, -6.97119559e-02f, -7.23186409e-02f, -7.43369897e-02f, -7.57526047e-02f, -7.65560812e-02f, + -7.67428560e-02f, -7.63134051e-02f, -7.52730583e-02f, -7.36321241e-02f, -7.14055927e-02f, -6.86132027e-02f, + -6.52791213e-02f, -6.14318004e-02f, -5.71037475e-02f, -5.23312158e-02f, -4.71539306e-02f, -4.16147519e-02f, + -3.57593331e-02f, -2.96357023e-02f, -2.32939478e-02f, -1.67857228e-02f, -1.01639251e-02f, -3.48213128e-03f, + 3.20566951e-03f, 9.84566549e-03f, 1.63845318e-02f, 2.27699627e-02f, 2.89509937e-02f, 3.48784838e-02f, + 4.05054571e-02f, 4.57875191e-02f, 5.06831561e-02f, 5.51541055e-02f, 5.91656321e-02f, 6.26867948e-02f, + 6.56907214e-02f, 6.81547545e-02f, 7.00607045e-02f, 7.13948753e-02f, 7.21482790e-02f, 7.23165894e-02f, + 7.19002973e-02f, 7.09044846e-02f, 6.93390331e-02f, 6.72183039e-02f, 6.45611568e-02f, 6.13906537e-02f, + 5.77340810e-02f, 5.36223917e-02f, 4.90902973e-02f, 4.41756853e-02f, 3.89195025e-02f, 3.33653266e-02f, + 2.75589553e-02f, 2.15482187e-02f, 1.53823433e-02f, 9.11173206e-03f, 2.78750380e-03f, -3.53899736e-03f, + -9.81648845e-03f, -1.59942887e-02f, -2.20226002e-02f, -2.78530676e-02f, -3.34389835e-02f, -3.87358558e-02f, + -4.37015752e-02f, -4.82968641e-02f, -5.24856104e-02f, -5.62350079e-02f, -5.95160314e-02f, -6.23034090e-02f, + -6.45760369e-02f, -6.63170246e-02f, -6.75138263e-02f, -6.81583864e-02f, -6.82471093e-02f, -6.77809819e-02f, + -6.67654439e-02f, -6.52104027e-02f, -6.31301405e-02f, -6.05431381e-02f, -5.74719510e-02f, -5.39430121e-02f, + -4.99864152e-02f, -4.56356108e-02f, -4.09271785e-02f, -3.59005358e-02f, -3.05975021e-02f, -2.50620982e-02f, + -1.93400931e-02f, -1.34786109e-02f, -7.52582921e-03f, -1.53047296e-03f, 4.45846396e-03f, 1.03922252e-02f, + 1.62226043e-02f, 2.19024111e-02f, 2.73857927e-02f, 3.26286453e-02f, 3.75889120e-02f, 4.22270162e-02f, + 4.65060678e-02f, 5.03922602e-02f, 5.38550360e-02f, 5.68673912e-02f, 5.94061299e-02f, 6.14518959e-02f, + 6.29894927e-02f, 6.40078422e-02f, 6.45002081e-02f, 6.44641312e-02f, 6.39014463e-02f, 6.28183549e-02f, + 6.12252434e-02f, 5.91366226e-02f, 5.65710713e-02f, 5.35509478e-02f, 5.01023211e-02f, 4.62546289e-02f, + 4.20405644e-02f, 3.74956324e-02f, 3.26580309e-02f, 2.75681921e-02f, 2.22685138e-02f, 1.68029869e-02f, + 1.12168479e-02f, 5.55616360e-03f, -1.32475496e-04f, -5.80242145e-03f, -1.14072870e-02f, -1.69013632e-02f, + -2.22399629e-02f, -2.73798231e-02f, -3.22793559e-02f, -3.68992177e-02f, -4.12022700e-02f, -4.51542301e-02f, + -4.87237130e-02f, -5.18825743e-02f, -5.46061242e-02f, -5.68733215e-02f, -5.86668721e-02f, -5.99735198e-02f, + -6.07838952e-02f, -6.10928895e-02f, -6.08993923e-02f, -6.02064781e-02f, -5.90213291e-02f, -5.73550887e-02f, + -5.52228853e-02f, -5.26435817e-02f, -4.96396897e-02f, -4.62371294e-02f, -4.24650256e-02f, -3.83554628e-02f, + -3.39432096e-02f, -2.92654225e-02f, -2.43613233e-02f, -1.92718970e-02f, -1.40395616e-02f, -8.70771728e-03f, + -3.32056777e-03f, 2.07744785e-03f, 7.44190391e-03f, 1.27287222e-02f, 1.78946228e-02f, 2.28975002e-02f, + 2.76965843e-02f, 3.22530140e-02f, 3.65299534e-02f, 4.04930363e-02f, 4.41105069e-02f, 4.73536159e-02f, + 5.01967201e-02f, 5.26175750e-02f, 5.45974724e-02f, 5.61213729e-02f, 5.71780843e-02f, 5.77601946e-02f, + 5.78643759e-02f, 5.74910914e-02f, 5.66448597e-02f, 5.53340158e-02f, 5.35707338e-02f, 5.13708843e-02f, + 4.87538683e-02f, 4.57425137e-02f, 4.23627999e-02f, 3.86437075e-02f, 3.46169024e-02f, 3.03165387e-02f, + 2.57788894e-02f, 2.10421222e-02f, 1.61459251e-02f, 1.11311994e-02f, 6.03970466e-03f, 9.13695817e-04f, + -4.20433431e-03f, -9.27218149e-03f, -1.42480682e-02f, -1.90911878e-02f, -2.37618648e-02f, -2.82220093e-02f, + -3.24353766e-02f, -3.63678336e-02f, -3.99876924e-02f, -4.32659237e-02f, -4.61764207e-02f, -4.86961602e-02f, + -5.08054551e-02f, -5.24880386e-02f, -5.37312181e-02f, -5.45260166e-02f, -5.48671104e-02f, -5.47530531e-02f, + -5.41860463e-02f, -5.31721475e-02f, -5.17210363e-02f, -4.98459868e-02f, -4.75637647e-02f, -4.48944406e-02f, + -4.18612746e-02f, -3.84904206e-02f, -3.48107925e-02f, -3.08537797e-02f, -2.66529685e-02f, -2.22438695e-02f, + -1.76636682e-02f, -1.29507560e-02f, -8.14466071e-03f, -3.28544776e-03f, 1.58643018e-03f, 6.43050440e-03f, + 1.12067405e-02f, 1.58756642e-02f, 2.03989020e-02f, 2.47393345e-02f, 2.88614617e-02f, 3.27317634e-02f, + 3.63187992e-02f, 3.95936470e-02f, 4.25300387e-02f, 4.51045672e-02f, 4.72968940e-02f, 4.90899703e-02f, + 5.04700047e-02f, 5.14267809e-02f, 5.19535643e-02f, 5.20472034e-02f, 5.17082287e-02f, 5.09406434e-02f, + 4.97521048e-02f, 4.81537188e-02f, 4.61599131e-02f, 4.37884262e-02f, 4.10600706e-02f, 3.79985488e-02f, + 3.46302622e-02f, 3.09841217e-02f, 2.70912412e-02f, 2.29847199e-02f, 1.86992847e-02f, 1.42711599e-02f, + 9.73752669e-03f, 5.13643650e-03f, 5.06379454e-04f, -4.11408166e-03f, -8.68649476e-03f, -1.31729621e-02f, + -1.75363807e-02f, -2.17408089e-02f, -2.57516979e-02f, -2.95362143e-02f, -3.30635093e-02f, -3.63049622e-02f, + -3.92344048e-02f, -4.18283298e-02f, -4.40661418e-02f, -4.59301913e-02f, -4.74060505e-02f, -4.84825511e-02f, + -4.91518827e-02f, -4.94096235e-02f, -4.92548579e-02f, -4.86900251e-02f, -4.77210458e-02f, -4.63571741e-02f, + -4.46108878e-02f, -4.24979107e-02f, -4.00368564e-02f, -3.72492987e-02f, -3.41594108e-02f, -3.07938448e-02f, + -2.71814552e-02f, -2.33531198e-02f, -1.93413598e-02f, -1.51802063e-02f, -1.09048013e-02f, -6.55114338e-03f, + -2.15581014e-03f, 2.24443555e-03f, 6.61280814e-03f, 1.09129453e-02f, 1.51091980e-02f, 1.91667630e-02f, + 2.30522168e-02f, 2.67335907e-02f, 3.01807365e-02f, 3.33655579e-02f, 3.62622051e-02f, 3.88473226e-02f, + 4.11002204e-02f, 4.30030300e-02f, 4.45408790e-02f, 4.57019705e-02f, 4.64777109e-02f, 4.68627135e-02f, + 4.68549093e-02f, 4.64554958e-02f, 4.56689373e-02f, 4.45029599e-02f, 4.29683919e-02f, 4.10791386e-02f, + 3.88520159e-02f, 3.63066475e-02f, 3.34652385e-02f, 3.03523892e-02f, 2.69949681e-02f, 2.34217263e-02f, + 1.96632025e-02f, 1.57513974e-02f, 1.17194459e-02f, 7.60145677e-03f, 3.43215481e-03f, -7.53454950e-04f, + -4.92025229e-03f, -9.03345904e-03f, -1.30587503e-02f, -1.69627406e-02f, -2.07130441e-02f, -2.42787472e-02f, + -2.76304969e-02f, -3.07408842e-02f, -3.35845310e-02f, -3.61384026e-02f, -3.83819804e-02f, -4.02973364e-02f, + -4.18693911e-02f, -4.30859849e-02f, -4.39379525e-02f, -4.44192202e-02f, -4.45268207e-02f, -4.42609489e-02f, + -4.36249417e-02f, -4.26251693e-02f, -4.12710965e-02f, -3.95751119e-02f, -3.75524034e-02f, -3.52209020e-02f, + -3.26010732e-02f, -2.97156826e-02f, -2.65897306e-02f, -2.32501339e-02f, -1.97255230e-02f, -1.60459906e-02f, + -1.22428645e-02f, -8.34840613e-03f, -4.39555788e-03f, -4.17641093e-04f, 3.55186529e-03f, 7.47969548e-03f, + 1.13330289e-02f, 1.50796895e-02f, 1.86886063e-02f, 2.21298440e-02f, 2.53750227e-02f, 2.83974776e-02f, + 3.11724713e-02f, 3.36774564e-02f, 3.58921485e-02f, 3.77988281e-02f, 3.93823848e-02f, 4.06304645e-02f, + 4.15335460e-02f, 4.20850895e-02f, 4.22814530e-02f, 4.21220657e-02f, 4.16092724e-02f, 4.07484568e-02f, + 3.95478256e-02f, 3.80185099e-02f, 3.61742882e-02f, 3.40316228e-02f, 3.16093467e-02f, 2.89286854e-02f, + 2.60129143e-02f, 2.28872072e-02f, 1.95785162e-02f, 1.61151429e-02f, 1.25266872e-02f, 8.84367289e-03f, + 5.09737541e-03f, 1.31946573e-03f, -2.45819207e-03f, -6.20382907e-03f, -9.88599514e-03f, -1.34739714e-02f, + -1.69377975e-02f, -2.02487225e-02f, -2.33793144e-02f, -2.63038233e-02f, -2.89981802e-02f, -3.14404213e-02f, + -3.36107546e-02f, -3.54916723e-02f, -3.70682427e-02f, -3.83280672e-02f, -3.92614736e-02f, -3.98615776e-02f, + -4.01243243e-02f, -4.00484517e-02f, -3.96356708e-02f, -3.88903731e-02f, -3.78198781e-02f, -3.64341365e-02f, + -3.47457457e-02f, -3.27698392e-02f, -3.05238882e-02f, -2.80276282e-02f, -2.53028218e-02f, -2.23730957e-02f, + -1.92637467e-02f, -1.60015029e-02f, -1.26142882e-02f, -9.13104283e-03f, -5.58138981e-03f, -1.99542434e-03f, + 1.59649307e-03f, 5.16408174e-03f, 8.67737144e-03f, 1.21068581e-02f, 1.54239205e-02f, 1.86009100e-02f, + 2.16114772e-02f, 2.44306994e-02f, 2.70354163e-02f, 2.94042665e-02f, 3.15179985e-02f, 3.33595356e-02f, + 3.49141593e-02f, 3.61696229e-02f, 3.71161871e-02f, 3.77468512e-02f, 3.80571878e-02f, 3.80455485e-02f, + 3.77129900e-02f, 3.70632810e-02f, 3.61028508e-02f, 3.48407199e-02f, 3.32884428e-02f, 3.14600053e-02f, + 2.93716228e-02f, 2.70417408e-02f, 2.44907277e-02f, 2.17407576e-02f, 1.88156734e-02f, 1.57406803e-02f, + 1.25421761e-02f, 9.24754692e-03f, 5.88488640e-03f, 2.48280587e-03f, -9.29864758e-04f, -4.32426314e-03f, + -7.67179184e-03f, -1.09442952e-02f, -1.41143886e-02f, -1.71555974e-02f, -2.00425787e-02f, -2.27514891e-02f, + -2.52599054e-02f, -2.75472706e-02f, -2.95949315e-02f, -3.13863062e-02f, -3.29069832e-02f, -3.41450096e-02f, + -3.50907101e-02f, -3.57369992e-02f, -3.60793163e-02f, -3.61156751e-02f, -3.58467080e-02f, -3.52755740e-02f, + -3.44080617e-02f, -3.32523628e-02f, -3.18191314e-02f, -3.01213186e-02f, -2.81740846e-02f, -2.59946393e-02f, + -2.36021125e-02f, -2.10173975e-02f, -1.82629132e-02f, -1.53624700e-02f, -1.23410560e-02f, -9.22456599e-03f, + -6.03967755e-03f, -2.81350877e-03f, 4.26514319e-04f, 3.65292660e-03f, 6.83848944e-03f, 9.95638508e-03f, + 1.29804234e-02f, 1.58853076e-02f, 1.86468203e-02f, 2.12420277e-02f, 2.36494909e-02f, 2.58493792e-02f, + 2.78237450e-02f, 2.95565060e-02f, 3.10338053e-02f, 3.22438572e-02f, 3.31772716e-02f, 3.38269627e-02f, + 3.41883176e-02f, 3.42591610e-02f, 3.40397435e-02f, 3.35328606e-02f, 3.27436351e-02f, 3.16796573e-02f, + 3.03507246e-02f, 2.87689689e-02f, 2.69484839e-02f, 2.49054827e-02f, 2.26579086e-02f, 2.02254442e-02f, + 1.76292617e-02f, 1.48918382e-02f, 1.20368159e-02f, 9.08872468e-03f, 6.07283273e-03f, 3.01489838e-03f, + -5.90212194e-05f, -3.12287666e-03f, -6.15069532e-03f, -9.11695091e-03f, -1.19967033e-02f, -1.47657868e-02f, + -1.74011004e-02f, -1.98807214e-02f, -2.21841025e-02f, -2.42922632e-02f, -2.61879368e-02f, -2.78557311e-02f, + -2.92821801e-02f, -3.04559562e-02f, -3.13678907e-02f, -3.20110632e-02f, -3.23808087e-02f, -3.24749193e-02f, + -3.22933847e-02f, -3.18386269e-02f, -3.11153366e-02f, -3.01304804e-02f, -2.88932552e-02f, -2.74148734e-02f, + -2.57086673e-02f, -2.37898314e-02f, -2.16752343e-02f, -1.93835013e-02f, -1.69345799e-02f, -1.43497284e-02f, + -1.16513243e-02f, -8.86259097e-03f, -6.00748525e-03f, -3.11044903e-03f, -1.96143386e-04f, 2.71056658e-03f, + 5.58512222e-03f, 8.40318833e-03f, 1.11410160e-02f, 1.37756382e-02f, 1.62850338e-02f, 1.86482666e-02f, + 2.08457445e-02f, 2.28593437e-02f, 2.46725329e-02f, 2.62705694e-02f, 2.76405329e-02f, 2.87715470e-02f, + 2.96547092e-02f, 3.02833419e-02f, 3.06529059e-02f, 3.07610441e-02f, 3.06076742e-02f, 3.01949567e-02f, + 2.95271502e-02f, 2.86107876e-02f, 2.74543883e-02f, 2.60685701e-02f, 2.44657863e-02f, 2.26603655e-02f, + 2.06682557e-02f, 1.85070033e-02f, 1.61954603e-02f, 1.37537720e-02f, 1.12030588e-02f, 8.56537064e-03f, + 5.86336215e-03f, 3.12021752e-03f, 3.59345288e-04f, -2.39571357e-03f, -5.12158252e-03f, -7.79518527e-03f, + -1.03939536e-02f, -1.28961026e-02f, -1.52805838e-02f, -1.75275761e-02f, -1.96183935e-02f, -2.15357712e-02f, + -2.32639542e-02f, -2.47888545e-02f, -2.60981899e-02f, -2.71814567e-02f, -2.80302370e-02f, -2.86380088e-02f, + -2.90003996e-02f, -2.91151172e-02f, -2.89819544e-02f, -2.86028697e-02f, -2.79818317e-02f, -2.71249297e-02f, + -2.60401957e-02f, -2.47375751e-02f, -2.32288414e-02f, -2.15275091e-02f, -1.96486443e-02f, -1.76087964e-02f, + -1.54258426e-02f, -1.31187994e-02f, -1.07076937e-02f, -8.21335282e-03f, -5.65730582e-03f, -3.06143405e-03f, + -4.47990175e-04f, 2.16074548e-03f, 4.74260737e-03f, 7.27569124e-03f, 9.73864733e-03f, 1.21106824e-02f, + 1.43719841e-02f, 1.65036001e-02f, 1.84878471e-02f, 2.03083286e-02f, 2.19500531e-02f, 2.33996493e-02f, + 2.46453861e-02f, 2.56773512e-02f, 2.64874345e-02f, 2.70694463e-02f, 2.74192279e-02f, 2.75344951e-02f, + 2.74150667e-02f, 2.70627089e-02f, 2.64811913e-02f, 2.56761950e-02f, 2.46553112e-02f, 2.34279326e-02f, + 2.20051823e-02f, 2.03998041e-02f, 1.86260730e-02f, 1.66996483e-02f, 1.46373888e-02f, 1.24573628e-02f, + 1.01784699e-02f, 7.82046099e-03f, 5.40366356e-03f, 2.94886537e-03f, 4.77074685e-04f, -1.99056008e-03f, + -4.43309957e-03f, -6.82975366e-03f, -9.16032780e-03f, -1.14051392e-02f, -1.35453571e-02f, -1.55631186e-02f, + -1.74416221e-02f, -1.91653203e-02f, -2.07200521e-02f, -2.20931290e-02f, -2.32734389e-02f, -2.42515770e-02f, + -2.50198790e-02f, -2.55724740e-02f, -2.59053977e-02f, -2.60165073e-02f, -2.59056121e-02f, -2.55744100e-02f, + -2.50263861e-02f, -2.42670139e-02f, -2.33034172e-02f, -2.21444752e-02f, -2.08007704e-02f, -1.92843016e-02f, + -1.76086143e-02f, -1.57885066e-02f, -1.38399632e-02f, -1.17800468e-02f, -9.62665505e-03f, -7.39846180e-03f, + -5.11473979e-03f, -2.79509520e-03f, -4.59475153e-04f, 1.87219411e-03f, 4.18004886e-03f, 6.44446028e-03f, + 8.64630036e-03f, 1.07670050e-02f, 1.27887263e-02f, 1.46946183e-02f, 1.64687696e-02f, 1.80965074e-02f, + 1.95644657e-02f, 2.08606409e-02f, 2.19745569e-02f, 2.28973400e-02f, 2.36217678e-02f, 2.41423032e-02f, + 2.44552329e-02f, 2.45585559e-02f, 2.44521268e-02f, 2.41375247e-02f, 2.36181843e-02f, 2.28991883e-02f, + 2.19873596e-02f, 2.08911372e-02f, 1.96204854e-02f, 1.81868423e-02f, 1.66029686e-02f, 1.48829260e-02f, + 1.30418196e-02f, 1.10957823e-02f, 9.06176569e-03f, 6.95742371e-03f, 4.80095797e-03f, 2.61094572e-03f, + 4.06163422e-04f, -1.79448120e-03f, -3.97227507e-03f, -6.10867089e-03f, -8.18559133e-03f, -1.01855447e-02f, + -1.20916775e-02f, -1.38880736e-02f, -1.55597947e-02f, -1.70929424e-02f, -1.84749792e-02f, -1.96945768e-02f, + -2.07419008e-02f, -2.16086011e-02f, -2.22879060e-02f, -2.27746496e-02f, -2.30653527e-02f, -2.31582122e-02f, + -2.30530853e-02f, -2.27516002e-02f, -2.22569518e-02f, -2.15740851e-02f, -2.07094459e-02f, -1.96710504e-02f, + -1.84683607e-02f, -1.71122258e-02f, -1.56147530e-02f, -1.39891960e-02f, -1.22499260e-02f, -1.04121226e-02f, + -8.49187069e-03f, -6.50583812e-03f, -4.47121574e-03f, -2.40553061e-03f, -3.26560349e-04f, 1.74792849e-03f, + 3.80020986e-03f, 5.81284812e-03f, 7.76878436e-03f, 9.65152189e-03f, 1.14452321e-02f, 1.31348903e-02f, + 1.47064602e-02f, 1.61469015e-02f, 1.74443880e-02f, 1.85883329e-02f, 1.95694960e-02f, 2.03800747e-02f, + 2.10137416e-02f, 2.14657028e-02f, 2.17327470e-02f, 2.18132189e-02f, 2.17071096e-02f, 2.14159688e-02f, + 2.09429396e-02f, 2.02927056e-02f, 1.94714591e-02f, 1.84867806e-02f, 1.73476996e-02f, 1.60644888e-02f, + 1.46486021e-02f, 1.31126305e-02f, 1.14700918e-02f, 9.73543186e-03f, 7.92379251e-03f, 6.05090462e-03f, + 4.13301608e-03f, 2.18669055e-03f, 2.28581333e-04f, -1.72441072e-03f, -3.65572200e-03f, -5.54887990e-03f, + -7.38782061e-03f, -9.15706782e-03f, -1.08417082e-02f, -1.24276657e-02f, -1.39017311e-02f, -1.52516970e-02f, + -1.64664949e-02f, -1.75361817e-02f, -1.84521823e-02f, -1.92071599e-02f, -1.97953056e-02f, -2.02121243e-02f, + -2.04547147e-02f, -2.05216098e-02f, -2.04128534e-02f, -2.01300439e-02f, -1.96761990e-02f, -1.90558123e-02f, + -1.82748056e-02f, -1.73404276e-02f, -1.62612067e-02f, -1.50469098e-02f, -1.37084115e-02f, -1.22575769e-02f, + -1.07072432e-02f, -9.07102930e-03f, -7.36320826e-03f, -5.59869147e-03f, -3.79270806e-03f, -1.96092013e-03f, + -1.19027325e-04f, 1.71713152e-03f, 3.53191747e-03f, 5.30986343e-03f, 7.03590331e-03f, 8.69547560e-03f, + 1.02746006e-02f, 1.17601122e-02f, 1.31396009e-02f, 1.44016653e-02f, 1.55359973e-02f, 1.65332483e-02f, + 1.73855033e-02f, 1.80859434e-02f, 1.86291305e-02f, 1.90110277e-02f, 1.92289384e-02f, 1.92815880e-02f, + 1.91691688e-02f, 1.88932135e-02f, 1.84567183e-02f, 1.78639790e-02f, 1.71206377e-02f, 1.62336473e-02f, + 1.52110920e-02f, 1.40622274e-02f, 1.27973510e-02f, 1.14277163e-02f, 9.96541843e-03f, 8.42333112e-03f, + 6.81491991e-03f, 5.15420944e-03f, 3.45559138e-03f, 1.73374462e-03f, 3.49154958e-06f, -1.72033182e-03f, + -3.42300908e-03f, -5.09002877e-03f, -6.70728983e-03f, -8.26110592e-03f, -9.73843101e-03f, -1.11269177e-02f, + -1.24149972e-02f, -1.35920411e-02f, -1.46483675e-02f, -1.55754162e-02f, -1.63657097e-02f, -1.70130158e-02f, + -1.75123254e-02f, -1.78599156e-02f, -1.80533642e-02f, -1.80916471e-02f, -1.79749596e-02f, -1.77049199e-02f, + -1.72844059e-02f, -1.67175734e-02f, -1.60098348e-02f, -1.51677846e-02f, -1.41991369e-02f, -1.31126308e-02f, + -1.19180614e-02f, -1.06260158e-02f, -9.24795820e-03f, -7.79599691e-03f, -6.28282689e-03f, -4.72166017e-03f, + -3.12602130e-03f, -1.50971188e-03f, 1.13358008e-04f, 1.72924640e-03f, 3.32419869e-03f, 4.88457483e-03f, + 6.39719332e-03f, 7.84928507e-03f, 9.22860374e-03f, 1.05236737e-02f, 1.17237027e-02f, 1.28187631e-02f, + 1.37999219e-02f, 1.46591627e-02f, 1.53896448e-02f, 1.59855771e-02f, 1.64423748e-02f, 1.67566705e-02f, + 1.69263151e-02f, 1.69504088e-02f, 1.68293192e-02f, 1.65646048e-02f, 1.61591292e-02f, 1.56168830e-02f, + 1.49430466e-02f, 1.41438870e-02f, 1.32267343e-02f, 1.21999194e-02f, 1.10726150e-02f, 9.85491162e-03f, + 8.55755480e-03f, 7.19198626e-03f, 5.77013714e-03f, 4.30443841e-03f, 2.80758857e-03f, 1.29252809e-03f, + -2.27683018e-04f, -1.74000213e-03f, -3.23153173e-03f, -4.68956247e-03f, -6.10171563e-03f, -7.45612506e-03f, + -8.74136426e-03f, -9.94672023e-03f, -1.10621909e-02f, -1.20785406e-02f, -1.29874795e-02f, -1.37816456e-02f, + -1.44546479e-02f, -1.50012468e-02f, -1.54172106e-02f, -1.56995155e-02f, -1.58462779e-02f, -1.58567437e-02f, + -1.57313825e-02f, -1.54717967e-02f, -1.50807184e-02f, -1.45620705e-02f, -1.39207297e-02f, -1.31627253e-02f, + -1.22950111e-02f, -1.13254027e-02f, -1.02626834e-02f, -9.11627932e-03f, -7.89634415e-03f, -6.61364765e-03f, + -5.27939952e-03f, -3.90525708e-03f, -2.50314317e-03f, -1.08517576e-03f, 3.36418391e-04f, 1.74945190e-03f, + 3.14186033e-03f, 4.50178261e-03f, 5.81769448e-03f, 7.07851939e-03f, 8.27365386e-03f, 9.39310326e-03f, + 1.04276320e-02f, 1.13686527e-02f, 1.22085379e-02f, 1.29404450e-02f, 1.35585678e-02f, 1.40580446e-02f, + 1.44350939e-02f, 1.46869568e-02f, 1.48120098e-02f, 1.48096348e-02f, 1.46804295e-02f, 1.44259781e-02f, + 1.40489668e-02f, 1.35531325e-02f, 1.29432014e-02f, 1.22248563e-02f, 1.14046959e-02f, 1.04901687e-02f, + 9.48948107e-03f, 8.41156632e-03f, 7.26596347e-03f, 6.06280447e-03f, 4.81257444e-03f, 3.52622627e-03f, + 2.21492506e-03f, 8.89983592e-04f, -4.37153812e-04f, -1.75513167e-03f, -3.05265494e-03f, -4.31872834e-03f, + -5.54261874e-03f, -6.71396264e-03f, -7.82302244e-03f, -8.86045250e-03f, -9.81773278e-03f, -1.06869351e-02f, + -1.14610023e-02f, -1.21336754e-02f, -1.26995953e-02f, -1.31543908e-02f, -1.34945718e-02f, -1.37177266e-02f, + -1.38224110e-02f, -1.38082286e-02f, -1.36757739e-02f, -1.34266887e-02f, -1.30635886e-02f, -1.25900369e-02f, + -1.20105709e-02f, -1.13305978e-02f, -1.05563538e-02f, -9.69485926e-03f, -8.75389081e-03f, -7.74181164e-03f, + -6.66761679e-03f, -5.54076187e-03f, -4.37111830e-03f, -3.16893052e-03f, -1.94457115e-03f, -7.08705149e-04f, + 5.28079290e-04f, 1.75515870e-03f, 2.96204304e-03f, 4.13848585e-03f, 5.27451557e-03f, 6.36060039e-03f, + 7.38755863e-03f, 8.34692530e-03f, 9.23070802e-03f, 1.00316534e-02f, 1.07432528e-02f, 1.13597680e-02f, + 1.18763350e-02f, 1.22889283e-02f, 1.25944631e-02f, 1.27907515e-02f, 1.28765994e-02f, 1.28517102e-02f, + 1.27167966e-02f, 1.24734480e-02f, 1.21242371e-02f, 1.16725839e-02f, 1.11228281e-02f, 1.04800592e-02f, + 9.75022575e-03f, 8.93990424e-03f, 8.05644990e-03f, 7.10768601e-03f, 6.10205625e-03f, 5.04843878e-03f, + 3.95605458e-03f, 2.83441418e-03f, 1.69331277e-03f, 5.42568186e-04f, -6.07877124e-04f, -1.74818575e-03f, + -2.86860405e-03f, -3.95962685e-03f, -5.01201657e-03f, -6.01690058e-03f, -6.96589716e-03f, -7.85110424e-03f, + -8.66518231e-03f, -9.40145619e-03f, -1.00540095e-02f, -1.06175123e-02f, -1.10876024e-02f, -1.14606062e-02f, + -1.17337519e-02f, -1.19051415e-02f, -1.19737311e-02f, -1.19393909e-02f, -1.18028751e-02f, -1.15657387e-02f, + -1.12305357e-02f, -1.08005049e-02f, -1.02797519e-02f, -9.67318729e-03f, -8.98632838e-03f, -8.22543877e-03f, + -7.39737215e-03f, -6.50950785e-03f, -5.56975395e-03f, -4.58632875e-03f, -3.56792674e-03f, -2.52340823e-03f, + -1.46183597e-03f, -3.92391156e-04f, 6.75701684e-04f, 1.73331709e-03f, 2.77141530e-03f, 3.78118353e-03f, + 4.75407672e-03f, 5.68193005e-03f, 6.55698994e-03f, 7.37195674e-03f, 8.12013345e-03f, 8.79539509e-03f, + 9.39225030e-03f, 9.90597190e-03f, 1.03324819e-02f, 1.06685242e-02f, 1.09116177e-02f, 1.10600973e-02f, + 1.11130936e-02f, 1.10705983e-02f, 1.09333788e-02f, 1.07030445e-02f, 1.03819949e-02f, 9.97335332e-03f, + 9.48107464e-03f, 8.90968434e-03f, 8.26449756e-03f, 7.55132972e-03f, 6.77664458e-03f, 5.94731079e-03f, + 5.07073939e-03f, 4.15462520e-03f, 3.20700306e-03f, 2.23616222e-03f, 1.25050340e-03f, 2.58592562e-04f, + -7.31105992e-04f, -1.71003848e-03f, -2.66991104e-03f, -3.60254805e-03f, -4.50009626e-03f, -5.35500152e-03f, + -6.16013372e-03f, -6.90880302e-03f, -7.59484887e-03f, -8.21267759e-03f, -8.75730297e-03f, -9.22437062e-03f, + -9.61022818e-03f, -9.91196266e-03f, -1.01273334e-02f, -1.02549146e-02f, -1.02939949e-02f, -1.02446487e-02f, + -1.01077102e-02f, -9.88473930e-03f, -9.57804506e-03f, -9.19065219e-03f, -8.72623997e-03f, -8.18914967e-03f, + -7.58431711e-03f, -6.91725624e-03f, -6.19393169e-03f, -5.42085678e-03f, -4.60486090e-03f, -3.75314479e-03f, + -2.87318400e-03f, -1.97263669e-03f, -1.05936420e-03f, -1.41184633e-04f, 7.73935206e-04f, 1.67818033e-03f, + 2.56387121e-03f, 3.42348245e-03f, 4.24972968e-03f, 5.03575853e-03f, 5.77493594e-03f, 6.46117800e-03f, + 7.08885263e-03f, 7.65282423e-03f, 8.14856911e-03f, 8.57214716e-03f, 8.92027019e-03f, 9.19029194e-03f, + 9.38027470e-03f, 9.48895025e-03f, 9.51578399e-03f, 9.46091429e-03f, 9.32518284e-03f, 9.11016180e-03f, + 8.81806173e-03f, 8.45171440e-03f, 8.01466407e-03f, 7.51094572e-03f, 6.94521826e-03f, 6.32261691e-03f, + 5.64875255e-03f, 4.92963671e-03f, 4.17165548e-03f, 3.38149573e-03f, 2.56610069e-03f, 1.73253154e-03f, + 8.88083719e-04f, 4.00140997e-05f, -8.04377007e-04f, -1.63786496e-03f, -2.45336348e-03f, -3.24394120e-03f, + -4.00297149e-03f, -4.72406012e-03f, -5.40122825e-03f, -6.02886353e-03f, -6.60184564e-03f, -7.11547043e-03f, + -7.56567204e-03f, -7.94886879e-03f, -8.26207948e-03f, -8.50298133e-03f, -8.66984745e-03f, -8.76158174e-03f, + -8.77778600e-03f, -8.71866903e-03f, -8.58510255e-03f, -8.37858953e-03f, -8.10125332e-03f, -7.75580633e-03f, + -7.34555568e-03f, -6.87431135e-03f, -6.34642360e-03f, -5.76669768e-03f, -5.14031767e-03f, -4.47294897e-03f, + -3.77043291e-03f, -3.03903272e-03f, -2.28511456e-03f, -1.51527024e-03f, -7.36178447e-04f, 4.54225562e-05f, + 8.22859022e-04f, 1.58943109e-03f, 2.33866278e-03f, 3.06420334e-03f, 3.75990680e-03f, 4.42002538e-03f, + 5.03901750e-03f, 5.61180111e-03f, 6.13366220e-03f, 6.60043272e-03f, 7.00831931e-03f, 7.35414500e-03f, + 7.63524392e-03f, 7.84953557e-03f, 7.99547645e-03f, 8.07218955e-03f, 8.07933095e-03f, 8.01721906e-03f, + 7.88666864e-03f, 7.68919343e-03f, 7.42679720e-03f, 7.10202788e-03f, 6.71802523e-03f, 6.27832934e-03f, + 5.78702253e-03f, 5.24853339e-03f, 4.66776048e-03f, 4.04985033e-03f, 3.40032055e-03f, 2.72486114e-03f, + 2.02943382e-03f, 1.32005555e-03f, 6.02922229e-04f, -1.15810889e-04f, -8.29962401e-04f, -1.53344695e-03f, + -2.22024937e-03f, -2.88460828e-03f, -3.52090915e-03f, -4.12386103e-03f, -4.68844782e-03f, -5.21000854e-03f, + -5.68433641e-03f, -6.10753890e-03f, -6.47629357e-03f, -6.78770430e-03f, -7.03936807e-03f, -7.22944790e-03f, + -7.35662441e-03f, -7.42012069e-03f, -7.41971164e-03f, -7.35573757e-03f, -7.22905724e-03f, -7.04107429e-03f, + -6.79370122e-03f, -6.48940038e-03f, -6.13102314e-03f, -5.72192873e-03f, -5.26590521e-03f, -4.76707464e-03f, + -4.22993214e-03f, -3.65930825e-03f, -3.06022345e-03f, -2.43797793e-03f, -1.79803310e-03f, -1.14594988e-03f, + -4.87389180e-04f, 1.71985886e-04f, 8.26505744e-04f, 1.47057292e-03f, 2.09875564e-03f, 2.70572827e-03f, + 3.28638788e-03f, 3.83592350e-03f, 4.34975506e-03f, 4.82368759e-03f, 5.25383132e-03f, 5.63677359e-03f, + 5.96942535e-03f, 6.24924092e-03f, 6.47405650e-03f, 6.64226721e-03f, 6.75269253e-03f, 6.80469430e-03f, + 6.79815717e-03f, 6.73340631e-03f, 6.61130455e-03f, 6.43322863e-03f, 6.20094526e-03f, 5.91677710e-03f, + 5.58340169e-03f, 5.20393196e-03f, 4.78187614e-03f, 4.32106320e-03f, 3.82565711e-03f, 3.30005613e-03f, + 2.74895362e-03f, 2.17719303e-03f, 1.58978015e-03f, 9.91844057e-04f, 3.88540330e-04f, -2.14916878e-04f, + -8.13361192e-04f, -1.40168257e-03f, -1.97489740e-03f, -2.52818059e-03f, -3.05688539e-03f, -3.55662656e-03f, + -4.02326574e-03f, -4.45296958e-03f, -4.84228652e-03f, -5.18803438e-03f, -5.48755315e-03f, -5.73848611e-03f, + -5.93891991e-03f, -6.08745626e-03f, -6.18305471e-03f, -6.22520840e-03f, -6.21382472e-03f, -6.14928419e-03f, + -6.03244633e-03f, -5.86455879e-03f, -5.64736180e-03f, -5.38296537e-03f, -5.07389363e-03f, -4.72301916e-03f, + -4.33361321e-03f, -3.90915761e-03f, -3.45353173e-03f, -2.97077347e-03f, -2.46516689e-03f, -1.94119584e-03f, + -1.40340595e-03f, -8.56512644e-04f, -3.05232133e-04f, 2.45691031e-04f, 7.91538060e-04f, 1.32763724e-03f, + 1.84949345e-03f, 2.35267547e-03f, 2.83299113e-03f, 3.28645035e-03f, 3.70931698e-03f, 4.09812665e-03f, + 4.44973511e-03f, 4.76135341e-03f, 5.03050354e-03f, 5.25513155e-03f, 5.43353323e-03f, 5.56447821e-03f, + 5.64705544e-03f, 5.68083601e-03f, 5.66583437e-03f, 5.60238431e-03f, 5.49135375e-03f, 5.33391723e-03f, + 5.13169207e-03f, 4.88664671e-03f, 4.60113202e-03f, 4.27780860e-03f, 3.91964875e-03f, 3.52989866e-03f, + 3.11212090e-03f, 2.66999053e-03f, 2.20744344e-03f, 1.72859110e-03f, 1.23756351e-03f, 7.38678150e-04f, + 2.36236760e-04f, -2.65462378e-04f, -7.62072815e-04f, -1.24943395e-03f, -1.72337956e-03f, -2.17993754e-03f, + -2.61530935e-03f, -3.02588421e-03f, -3.40825196e-03f, -3.75935360e-03f, -4.07630652e-03f, -4.35660760e-03f, + -4.59808398e-03f, -4.79883718e-03f, -4.95743843e-03f, -5.07271280e-03f, -5.14393833e-03f, -5.17077608e-03f, + -5.15318763e-03f, -5.09164480e-03f, -4.98686807e-03f, -4.84002285e-03f, -4.65260103e-03f, -4.42642977e-03f, + -4.16366446e-03f, -3.86678300e-03f, -3.53847751e-03f, -3.18177292e-03f, -2.79986847e-03f, -2.39618401e-03f, + -1.97429017e-03f, -1.53788782e-03f, -1.09083664e-03f, -6.36973406e-04f, -1.80264329e-04f, 2.75399352e-04f, + 7.26104424e-04f, 1.16802598e-03f, 1.59744046e-03f, 2.01073128e-03f, 2.40446819e-03f, 2.77538562e-03f, + 3.12044615e-03f, 3.43683203e-03f, 3.72202393e-03f, 3.97374850e-03f, 4.19002854e-03f, 4.36925418e-03f, + 4.51006070e-03f, 4.61152219e-03f, 4.67293053e-03f, 4.69404975e-03f, 4.67490366e-03f, 4.61589307e-03f, + 4.51775252e-03f, 4.38154991e-03f, 4.20868532e-03f, 4.00082377e-03f, 3.75997274e-03f, 3.48836415e-03f, + 3.18851504e-03f, 2.86314343e-03f, 2.51519536e-03f, 2.14776743e-03f, 1.76411750e-03f, 1.36763070e-03f, + 9.61751835e-04f, 5.50052405e-04f, 1.36015058e-04f, -2.76720943e-04f, -6.84698152e-04f, -1.08442387e-03f, + -1.47253691e-03f, -1.84578853e-03f, -2.20105818e-03f, -2.53544188e-03f, -2.84616998e-03f, -3.13076058e-03f, + -3.38689733e-03f, -3.61260297e-03f, -3.80606518e-03f, -3.96589267e-03f, -4.09087232e-03f, -4.18013173e-03f, + -4.23315965e-03f, -4.24970953e-03f, -4.22981560e-03f, -4.17392494e-03f, -4.08267808e-03f, -3.95709577e-03f, + -3.79845153e-03f, -3.60829670e-03f, -3.38844338e-03f, -3.14094669e-03f, -2.86809742e-03f, -2.57237442e-03f, + -2.25643831e-03f, -1.92312165e-03f, -1.57535841e-03f, -1.21624129e-03f, -8.48868370e-04f, -4.76457354e-04f, + -1.02227062e-04f, 2.70659894e-04f, 6.38948957e-04f, 9.99596773e-04f, 1.34950884e-03f, 1.68579412e-03f, + 2.00565112e-03f, 2.30644176e-03f, 2.58570970e-03f, 2.84121989e-03f, 3.07087670e-03f, 3.27296771e-03f, + 3.44584695e-03f, 3.58825627e-03f, 3.69915439e-03f, 3.77779535e-03f, 3.82369144e-03f, 3.83666312e-03f, + 3.81678507e-03f, 3.76444486e-03f, 3.68027755e-03f, 3.56519883e-03f, 3.42038694e-03f, 3.24725992e-03f, + 3.04745181e-03f, 2.82287635e-03f, 2.57555610e-03f, 2.30778342e-03f, 2.02193938e-03f, 1.72060684e-03f, + 1.40642226e-03f, 1.08218540e-03f, 7.50708128e-04f, 4.14852040e-04f, 7.75468400e-05f, -2.58336678e-04f, + -5.89954675e-04f, -9.14464553e-04f, -1.22917409e-03f, -1.53142096e-03f, -1.81874942e-03f, -2.08875765e-03f, + -2.33925204e-03f, -2.56824046e-03f, -2.77387464e-03f, -2.95457151e-03f, -3.10891286e-03f, -3.23576957e-03f, + -3.33422309e-03f, -3.40361730e-03f, -3.44352432e-03f, -3.45380945e-03f, -3.43454926e-03f, -3.38612359e-03f, + -3.30910238e-03f, -3.20434413e-03f, -3.07289782e-03f, -2.91605448e-03f, -2.73534798e-03f, -2.53242439e-03f, + -2.30918427e-03f, -2.06766744e-03f, -1.81002532e-03f, -1.53857461e-03f, -1.25572213e-03f, -9.63956082e-04f, + -6.65804929e-04f, -3.63875198e-04f, -6.07622519e-05f, 2.40955893e-04f, 5.38685581e-04f, 8.29936911e-04f, + 1.11224977e-03f, 1.38328230e-03f, 1.64080028e-03f, 1.88265574e-03f, 2.10694670e-03f, 2.31181334e-03f, + 2.49567938e-03f, 2.65707799e-03f, 2.79477329e-03f, 2.90778929e-03f, 2.99526804e-03f, 3.05666792e-03f, + 3.09159989e-03f, 3.09996074e-03f, 3.08183486e-03f, 3.03757314e-03f, 2.96768997e-03f, 2.87296391e-03f, + 2.75438271e-03f, 2.61305979e-03f, 2.45041225e-03f, 2.26792371e-03f, 2.06728115e-03f, 1.85034398e-03f, + 1.61901728e-03f, 1.37543970e-03f, 1.12168235e-03f, 8.60048928e-04f, 5.92781787e-04f, 3.22217129e-04f, + 5.06437951e-05f, -2.19547817e-04f, -4.86132510e-04f, -7.46817210e-04f, -9.99443627e-04f, -1.24188233e-03f, + -1.47217245e-03f, -1.68839648e-03f, -1.88883105e-03f, -2.07184785e-03f, -2.23601745e-03f, -2.38006048e-03f, + -2.50288118e-03f, -2.60358292e-03f, -2.68144174e-03f, -2.73595307e-03f, -2.76679595e-03f, -2.77388624e-03f, + -2.75729794e-03f, -2.71735188e-03f, -2.65451985e-03f, -2.56952130e-03f, -2.46319204e-03f, -2.33660956e-03f, + -2.19096493e-03f, -2.02765268e-03f, -1.84815939e-03f, -1.65412932e-03f, -1.44731483e-03f, -1.22956426e-03f, + -1.00280075e-03f, -7.69022668e-04f, -5.30268510e-04f, -2.88586883e-04f, -4.60956253e-05f, 1.95186584e-04f, + 4.33161045e-04f, 6.65873263e-04f, 8.91328897e-04f, 1.10770620e-03f, 1.31316296e-03f, 1.50610067e-03f, + 1.68489795e-03f, 1.84814923e-03f, 1.99458512e-03f, 2.12304250e-03f, 2.23258384e-03f, 2.32237953e-03f, + 2.39181962e-03f, 2.44043032e-03f, 2.46796938e-03f, 2.47430968e-03f, 2.45957831e-03f, 2.42401283e-03f, + 2.36808884e-03f, 2.29238471e-03f, 2.19773378e-03f, 2.08501666e-03f, 1.95534528e-03f, 1.80993801e-03f, + 1.65014053e-03f, 1.47739854e-03f, 1.29329221e-03f, 1.09944593e-03f, 8.97596290e-04f, 6.89486470e-04f, + 4.76967544e-04f, 2.61847472e-04f, 4.59979030e-05f, -1.68770369e-04f, -3.80612759e-04f, -5.87744421e-04f, + -7.88452414e-04f, -9.81081718e-04f, -1.16402219e-03f, -1.33580811e-03f, -1.49504859e-03f, -1.64047131e-03f, + -1.77095587e-03f, -1.88548340e-03f, -1.98318254e-03f, -2.06335667e-03f, -2.12544333e-03f, -2.16903096e-03f, + -2.19389731e-03f, -2.19994674e-03f, -2.18726700e-03f, -2.15609170e-03f, -2.10683457e-03f, -2.04002290e-03f, + -1.95633800e-03f, -1.85665258e-03f, -1.74189023e-03f, -1.61313165e-03f, -1.47159921e-03f, -1.31856217e-03f, + -1.15541374e-03f, -9.83590913e-04f, -8.04645529e-04f, -6.20138811e-04f, -4.31664744e-04f, -2.40859759e-04f, + -4.93718861e-05f, 1.41183920e-04f, 3.29184443e-04f, 5.13049545e-04f, 6.91252710e-04f, 8.62329668e-04f, + 1.02486089e-03f, 1.17753306e-03f, 1.31912530e-03f, 1.44851584e-03f, 1.56468190e-03f, 1.66675270e-03f, + 1.75393226e-03f, 1.82562545e-03f, 1.88129935e-03f, 1.92062935e-03f, 1.94336360e-03f, 1.94946381e-03f, + 1.93898469e-03f, 1.91211060e-03f, 1.86925265e-03f, 1.81081128e-03f, 1.73745800e-03f, 1.64989979e-03f, + 1.54896085e-03f, 1.43565148e-03f, 1.31095906e-03f, 1.17607031e-03f, 1.03219054e-03f, 8.80596006e-04f, + 7.22634695e-04f, 5.59715925e-04f, 3.93223384e-04f, 2.24602808e-04f, 5.53223372e-05f, -1.13204206e-04f, + -2.79527886e-04f, -4.42273875e-04f, -6.00090187e-04f, -7.51646708e-04f, -8.95738714e-04f, -1.03117771e-03f, + -1.15687770e-03f, -1.27187587e-03f, -1.37523688e-03f, -1.46618576e-03f, -1.54403989e-03f, -1.60825931e-03f, + -1.65836399e-03f, -1.69405240e-03f, -1.71514183e-03f, -1.72154028e-03f, -1.71331327e-03f, -1.69063272e-03f, + -1.65381037e-03f, -1.60326168e-03f, -1.53948863e-03f, -1.46318779e-03f, -1.37503217e-03f, -1.27591969e-03f, + -1.16672308e-03f, -1.04846883e-03f, -9.22232848e-04f, -7.89108246e-04f, -6.50329911e-04f, -5.07057241e-04f, + -3.60579584e-04f, -2.12138548e-04f, -6.30166060e-05f, 8.55107333e-05f, 2.32212191e-04f, 3.75851456e-04f, + 5.15213418e-04f, 6.49182851e-04f, 7.76642588e-04f, 8.96585347e-04f, 1.00803198e-03f, 1.11010987e-03f, + 1.20203475e-03f, 1.28308439e-03f, 1.35268783e-03f, 1.41030687e-03f, 1.45558664e-03f, 1.48819124e-03f, + 1.50798717e-03f, 1.51486502e-03f, 1.50888467e-03f, 1.49022209e-03f, 1.45906012e-03f, 1.41583581e-03f, + 1.36095722e-03f, 1.29499749e-03f, 1.21859138e-03f, 1.13249419e-03f, 1.03745344e-03f, 9.34384957e-04f, + 8.24209226e-04f, 7.07921644e-04f, 5.86535461e-04f, 4.61118668e-04f, 3.32797940e-04f, 2.02615430e-04f, + 7.17560319e-05f, -5.87215139e-05f, -1.87700771e-04f, -3.14093799e-04f, -4.36855019e-04f, -5.54982470e-04f, + -6.67514567e-04f, -7.73539543e-04f, -8.72216549e-04f, -9.62754726e-04f, -1.04446836e-03f, -1.11673823e-03f, + -1.17901020e-03f, -1.23084835e-03f, -1.27191263e-03f, -1.30189831e-03f, -1.32066941e-03f, -1.32816613e-03f, + -1.32437715e-03f, -1.30944714e-03f, -1.28360668e-03f, -1.24710492e-03f, -1.20038313e-03f, -1.14391116e-03f, + -1.07822250e-03f, -1.00394823e-03f, -9.21799577e-04f, -8.32520513e-04f, -7.36916195e-04f, -6.35853312e-04f, + -5.30218398e-04f, -4.20950684e-04f, -3.08981087e-04f, -1.95310152e-04f, -8.08721649e-05f, 3.33481785e-05f, + 1.46369769e-04f, 2.57271691e-04f, 3.65123878e-04f, 4.69053422e-04f, 5.68205019e-04f, 6.61777482e-04f, + 7.49035427e-04f, 8.29295760e-04f, 9.01919035e-04f, 9.66370937e-04f, 1.02218113e-03f, 1.06892877e-03f, + 1.10630552e-03f, 1.13406370e-03f, 1.15204451e-03f, 1.16019052e-03f, 1.15848806e-03f, 1.14706630e-03f, + 1.12606449e-03f, 1.09574589e-03f, 1.05645362e-03f, 1.00859266e-03f, 9.52601766e-04f, 8.89057609e-04f, + 8.18535938e-04f, 7.41697389e-04f, 6.59241262e-04f, 5.71884368e-04f, 4.80414698e-04f, 3.85677252e-04f, + 2.88406796e-04f, 1.89536836e-04f, 8.98491837e-05f, -9.79888746e-06f, -1.08531507e-04f, -2.05575498e-04f, + -3.00092231e-04f, -3.91327952e-04f, -4.78537671e-04f, -5.61003964e-04f, -6.38090388e-04f, -7.09209697e-04f, + -7.73747838e-04f, -8.31297964e-04f, -8.81364804e-04f, -9.23641236e-04f, -9.57793553e-04f, -9.83624619e-04f, + -1.00098424e-03f, -1.00979404e-03f, -1.01003977e-03f, -1.00180772e-03f, -9.85219816e-04f, -9.60506778e-04f, + -9.27905874e-04f, -8.87790902e-04f, -8.40553609e-04f, -7.86632276e-04f, -7.26559669e-04f, -6.60872173e-04f, + -5.90177860e-04f, -5.15099219e-04f, -4.36341554e-04f, -3.54526447e-04f, -2.70436804e-04f, -1.84757234e-04f, + -9.82406108e-05f, -1.16228429e-05f, 7.44116225e-05f, 1.59099493e-04f, 2.41739119e-04f, 3.21707034e-04f, + 3.98276352e-04f, 4.70887555e-04f, 5.38973046e-04f, 6.01940918e-04f, 6.59368174e-04f, 7.10783030e-04f, + 7.55802336e-04f, 7.94127086e-04f, 8.25478803e-04f, 8.49639386e-04f, 8.66487952e-04f, 8.75935969e-04f, + 8.77948893e-04f, 8.72611584e-04f, 8.59994515e-04f, 8.40271458e-04f, 8.13696181e-04f, 7.80491851e-04f, + 7.41053306e-04f, 6.95727202e-04f, 6.44936090e-04f, 5.89181503e-04f, 5.28946796e-04f, 4.64790448e-04f, + 3.97272420e-04f, 3.27000597e-04f, 2.54559578e-04f, 1.80597276e-04f, 1.05760446e-04f, 3.06209047e-05f, + -4.41172003e-05f, -1.17884760e-04f, -1.90032814e-04f, -2.60000039e-04f, -3.27213235e-04f, -3.91110007e-04f, + -4.51226928e-04f, -5.07042112e-04f, -5.58194586e-04f, -6.04189222e-04f, -6.44816381e-04f, -6.79653847e-04f, + -7.08557315e-04f, -7.31282579e-04f, -7.47702169e-04f, -7.57731688e-04f, -7.61359812e-04f, -7.58589885e-04f, + -7.49503361e-04f, -7.34226582e-04f, -7.12935677e-04f, -6.85882645e-04f, -6.53307567e-04f, -6.15569562e-04f, + -5.72978650e-04f, -5.25977418e-04f, -4.74963705e-04f, -4.20426590e-04f, -3.62819514e-04f, -3.02647353e-04f, + -2.40497241e-04f, -1.76810216e-04f, -1.12210871e-04f, -4.71976690e-05f, 1.76624641e-05f, 8.18440593e-05f, + 1.44804207e-04f, 2.06021410e-04f, 2.65025446e-04f, 3.21327783e-04f, 3.74487008e-04f, 4.24062432e-04f, + 4.69715655e-04f, 5.11042943e-04f, 5.47794530e-04f, 5.79655168e-04f, 6.06446384e-04f, 6.27934546e-04f, + 6.44010762e-04f, 6.54614698e-04f, 6.59636425e-04f, 6.59157826e-04f, 6.53158826e-04f, 6.41794049e-04f, + 6.25154916e-04f, 6.03470855e-04f, 5.76917242e-04f, 5.45789736e-04f, 5.10368292e-04f, 4.70998661e-04f, + 4.28021656e-04f, 3.81834126e-04f, 3.32863326e-04f, 2.81489629e-04f, 2.28231239e-04f, 1.73484261e-04f, + 1.17756607e-04f, 6.14881351e-05f, 5.17778269e-06f, -5.07352374e-05f, -1.05745987e-04f, -1.59454662e-04f, + -2.11394268e-04f, -2.61151905e-04f, -3.08351703e-04f, -3.52598590e-04f, -3.93545002e-04f, -4.30916147e-04f, + -4.64387406e-04f, -4.93756593e-04f, -5.18755281e-04f, -5.39265493e-04f, -5.55137934e-04f, -5.66259303e-04f, + -5.72606783e-04f, -5.74140344e-04f, -5.70903292e-04f, -5.62934741e-04f, -5.50388898e-04f, -5.33351962e-04f, + -5.12028510e-04f, -4.86612455e-04f, -4.57392981e-04f, -4.24578939e-04f, -3.88503808e-04f, -3.49487518e-04f, + -3.07895836e-04f, -2.64036522e-04f, -2.18356445e-04f, -1.71198300e-04f, -1.22998901e-04f, -7.41392080e-05f, + -2.50280393e-05f, 2.38852047e-05f, 7.22663332e-05f, 1.19659647e-04f, 1.65718806e-04f, 2.10055385e-04f, + 2.52324173e-04f, 2.92190427e-04f, 3.29337577e-04f, 3.63510150e-04f, 3.94385715e-04f, 4.21803288e-04f, + 4.45519433e-04f, 4.65391876e-04f, 4.81270460e-04f, 4.93057625e-04f, 5.00688030e-04f, 5.04121708e-04f, + 5.03379627e-04f, 4.98485604e-04f, 4.89499566e-04f, 4.76539317e-04f, 4.59760023e-04f, 4.39274612e-04f, + 4.15334876e-04f, 3.88103885e-04f, 3.57902146e-04f, 3.24908089e-04f, 2.89490480e-04f, 2.51922687e-04f, + 2.12512220e-04f, 1.71637404e-04f, 1.29609890e-04f, 8.67866183e-05f, 4.35312276e-05f, 1.98808307e-07f, + -4.28589070e-05f, -8.52865394e-05f, -1.26765698e-04f, -1.66922292e-04f, -2.05456466e-04f, -2.42095652e-04f, + -2.76487494e-04f, -3.08425602e-04f, -3.37638832e-04f, -3.63923042e-04f, -3.87022898e-04f, -4.06875144e-04f, + -4.23245129e-04f, -4.36071615e-04f, -4.45236993e-04f, -4.50724682e-04f, -4.52491230e-04f, -4.50548104e-04f, + -4.44936790e-04f, -4.35725612e-04f, -4.22987381e-04f, -4.06882738e-04f, -3.87548587e-04f, -3.65123104e-04f, + -3.39860288e-04f, -3.11947486e-04f, -2.81618569e-04f, -2.49166817e-04f, -2.14824344e-04f, -1.78876370e-04f, + -1.41684861e-04f, -1.03466427e-04f, -6.45996088e-05f, -2.53738050e-05f, 1.39035721e-05f, 5.28977578e-05f, + 9.13010773e-05f, 1.28809554e-04f, 1.65139924e-04f, 2.00005346e-04f, 2.33095696e-04f, 2.64232233e-04f, + 2.93070034e-04f, 3.19508024e-04f, 3.43252648e-04f, 3.64165224e-04f, 3.82074036e-04f, 3.96868082e-04f, + 4.08408250e-04f, 4.16671952e-04f, 4.21556517e-04f, 4.23035822e-04f, 4.21172111e-04f, 4.15928838e-04f, + 4.07377025e-04f, 3.95568598e-04f, 3.80628038e-04f, 3.62729177e-04f, 3.41921136e-04f, 3.18489958e-04f, + 2.92497406e-04f, 2.64266550e-04f, 2.33955571e-04f, 2.01809261e-04f, 1.68092145e-04f, 1.33141461e-04f, + 9.71043460e-05f, 6.03452880e-05f, 2.31264055e-05f, -1.43105089e-05f, -5.15607083e-05f, -8.84833364e-05f, + -1.24679461e-04f, -1.59910519e-04f, -1.93952723e-04f, -2.26496145e-04f, -2.57307566e-04f, -2.86175538e-04f, + -3.12853472e-04f, -3.37140613e-04f, -3.58914997e-04f, -3.77932329e-04f, -3.94117065e-04f, -4.07317063e-04f, + -4.17422308e-04f, -4.24419479e-04f, -4.28161231e-04f, -4.28700484e-04f, -4.26016659e-04f, -4.20088126e-04f, + -4.11009185e-04f, -3.98835037e-04f, -3.83585114e-04f, -3.65493072e-04f, -3.44616197e-04f, -3.21064387e-04f, + -2.95119418e-04f, -2.66863117e-04f, -2.36549174e-04f, -2.04391686e-04f, -1.70585806e-04f, -1.35432614e-04f, + -9.91006984e-05f, -6.19152828e-05f, -2.41012311e-05f, 1.40621144e-05f, 5.22867497e-05f, 9.03199843e-05f, + 1.27917614e-04f, 1.64740292e-04f, 2.00634478e-04f, 2.35261402e-04f, 2.68377430e-04f, 2.99818019e-04f, + 3.29273634e-04f, 3.56562766e-04f, 3.81532332e-04f, 4.03948113e-04f, 4.23655375e-04f, 4.40488930e-04f, + 4.54376777e-04f, 4.65137195e-04f, 4.72679704e-04f, 4.77014073e-04f, 4.77982201e-04f, 4.75625277e-04f, + 4.69878507e-04f, 4.60802987e-04f, 4.48367418e-04f, 4.32641679e-04f, 4.13709630e-04f, 3.91634147e-04f, + 3.66512902e-04f, 3.38481392e-04f, 3.07634938e-04f, 2.74189182e-04f, 2.38229594e-04f, 1.99985879e-04f, + 1.59632210e-04f, 1.17351364e-04f, 7.33404728e-05f, 2.78844831e-05f, -1.89099461e-05f, -6.67343638e-05f, + -1.15367449e-04f, -1.64649983e-04f, -2.14224348e-04f, -2.64019844e-04f, -3.13654244e-04f, -3.62990333e-04f, + -4.11800705e-04f, -4.59821928e-04f, -5.06946486e-04f, -5.52847863e-04f, -5.97397068e-04f, -6.40454770e-04f, + -6.81765968e-04f, -7.21210131e-04f, -7.58634477e-04f, -7.93939572e-04f, -8.26964876e-04f, -8.57585335e-04f, + -8.85733438e-04f, -9.11351007e-04f, -9.34300512e-04f, -9.54617442e-04f, -9.72159416e-04f, -9.87012089e-04f, + -9.99095133e-04f, -1.00846242e-03f, -1.01506022e-03f, -1.01897105e-03f, -1.02021427e-03f, -1.01887259e-03f, + -1.01497557e-03f, -1.00861358e-03f, -9.99877741e-04f, -9.88823136e-04f, -9.75617693e-04f, -9.60303769e-04f, + -9.43035535e-04f, -9.23922797e-04f, -9.03105429e-04f, -8.80708716e-04f, -8.56853281e-04f, -8.31685264e-04f, + -8.05348207e-04f, -7.77961627e-04f, -7.49713086e-04f, -7.20674604e-04f, -6.91032783e-04f, -6.60888020e-04f, + -6.30372917e-04f, -5.99673349e-04f, -5.68830563e-04f, -5.38013304e-04f, -5.07353303e-04f, -4.76915043e-04f, + -4.46832926e-04f, -4.17179291e-04f, -3.88083307e-04f, -3.59575024e-04f, -3.31820735e-04f, -3.04804303e-04f, + -2.78616041e-04f, -2.53335964e-04f, -2.28986996e-04f, -2.05619529e-04f, -1.83318449e-04f, -1.61979425e-04f, + -1.41791423e-04f, -1.22648816e-04f, -1.04625498e-04f, -8.77122910e-05f, -7.18653457e-05f, -5.71787106e-05f, + -4.34807639e-05f, -3.09618857e-05f, -1.94074401e-05f, -8.88017971e-06f, 6.09625220e-07f, 9.14020334e-06f, + 1.67805558e-05f, 2.35369965e-05f, 2.94278194e-05f, 3.45049751e-05f, 3.88373828e-05f, 4.24291966e-05f, + 4.53445665e-05f, 4.76965834e-05f, 4.93395567e-05f, 5.05392111e-05f, 5.12257065e-05f, 5.14579340e-05f, + 5.12651750e-05f, 5.07312551e-05f, 4.98486765e-05f, 4.87082573e-05f, 4.73439631e-05f, 4.56740817e-05f, + 4.38653618e-05f, 4.19399075e-05f, 3.99125668e-05f, 3.77616021e-05f, 3.56135997e-05f, 3.33554815e-05f, + 3.11656899e-05f, 2.89038150e-05f, 2.67281634e-05f, 2.46192762e-05f, 2.24899205e-05f, 2.04698700e-05f, + 1.84927655e-05f, 1.66762886e-05f, 1.49393771e-05f, 1.32258081e-05f, 1.16985586e-05f, 1.01874391e-05f, + 8.99882100e-06f, 7.61267073e-06f, 6.57702907e-06f, 5.59829210e-06f, 4.27698546e-06f, 1.03248674e-05f, +}; diff --git a/libraries/audio/src/avx2/AudioSRC_avx2.cpp b/libraries/audio/src/avx2/AudioSRC_avx2.cpp new file mode 100644 index 0000000000..e634554bfb --- /dev/null +++ b/libraries/audio/src/avx2/AudioSRC_avx2.cpp @@ -0,0 +1,201 @@ +// +// AudioSRC_avx2.cpp +// libraries/audio/src +// +// Created by Ken Cooke on 6/5/16. +// Copyright 2016 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__x86_64__) + +#include +#include + +#include "../AudioSRC.h" + +#ifndef __AVX2__ +#error Must be compiled with /arch:AVX2 or -mavx2 -mfma. +#endif + +// high/low part of int64_t +#define LO32(a) ((uint32_t)(a)) +#define HI32(a) ((int32_t)((a) >> 32)) + +int AudioSRC::multirateFilter1_AVX2(const float* input0, float* output0, int inputFrames) { + int outputFrames = 0; + + assert(_numTaps % 8 == 0); // SIMD8 + + if (_step == 0) { // rational + + int32_t i = HI32(_offset); + + while (i < inputFrames) { + + const float* c0 = &_polyphaseFilter[_numTaps * _phase]; + + __m256 acc0 = _mm256_setzero_ps(); + + for (int j = 0; j < _numTaps; j += 8) { + + //float coef = c0[j]; + __m256 coef0 = _mm256_loadu_ps(&c0[j]); + + //acc += input[i + j] * coef; + acc0 = _mm256_fmadd_ps(_mm256_loadu_ps(&input0[i + j]), coef0, acc0); + } + + // horizontal sum + acc0 = _mm256_hadd_ps(acc0, acc0); + __m128 t0 = _mm_add_ps(_mm256_castps256_ps128(acc0), _mm256_extractf128_ps(acc0, 1)); + t0 = _mm_add_ps(t0, _mm_movehdup_ps(t0)); + + _mm_store_ss(&output0[outputFrames], t0); + outputFrames += 1; + + i += _stepTable[_phase]; + if (++_phase == _upFactor) { + _phase = 0; + } + } + _offset = (int64_t)(i - inputFrames) << 32; + + } else { // irrational + + while (HI32(_offset) < inputFrames) { + + int32_t i = HI32(_offset); + uint32_t f = LO32(_offset); + + uint32_t phase = f >> SRC_FRACBITS; + float ftmp = (f & SRC_FRACMASK) * QFRAC_TO_FLOAT; + + const float* c0 = &_polyphaseFilter[_numTaps * (phase + 0)]; + const float* c1 = &_polyphaseFilter[_numTaps * (phase + 1)]; + + __m256 acc0 = _mm256_setzero_ps(); + __m256 frac = _mm256_broadcast_ss(&ftmp); + + for (int j = 0; j < _numTaps; j += 8) { + + //float coef = c0[j] + frac * (c1[j] - c0[j]); + __m256 coef0 = _mm256_loadu_ps(&c0[j]); + __m256 coef1 = _mm256_loadu_ps(&c1[j]); + coef1 = _mm256_sub_ps(coef1, coef0); + coef0 = _mm256_fmadd_ps(coef1, frac, coef0); + + //acc += input[i + j] * coef; + acc0 = _mm256_fmadd_ps(_mm256_loadu_ps(&input0[i + j]), coef0, acc0); + } + + // horizontal sum + acc0 = _mm256_hadd_ps(acc0, acc0); + __m128 t0 = _mm_add_ps(_mm256_castps256_ps128(acc0), _mm256_extractf128_ps(acc0, 1)); + t0 = _mm_add_ps(t0, _mm_movehdup_ps(t0)); + + _mm_store_ss(&output0[outputFrames], t0); + outputFrames += 1; + + _offset += _step; + } + _offset -= (int64_t)inputFrames << 32; + } + _mm256_zeroupper(); + + return outputFrames; +} + +int AudioSRC::multirateFilter2_AVX2(const float* input0, const float* input1, float* output0, float* output1, int inputFrames) { + int outputFrames = 0; + + assert(_numTaps % 8 == 0); // SIMD8 + + if (_step == 0) { // rational + + int32_t i = HI32(_offset); + + while (i < inputFrames) { + + const float* c0 = &_polyphaseFilter[_numTaps * _phase]; + + __m256 acc0 = _mm256_setzero_ps(); + __m256 acc1 = _mm256_setzero_ps(); + + for (int j = 0; j < _numTaps; j += 8) { + + //float coef = c0[j]; + __m256 coef0 = _mm256_loadu_ps(&c0[j]); + + //acc += input[i + j] * coef; + acc0 = _mm256_fmadd_ps(_mm256_loadu_ps(&input0[i + j]), coef0, acc0); + acc1 = _mm256_fmadd_ps(_mm256_loadu_ps(&input1[i + j]), coef0, acc1); + } + + // horizontal sum + acc0 = _mm256_hadd_ps(acc0, acc1); + __m128 t0 = _mm_add_ps(_mm256_castps256_ps128(acc0), _mm256_extractf128_ps(acc0, 1)); + t0 = _mm_add_ps(t0, _mm_movehdup_ps(t0)); + + _mm_store_ss(&output0[outputFrames], t0); + _mm_store_ss(&output1[outputFrames], _mm_shuffle_ps(t0, t0, _MM_SHUFFLE(0,0,0,2))); + outputFrames += 1; + + i += _stepTable[_phase]; + if (++_phase == _upFactor) { + _phase = 0; + } + } + _offset = (int64_t)(i - inputFrames) << 32; + + } else { // irrational + + while (HI32(_offset) < inputFrames) { + + int32_t i = HI32(_offset); + uint32_t f = LO32(_offset); + + uint32_t phase = f >> SRC_FRACBITS; + float ftmp = (f & SRC_FRACMASK) * QFRAC_TO_FLOAT; + + const float* c0 = &_polyphaseFilter[_numTaps * (phase + 0)]; + const float* c1 = &_polyphaseFilter[_numTaps * (phase + 1)]; + + __m256 acc0 = _mm256_setzero_ps(); + __m256 acc1 = _mm256_setzero_ps(); + __m256 frac = _mm256_broadcast_ss(&ftmp); + + for (int j = 0; j < _numTaps; j += 8) { + + //float coef = c0[j] + frac * (c1[j] - c0[j]); + __m256 coef0 = _mm256_loadu_ps(&c0[j]); + __m256 coef1 = _mm256_loadu_ps(&c1[j]); + coef1 = _mm256_sub_ps(coef1, coef0); + coef0 = _mm256_fmadd_ps(coef1, frac, coef0); + + //acc += input[i + j] * coef; + acc0 = _mm256_fmadd_ps(_mm256_loadu_ps(&input0[i + j]), coef0, acc0); + acc1 = _mm256_fmadd_ps(_mm256_loadu_ps(&input1[i + j]), coef0, acc1); + } + + // horizontal sum + acc0 = _mm256_hadd_ps(acc0, acc1); + __m128 t0 = _mm_add_ps(_mm256_castps256_ps128(acc0), _mm256_extractf128_ps(acc0, 1)); + t0 = _mm_add_ps(t0, _mm_movehdup_ps(t0)); + + _mm_store_ss(&output0[outputFrames], t0); + _mm_store_ss(&output1[outputFrames], _mm_shuffle_ps(t0, t0, _MM_SHUFFLE(0,0,0,2))); + outputFrames += 1; + + _offset += _step; + } + _offset -= (int64_t)inputFrames << 32; + } + _mm256_zeroupper(); + + return outputFrames; +} + +#endif diff --git a/libraries/shared/src/CPUDetect.h b/libraries/shared/src/CPUDetect.h new file mode 100644 index 0000000000..c9d2eb649b --- /dev/null +++ b/libraries/shared/src/CPUDetect.h @@ -0,0 +1,181 @@ +// +// CPUDetect.h +// libraries/shared/src +// +// Created by Ken Cooke on 6/6/16. +// Copyright 2016 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_CPUDetect_h +#define hifi_CPUDetect_h + +// +// Lightweight functions to detect SSE/AVX/AVX2 support +// + +#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__x86_64__) +#define ARCH_X86 +#endif + +#define MASK_SSE3 (1 << 0) // SSE3 +#define MASK_SSSE3 (1 << 9) // SSSE3 +#define MASK_SSE41 (1 << 19) // SSE4.1 +#define MASK_SSE42 ((1 << 20) | (1 << 23)) // SSE4.2 and POPCNT +#define MASK_AVX ((1 << 27) | (1 << 28)) // OSXSAVE and AVX +#define MASK_AVX2 (1 << 5) // AVX2 + +#if defined(ARCH_X86) && defined(_MSC_VER) + +#include + +static inline bool cpuSupportsSSE3() { + int info[4]; + + __cpuidex(info, 0x1, 0); + + return ((info[2] & MASK_SSE3) == MASK_SSE3); +} + +static inline bool cpuSupportsSSSE3() { + int info[4]; + + __cpuidex(info, 0x1, 0); + + return ((info[2] & MASK_SSSE3) == MASK_SSSE3); +} + +static inline bool cpuSupportsSSE41() { + int info[4]; + + __cpuidex(info, 0x1, 0); + + return ((info[2] & MASK_SSE41) == MASK_SSE41); +} + +static inline bool cpuSupportsSSE42() { + int info[4]; + + __cpuidex(info, 0x1, 0); + + return ((info[2] & MASK_SSE42) == MASK_SSE42); +} + +static inline bool cpuSupportsAVX() { + int info[4]; + + __cpuidex(info, 0x1, 0); + + bool result = false; + if ((info[2] & MASK_AVX) == MASK_AVX) { + + // verify OS support for YMM state + if ((_xgetbv(_XCR_XFEATURE_ENABLED_MASK) & 0x6) == 0x6) { + result = true; + } + } + return result; +} + +static inline bool cpuSupportsAVX2() { + int info[4]; + + bool result = false; + if (cpuSupportsAVX()) { + + __cpuidex(info, 0x7, 0); + + if ((info[1] & MASK_AVX2) == MASK_AVX2) { + result = true; + } + } + return result; +} + +#elif defined(ARCH_X86) && defined(__GNUC__) + +#include + +static inline bool cpuSupportsSSE3() { + unsigned int eax, ebx, ecx, edx; + + return __get_cpuid(0x1, &eax, &ebx, &ecx, &edx) && ((ecx & MASK_SSE3) == MASK_SSE3); +} + +static inline bool cpuSupportsSSSE3() { + unsigned int eax, ebx, ecx, edx; + + return __get_cpuid(0x1, &eax, &ebx, &ecx, &edx) && ((ecx & MASK_SSSE3) == MASK_SSSE3); +} + +static inline bool cpuSupportsSSE41() { + unsigned int eax, ebx, ecx, edx; + + return __get_cpuid(0x1, &eax, &ebx, &ecx, &edx) && ((ecx & MASK_SSE41) == MASK_SSE41); +} + +static inline bool cpuSupportsSSE42() { + unsigned int eax, ebx, ecx, edx; + + return __get_cpuid(0x1, &eax, &ebx, &ecx, &edx) && ((ecx & MASK_SSE42) == MASK_SSE42); +} + +static inline bool cpuSupportsAVX() { + unsigned int eax, ebx, ecx, edx; + + bool result = false; + if (__get_cpuid(0x1, &eax, &ebx, &ecx, &edx) && ((ecx & MASK_AVX) == MASK_AVX)) { + + // verify OS support for YMM state + __asm__("xgetbv" : "=a"(eax), "=d"(edx) : "c"(0)); + if ((eax & 0x6) == 0x6) { + result = true; + } + } + return result; +} + +static inline bool cpuSupportsAVX2() { + unsigned int eax, ebx, ecx, edx; + + bool result = false; + if (cpuSupportsAVX()) { + + if (__get_cpuid(0x7, &eax, &ebx, &ecx, &edx) && ((ebx & MASK_AVX2) == MASK_AVX2)) { + result = true; + } + } + return result; +} + +#else + +static inline bool cpuSupportsSSE3() { + return false; +} + +static inline bool cpuSupportsSSSE3() { + return false; +} + +static inline bool cpuSupportsSSE41() { + return false; +} + +static inline bool cpuSupportsSSE42() { + return false; +} + +static inline bool cpuSupportsAVX() { + return false; +} + +static inline bool cpuSupportsAVX2() { + return false; +} + +#endif + +#endif // hifi_CPUDetect_h diff --git a/scripts/system/attachedEntitiesManager.js b/scripts/system/attachedEntitiesManager.js index 79c5973a6e..ee852d8d65 100644 --- a/scripts/system/attachedEntitiesManager.js +++ b/scripts/system/attachedEntitiesManager.js @@ -22,7 +22,7 @@ var MINIMUM_DROP_DISTANCE_FROM_JOINT = 0.8; var ATTACHED_ENTITY_SEARCH_DISTANCE = 10.0; var ATTACHED_ENTITIES_SETTINGS_KEY = "ATTACHED_ENTITIES"; var DRESSING_ROOM_DISTANCE = 2.0; -var SHOW_TOOL_BAR = true; +var SHOW_TOOL_BAR = false; // tool bar @@ -71,12 +71,11 @@ Script.scriptEnding.connect(scriptEnding); - // attached entites function AttachedEntitiesManager() { - var clothingLocked = true; + var clothingLocked = false; this.subscribeToMessages = function() { Messages.subscribe('Hifi-Object-Manipulation'); @@ -87,10 +86,6 @@ function AttachedEntitiesManager() { if (channel !== 'Hifi-Object-Manipulation') { return; } - // if (sender !== MyAvatar.sessionUUID) { - // print('wearablesManager got message from wrong sender'); - // return; - // } var parsedMessage = null; @@ -106,7 +101,7 @@ function AttachedEntitiesManager() { // ignore } else if (parsedMessage.action === 'release') { manager.handleEntityRelease(parsedMessage.grabbedEntity, parsedMessage.joint) - // manager.saveAttachedEntities(); + // manager.saveAttachedEntities(); } else if (parsedMessage.action === 'equip') { // manager.saveAttachedEntities(); } else { @@ -117,11 +112,6 @@ function AttachedEntitiesManager() { this.handleEntityRelease = function(grabbedEntity, releasedFromJoint) { // if this is still equipped, just rewrite the position information. var grabData = getEntityCustomData('grabKey', grabbedEntity, {}); - // if ("refCount" in grabData && grabData.refCount > 0) { - // // for adjusting things in your other hand - // manager.updateRelativeOffsets(grabbedEntity); - // return; - // } var allowedJoints = getEntityCustomData('wearable', grabbedEntity, DEFAULT_WEARABLE_DATA).joints; @@ -156,7 +146,8 @@ function AttachedEntitiesManager() { var wearProps = Entities.getEntityProperties(grabbedEntity); wearProps.parentID = MyAvatar.sessionUUID; wearProps.parentJointIndex = bestJointIndex; - + delete wearProps.localPosition; + delete wearProps.localRotation; var updatePresets = false; if (bestJointOffset && bestJointOffset.constructor === Array) { if (!clothingLocked || bestJointOffset.length < 2) { @@ -170,21 +161,23 @@ function AttachedEntitiesManager() { } Entities.deleteEntity(grabbedEntity); - grabbedEntity = Entities.addEntity(wearProps, true); + //the true boolean here after add entity adds it as an 'avatar entity', which can travel with you from server to server. + + var newEntity = Entities.addEntity(wearProps, true); + if (updatePresets) { - this.updateRelativeOffsets(grabbedEntity); + this.updateRelativeOffsets(newEntity); } } else if (props.parentID != NULL_UUID) { // drop the entity and set it to have no parent (not on the avatar), unless it's being equipped in a hand. if (props.parentID === MyAvatar.sessionUUID && (props.parentJointIndex == MyAvatar.getJointIndex("RightHand") || - props.parentJointIndex == MyAvatar.getJointIndex("LeftHand"))) { + props.parentJointIndex == MyAvatar.getJointIndex("LeftHand"))) { // this is equipped on a hand -- don't clear the parent. } else { var wearProps = Entities.getEntityProperties(grabbedEntity); wearProps.parentID = NULL_UUID; wearProps.parentJointIndex = -1; - delete wearProps.id; delete wearProps.created; delete wearProps.age; @@ -198,7 +191,6 @@ function AttachedEntitiesManager() { delete wearProps.owningAvatarID; delete wearProps.localPosition; delete wearProps.localRotation; - Entities.deleteEntity(grabbedEntity); Entities.addEntity(wearProps); } @@ -220,17 +212,6 @@ function AttachedEntitiesManager() { return false; } - this.toggleLocked = function() { - print("toggleLocked"); - if (clothingLocked) { - clothingLocked = false; - toolBar.setImageURL(Script.resolvePath("assets/images/unlock.svg"), lockButton); - } else { - clothingLocked = true; - toolBar.setImageURL(Script.resolvePath("assets/images/lock.svg"), lockButton); - } - } - // this.saveAttachedEntities = function() { // print("--- saving attached entities ---"); // saveData = []; @@ -246,27 +227,27 @@ function AttachedEntitiesManager() { // Settings.setValue(ATTACHED_ENTITIES_SETTINGS_KEY, JSON.stringify(saveData)); // } - this.scrubProperties = function(props) { - var toScrub = ["queryAACube", "position", "rotation", - "created", "ageAsText", "naturalDimensions", - "naturalPosition", "velocity", "acceleration", - "angularVelocity", "boundingBox"]; - toScrub.forEach(function(propertyName) { - delete props[propertyName]; - }); - // if the userData has a grabKey, clear old state - if ("userData" in props) { - try { - parsedUserData = JSON.parse(props.userData); - if ("grabKey" in parsedUserData) { - parsedUserData.grabKey.refCount = 0; - delete parsedUserData.grabKey["avatarId"]; - props["userData"] = JSON.stringify(parsedUserData); - } - } catch (e) { - } - } - } + // this.scrubProperties = function(props) { + // var toScrub = ["queryAACube", "position", "rotation", + // "created", "ageAsText", "naturalDimensions", + // "naturalPosition", "velocity", "acceleration", + // "angularVelocity", "boundingBox"]; + // toScrub.forEach(function(propertyName) { + // delete props[propertyName]; + // }); + // // if the userData has a grabKey, clear old state + // if ("userData" in props) { + // try { + // parsedUserData = JSON.parse(props.userData); + // if ("grabKey" in parsedUserData) { + // parsedUserData.grabKey.refCount = 0; + // delete parsedUserData.grabKey["avatarId"]; + // props["userData"] = JSON.stringify(parsedUserData); + // } + // } catch (e) { + // } + // } + // } // this.loadAttachedEntities = function(grabbedEntity) { // print("--- loading attached entities ---"); @@ -302,4 +283,4 @@ function AttachedEntitiesManager() { } var manager = new AttachedEntitiesManager(); -manager.subscribeToMessages(); +manager.subscribeToMessages(); \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/blocky/arrangement6B.json b/unpublishedScripts/DomainContent/Home/blocky/arrangement6B.json new file mode 100644 index 0000000000..2a0510e259 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/arrangement6B.json @@ -0,0 +1,231 @@ +{ + "Entities": [ + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "created": "2016-05-09T19:37:13Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{5692ed0d-52ae-4bd9-8ef6-13a3d28dbcec}", + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "parentID": "{8c29606d-b071-4793-a5d5-26453bb12bf4}", + "position": { + "x": 0.076191246509552002, + "y": -0.0050119552761316299, + "z": -4.275888204574585e-05 + }, + "queryAACube": { + "scale": 0.77012991905212402, + "x": 1104.9146728515625, + "y": 460.09011840820312, + "z": -69.708526611328125 + }, + "rotation": { + "w": -3.1195580959320068e-05, + "x": -0.99968332052230835, + "y": 0.019217833876609802, + "z": 0.0013828873634338379 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "created": "2016-05-09T19:28:29Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{41fdce7a-5c15-4335-a7d4-e6e42c419edb}", + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_block", + "parentID": "{8c29606d-b071-4793-a5d5-26453bb12bf4}", + "position": { + "x": 0.31622248888015747, + "y": -0.076068185269832611, + "z": -0.00023670494556427002 + }, + "queryAACube": { + "scale": 0.77012991905212402, + "x": 1104.552734375, + "y": 460.09014892578125, + "z": -69.711776733398438 + }, + "rotation": { + "w": 0.9812014102935791, + "x": 2.8990209102630615e-05, + "y": 0.00053216516971588135, + "z": -0.19223560392856598 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "created": "2016-05-09T19:30:40Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{376ea748-6b7b-4ac4-9194-b0f118ac39dd}", + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "parentID": "{8c29606d-b071-4793-a5d5-26453bb12bf4}", + "position": { + "x": -0.22965218126773834, + "y": 0.0041047781705856323, + "z": 0.00015974044799804688 + }, + "queryAACube": { + "scale": 0.77012991905212402, + "x": 1105.10009765625, + "y": 460.09011840820312, + "z": -69.742721557617188 + }, + "rotation": { + "w": -7.3388218879699707e-06, + "x": -0.99162417650222778, + "y": 0.1281534731388092, + "z": 0.00039628148078918457 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "created": "2016-05-09T21:28:38Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{d1359425-9129-4827-b881-e4802703a0ca}", + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "parentID": "{8c29606d-b071-4793-a5d5-26453bb12bf4}", + "position": { + "x": 0.23440317809581757, + "y": -0.035929545760154724, + "z": -0.00016139447689056396 + }, + "queryAACube": { + "scale": 0.77012991905212402, + "x": 1104.6361083984375, + "y": 460.09011840820312, + "z": -69.792564392089844 + }, + "rotation": { + "w": 0.986641526222229, + "x": -0.00016996264457702637, + "y": -0.00021627545356750488, + "z": -0.16198150813579559 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "created": "2016-05-09T19:32:51Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{11b3c61c-abe3-48ac-9033-3f88d3efee00}", + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "parentID": "{8c29606d-b071-4793-a5d5-26453bb12bf4}", + "position": { + "x": -0.15134727954864502, + "y": 0.00060278922319412231, + "z": 0.00011575222015380859 + }, + "queryAACube": { + "scale": 0.77012991905212402, + "x": 1104.79541015625, + "y": 460.090087890625, + "z": -69.902366638183594 + }, + "rotation": { + "w": -0.00098252296447753906, + "x": -0.030791401863098145, + "y": 0.99939167499542236, + "z": 0.0002511441707611084 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "created": "2016-05-09T19:32:51Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{15c3aeae-1166-4cff-aa53-d732f20a1203}", + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "parentID": "{8c29606d-b071-4793-a5d5-26453bb12bf4}", + "position": { + "x": -0.35397925972938538, + "y": 0.020401254296302795, + "z": 0.00025978684425354004 + }, + "queryAACube": { + "scale": 0.82158386707305908, + "x": 1105.195068359375, + "y": 460.06436157226562, + "z": -69.863059997558594 + }, + "rotation": { + "w": 0.68755638599395752, + "x": -0.00055142492055892944, + "y": 0.00033529102802276611, + "z": -0.72594141960144043 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "angularDamping": 0, + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "created": "2016-05-09T19:30:40Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{8c29606d-b071-4793-a5d5-26453bb12bf4}", + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "queryAACube": { + "scale": 0.25670996308326721, + "x": -0.12835498154163361, + "y": -0.12835498154163361, + "z": -0.12835498154163361 + }, + "rotation": { + "w": 0.097722500562667847, + "x": 0.097280360758304596, + "y": 0.70029336214065552, + "z": -0.70041131973266602 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + } + ], + "Version": 57 +} diff --git a/unpublishedScripts/DomainContent/Home/blocky/blocky.js b/unpublishedScripts/DomainContent/Home/blocky/blocky.js new file mode 100644 index 0000000000..8eae31a439 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/blocky.js @@ -0,0 +1,286 @@ +// this script creates a pile of playable blocks and displays a target arrangement when you trigger it + +var BLOCK_RED = { + url: 'atp:/kineticObjects/blocks/planky_red.fbx', + dimensions: { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + } +}; +var BLOCK_BLUE = { + url: 'atp:/kineticObjects/blocks/planky_blue.fbx', + dimensions: { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.25 + }, +}; +var BLOCK_YELLOW = { + url: 'atp:/kineticObjects/blocks/planky_yellow.fbx', + dimensions: { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + } +}; +var BLOCK_GREEN = { + url: 'atp:/kineticObjects/blocks/planky_green.fbx', + dimensions: { + "x": 0.10000000149011612, + "y": 0.10000000149011612, + "z": 0.25 + }, +}; +var BLOCK_NATURAL = { + url: "atp:/kineticObjects/blocks/planky_natural.fbx", + dimensions: { + "x": 0.05, + "y": 0.05, + "z": 0.05 + } +}; + +var blocks = [ + BLOCK_RED, BLOCK_BLUE, BLOCK_YELLOW, BLOCK_GREEN, BLOCK_NATURAL +]; + +var arrangements = [{ + name: 'greenhenge', + blocks: [BLOCK_GREEN, BLOCK_GREEN, BLOCK_YELLOW, BLOCK_YELLOW], + target: "atp:/blocky/newblocks1.json" +}, { + name: 'tallstuff', + blocks: [BLOCK_RED, BLOCK_RED, BLOCK_RED], + target: "atp:/blocky/newblocks2.json" +}, { + name: 'ostrich', + blocks: [BLOCK_RED, BLOCK_RED, BLOCK_GREEN, BLOCK_YELLOW, BLOCK_NATURAL], + target: "atp:/blocky/newblocks5.json" +}, { + name: 'fourppl', + blocks: [BLOCK_BLUE, BLOCK_BLUE, BLOCK_BLUE, BLOCK_BLUE, BLOCK_NATURAL, BLOCK_NATURAL, BLOCK_NATURAL, BLOCK_NATURAL], + target: "atp:/blocky/newblocks3.json" +}, { + name: 'frogguy', + blocks: [BLOCK_GREEN, BLOCK_GREEN, BLOCK_GREEN, BLOCK_YELLOW, BLOCK_RED, BLOCK_RED, BLOCK_NATURAL, BLOCK_NATURAL], + target: "atp:/blocky/newblocks4.json" +}, { + name: 'dominoes', + blocks: [BLOCK_RED, BLOCK_YELLOW, BLOCK_YELLOW, BLOCK_YELLOW, BLOCK_YELLOW, BLOCK_YELLOW, BLOCK_YELLOW], + target: "atp:/blocky/arrangement6B.json" +}] + +var PLAYABLE_BLOCKS_POSITION = { + x: 1097.6, + y: 460.5, + z: -66.22 +}; + +var TARGET_BLOCKS_POSITION = { + x: 1096.82, + y: 460.5, + z: -67.689 +}; +//#debug +(function() { + + print('BLOCK ENTITY SCRIPT') + var _this; + + function Blocky() { + _this = this; + } + + Blocky.prototype = { + busy: false, + debug: false, + playableBlocks: [], + targetBlocks: [], + preload: function(entityID) { + print('BLOCKY preload') + this.entityID = entityID; + Script.update.connect(_this.update); + }, + + createTargetBlocks: function(arrangement) { + var created = []; + print('BLOCKY create target blocks') + + var created = []; + var success = Clipboard.importEntities(arrangement.target); + if (success === true) { + created = Clipboard.pasteEntities(TARGET_BLOCKS_POSITION) + print('created ' + created); + } + + this.targetBlocks = created; + print('BLOCKY TARGET BLOCKS:: ' + this.targetBlocks); + }, + + createPlayableBlocks: function(arrangement) { + print('BLOCKY creating playable blocks' + arrangement.blocks.length); + arrangement.blocks.forEach(function(block) { + print('BLOCKY in a block loop') + var blockProps = { + name: "home_model_blocky_block", + type: 'Model', + collisionSoundURL: "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + dynamic: true, + collisionless: false, + gravity: { + x: 0, + y: -9.8, + z: 0 + }, + userData: JSON.stringify({ + grabbableKey: { + grabbable: true + }, + hifiHomeKey: { + reset: true + } + }), + dimensions: block.dimensions, + modelURL: block.url, + shapeType: 'box', + velocity: { + x: 0, + y: -0.01, + z: 0, + }, + position: PLAYABLE_BLOCKS_POSITION + } + var newBlock = Entities.addEntity(blockProps); + print('BLOCKY made a playable block' + newBlock) + _this.playableBlocks.push(newBlock); + print('BLOCKY pushing it into playable blocks'); + }) + + print('BLOCKY after going through playable arrangement') + }, + + startNearTrigger: function() { + print('BLOCKY got a near trigger'); + this.advanceRound(); + }, + + advanceRound: function() { + print('BLOCKY advance round'); + this.busy = true; + this.cleanup(); + var arrangement = arrangements[Math.floor(Math.random() * arrangements.length)]; + this.createTargetBlocks(arrangement); + + if (this.debug === true) { + this.debugCreatePlayableBlocks(); + } else { + this.createPlayableBlocks(arrangement); + + } + Script.setTimeout(function() { + _this.busy = false; + }, 1000) + }, + + findBlocks: function() { + var found = []; + var results = Entities.findEntities(MyAvatar.position, 10); + results.forEach(function(result) { + var properties = Entities.getEntityProperties(result); + print('got result props') + if (properties.name.indexOf('blocky_block') > -1) { + found.push(result); + } + }); + return found; + }, + + cleanup: function() { + print('BLOCKY cleanup'); + var blocks = this.findBlocks(); + print('BLOCKY cleanup2' + blocks.length) + blocks.forEach(function(block) { + Entities.deleteEntity(block); + }) + print('BLOCKY after find and delete') + this.targetBlocks.forEach(function(block) { + Entities.deleteEntity(block); + }); + this.playableBlocks.forEach(function(block) { + Entities.deleteEntity(block); + }); + this.targetBlocks = []; + this.playableBlocks = []; + }, + + debugCreatePlayableBlocks: function() { + print('BLOCKY debug create'); + var howMany = 10; + var i; + for (i = 0; i < howMany; i++) { + var block = blocks[Math.floor(Math.random() * blocks.length)]; + var blockProps = { + name: "home_model_blocky_block", + type: 'Model', + collisionSoundURL: "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + dynamic: false, + collisionless: true, + userData: JSON.stringify({ + grabbableKey: { + grabbable: true + }, + hifiHomeKey: { + reset: true + } + }), + dimensions: block.dimensions, + modelURL: block.url, + shapeType: 'box', + velocity: { + x: 0, + y: -0.01, + z: 0, + }, + position: PLAYABLE_BLOCKS_POSITION + } + this.playableBlocks.push(Entities.addEntity(blockProps)); + } + }, + + unload: function() { + this.cleanup(); + Script.update.disconnect(_this.update); + }, + + clickReleaseOnEntity: function() { + print('BLOCKY click') + this.startNearTrigger(); + }, + + update: function() { + if (_this.busy === true) { + return; + } + var BEAM_TRIGGER_THRESHOLD = 0.075; + + var BEAM_POSITION = { + x: 1098.4424, + y: 460.3090, + z: -66.2190 + }; + + var leftHandPosition = MyAvatar.getLeftPalmPosition(); + var rightHandPosition = MyAvatar.getRightPalmPosition(); + + var rightDistance = Vec3.distance(leftHandPosition, BEAM_POSITION) + var leftDistance = Vec3.distance(rightHandPosition, BEAM_POSITION) + + if (rightDistance < BEAM_TRIGGER_THRESHOLD || leftDistance < BEAM_TRIGGER_THRESHOLD) { + _this.startNearTrigger(); + } + } + } + + return new Blocky(); +}) \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/blocky/newblocks1.json b/unpublishedScripts/DomainContent/Home/blocky/newblocks1.json new file mode 100644 index 0000000000..2409c7c34c --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/newblocks1.json @@ -0,0 +1,136 @@ +{ + "Entities": [ + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:35:13Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{aad3b1c3-6478-46dd-a985-800d0e38c8e7}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.069580078125, + "y": 0.153778076171875, + "z": 0.04181671142578125 + }, + "queryAACube": { + "scale": 0.25670996308326721, + "x": -0.058774903416633606, + "y": 0.025423094630241394, + "z": -0.086538270115852356 + }, + "rotation": { + "w": 0.95882409811019897, + "x": -1.896415778901428e-05, + "y": 0.28400072455406189, + "z": -1.0296697837475222e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:30:51Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{f5714678-d436-4353-b0c8-2d73599dda3a}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0181884765625, + "y": 0.153778076171875, + "z": 0.0773468017578125 + }, + "queryAACube": { + "scale": 0.25670996308326721, + "x": -0.11016650497913361, + "y": 0.025423094630241394, + "z": -0.051008179783821106 + }, + "rotation": { + "w": 0.95882409811019897, + "x": -1.896415778901428e-05, + "y": 0.28400072455406189, + "z": -1.0296697837475222e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:30:51Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.10000000149011612, + "z": 0.25 + }, + "id": "{0cf93a58-18d2-4c69-9c1b-33d6d1e647b8}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.078857421875, + "y": 0.002899169921875, + "z": 0.11455535888671875 + }, + "queryAACube": { + "scale": 0.28722813725471497, + "x": -0.064756646752357483, + "y": -0.14071489870548248, + "z": -0.029058709740638733 + }, + "rotation": { + "w": 0.33741602301597595, + "x": -0.33740735054016113, + "y": 0.62139773368835449, + "z": 0.62142699956893921 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:33:02Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.10000000149011612, + "z": 0.25 + }, + "id": "{7f8791fb-e236-4280-b9d4-4ee6d1663e2a}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", + "name": "home_model_blocky_block", + "queryAACube": { + "scale": 0.28722813725471497, + "x": -0.14361406862735748, + "y": -0.14361406862735748, + "z": -0.14361406862735748 + }, + "rotation": { + "w": 0.68138498067855835, + "x": -0.68140000104904175, + "y": 0.18894240260124207, + "z": 0.1889689564704895 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + } + ], + "Version": 57 +} diff --git a/unpublishedScripts/DomainContent/Home/blocky/newblocks2.json b/unpublishedScripts/DomainContent/Home/blocky/newblocks2.json new file mode 100644 index 0000000000..8487e709d4 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/newblocks2.json @@ -0,0 +1,107 @@ +{ + "Entities": [ + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:37:24Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{2454f490-787c-491b-9b7e-c0e098af86e8}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0, + "y": 0.504150390625, + "z": 0 + }, + "queryAACube": { + "scale": 0.27386128902435303, + "x": -0.13693064451217651, + "y": 0.36721974611282349, + "z": -0.13693064451217651 + }, + "rotation": { + "w": 0.70711755752563477, + "x": 0.70709598064422607, + "y": 0, + "z": -2.1579186068265699e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:37:24Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{5bf66e29-a3b6-4171-8470-6e0462d51dd3}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0, + "y": 0, + "z": 0.00112152099609375 + }, + "queryAACube": { + "scale": 0.27386128902435303, + "x": -0.13693064451217651, + "y": -0.13693064451217651, + "z": -0.13580912351608276 + }, + "rotation": { + "w": 0.70711755752563477, + "x": 0.70709598064422607, + "y": 0, + "z": -2.1579186068265699e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:39:35Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{2cf52537-9f88-41eb-86d6-14a5ff218fb6}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0, + "y": 0.253204345703125, + "z": 0 + }, + "queryAACube": { + "scale": 0.27386128902435303, + "x": -0.13693064451217651, + "y": 0.11627370119094849, + "z": -0.13693064451217651 + }, + "rotation": { + "w": 0.70711755752563477, + "x": 0.70709598064422607, + "y": 0, + "z": -2.1579186068265699e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + } + ], + "Version": 57 +} diff --git a/unpublishedScripts/DomainContent/Home/blocky/newblocks3.json b/unpublishedScripts/DomainContent/Home/blocky/newblocks3.json new file mode 100644 index 0000000000..846800a2eb --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/newblocks3.json @@ -0,0 +1,277 @@ +{ + "Entities": [ + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:41:47Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.05000000074505806 + }, + "id": "{806e18fc-1ffd-4d7a-a405-52f1ad6cc164}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.1412353515625, + "y": 0.150634765625, + "z": 0.19216156005859375 + }, + "queryAACube": { + "scale": 0.086602538824081421, + "x": 0.09793408215045929, + "y": 0.10733349621295929, + "z": 0.14886029064655304 + }, + "rotation": { + "w": 0.96592974662780762, + "x": -1.8688122509047389e-05, + "y": 0.25880429148674011, + "z": -1.0789593034132849e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:41:47Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.05000000074505806 + }, + "id": "{3c99f577-fc38-4f5b-8b7b-2dc36b742ff9}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.078369140625, + "y": 0.150634765625, + "z": 0.10829925537109375 + }, + "queryAACube": { + "scale": 0.086602538824081421, + "x": 0.03506787121295929, + "y": 0.10733349621295929, + "z": 0.06499798595905304 + }, + "rotation": { + "w": 0.96592974662780762, + "x": -1.8688122509047389e-05, + "y": 0.25880429148674011, + "z": -1.0789593034132849e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:41:47Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.05000000074505806 + }, + "id": "{3aa37e21-48ff-4d41-be0b-d47a67e004cc}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.2056884765625, + "y": 0.150634765625, + "z": 0.2870941162109375 + }, + "queryAACube": { + "scale": 0.086602538824081421, + "x": 0.16238720715045929, + "y": 0.10733349621295929, + "z": 0.24379284679889679 + }, + "rotation": { + "w": 0.96592974662780762, + "x": -1.8688122509047389e-05, + "y": 0.25880429148674011, + "z": -1.0789593034132849e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:39:35Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.05000000074505806 + }, + "id": "{a34966c4-0f1c-4103-8857-f998559318e7}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0, + "y": 0.150634765625, + "z": 0 + }, + "queryAACube": { + "scale": 0.086602538824081421, + "x": -0.04330126941204071, + "y": 0.10733349621295929, + "z": -0.04330126941204071 + }, + "rotation": { + "w": 0.96592974662780762, + "x": -1.8688122509047389e-05, + "y": 0.25880429148674011, + "z": -1.0789593034132849e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:41:47Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{96336167-827c-48ec-b641-ee462fb2abdc}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_blue.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.2088623046875, + "y": 0, + "z": 0.28765869140625 + }, + "queryAACube": { + "scale": 0.25980761647224426, + "x": 0.078958496451377869, + "y": -0.12990380823612213, + "z": 0.15775488317012787 + }, + "rotation": { + "w": 0.68138498067855835, + "x": -0.68140000104904175, + "y": 0.18894240260124207, + "z": 0.1889689564704895 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:39:35Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{17b1be58-b3d6-4b27-856e-f74b8ba34309}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_blue.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.001953125, + "y": 0, + "z": 0.00205230712890625 + }, + "queryAACube": { + "scale": 0.25980761647224426, + "x": -0.12795068323612213, + "y": -0.12990380823612213, + "z": -0.12785150110721588 + }, + "rotation": { + "w": 0.68138498067855835, + "x": -0.68140000104904175, + "y": 0.18894240260124207, + "z": 0.1889689564704895 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:41:47Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{161eefc7-ba39-4301-913f-edb4f7d9236e}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_blue.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0777587890625, + "y": 0, + "z": 0.10608673095703125 + }, + "queryAACube": { + "scale": 0.25980761647224426, + "x": -0.052145019173622131, + "y": -0.12990380823612213, + "z": -0.023817077279090881 + }, + "rotation": { + "w": 0.68138498067855835, + "x": -0.68140000104904175, + "y": 0.18894240260124207, + "z": 0.1889689564704895 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:41:47Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{ea1eebe2-fef3-4587-9f87-f7812359ec8b}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_blue.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.152099609375, + "y": 0, + "z": 0.1891937255859375 + }, + "queryAACube": { + "scale": 0.25980761647224426, + "x": 0.022195801138877869, + "y": -0.12990380823612213, + "z": 0.059289917349815369 + }, + "rotation": { + "w": 0.68138498067855835, + "x": -0.68140000104904175, + "y": 0.18894240260124207, + "z": 0.1889689564704895 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + } + ], + "Version": 57 +} diff --git a/unpublishedScripts/DomainContent/Home/blocky/newblocks4.json b/unpublishedScripts/DomainContent/Home/blocky/newblocks4.json new file mode 100644 index 0000000000..5d5a7a8d9d --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/newblocks4.json @@ -0,0 +1,277 @@ +{ + "Entities": [ + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:52:42Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.05000000074505806 + }, + "id": "{df9f2e81-c7c3-45b3-9459-0dc1647e3ac8}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.1153564453125, + "y": 0.3056640625, + "z": 0.19878387451171875 + }, + "queryAACube": { + "scale": 0.086602538824081421, + "x": 0.07205517590045929, + "y": 0.2623627781867981, + "z": 0.15548260509967804 + }, + "rotation": { + "w": 0.87880980968475342, + "x": -6.1288210417842492e-06, + "y": -0.4771721363067627, + "z": -2.0690549717983231e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:48:20Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.05000000074505806 + }, + "id": "{00f70709-d22b-4e50-98b6-c49783a1ca2d}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0565185546875, + "y": 0.3056640625, + "z": 0.0875244140625 + }, + "queryAACube": { + "scale": 0.086602538824081421, + "x": 0.01321728527545929, + "y": 0.2623627781867981, + "z": 0.04422314465045929 + }, + "rotation": { + "w": 0.87880980968475342, + "x": -6.1288210417842492e-06, + "y": -0.4771721363067627, + "z": -2.0690549717983231e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:48:20Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{925922c7-c8da-4862-8695-9e823cde5f43}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.165771484375, + "y": 0.1016845703125, + "z": 0.3075103759765625 + }, + "queryAACube": { + "scale": 0.27386128902435303, + "x": 0.028840839862823486, + "y": -0.035246074199676514, + "z": 0.17057973146438599 + }, + "rotation": { + "w": 0.76051729917526245, + "x": 0.5797961950302124, + "y": 0.20168730616569519, + "z": -0.21159422397613525 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:48:20Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{9754d1bd-30f0-473c-87fa-159902f3ae54}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0, + "y": 0.1016845703125, + "z": 0 + }, + "queryAACube": { + "scale": 0.27386128902435303, + "x": -0.13693064451217651, + "y": -0.035246074199676514, + "z": -0.13693064451217651 + }, + "rotation": { + "w": -0.24484673142433167, + "x": -0.2088056355714798, + "y": 0.70473498106002808, + "z": -0.63229680061340332 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:48:20Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.10000000149011612, + "z": 0.25 + }, + "id": "{d2cd5cb1-cc1c-48b5-a190-b25279ca46aa}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0667724609375, + "y": 0.18121337890625, + "z": 0.155120849609375 + }, + "queryAACube": { + "scale": 0.28722813725471497, + "x": -0.076841607689857483, + "y": 0.037599310278892517, + "z": 0.011506780982017517 + }, + "rotation": { + "w": 0.9612659215927124, + "x": -1.8873581211664714e-05, + "y": 0.27562269568443298, + "z": -1.0461797501193359e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:48:20Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{168a3f35-29f3-4a5c-92e5-868ce8476052}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.08154296875, + "y": 0.256256103515625, + "z": 0.1437225341796875 + }, + "queryAACube": { + "scale": 0.25670996308326721, + "x": -0.046812012791633606, + "y": 0.12790112197399139, + "z": 0.015367552638053894 + }, + "rotation": { + "w": 0.96592974662780762, + "x": -1.8688122509047389e-05, + "y": 0.25880429148674011, + "z": -1.0789593034132849e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:48:20Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.10000000149011612, + "z": 0.25 + }, + "id": "{8df113eb-303f-461a-914b-1ff86083af28}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0667724609375, + "y": 0.093353271484375, + "z": 0.155120849609375 + }, + "queryAACube": { + "scale": 0.28722813725471497, + "x": -0.076841607689857483, + "y": -0.050260797142982483, + "z": 0.011506780982017517 + }, + "rotation": { + "w": 0.9612659215927124, + "x": -1.8873581211664714e-05, + "y": 0.27562269568443298, + "z": -1.0461797501193359e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T22:48:20Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.10000000149011612, + "z": 0.25 + }, + "id": "{6126fb1e-5702-4ea5-9840-fc93534a284c}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0667724609375, + "y": 0, + "z": 0.155120849609375 + }, + "queryAACube": { + "scale": 0.28722813725471497, + "x": -0.076841607689857483, + "y": -0.14361406862735748, + "z": 0.011506780982017517 + }, + "rotation": { + "w": 0.9612659215927124, + "x": -1.8873581211664714e-05, + "y": 0.27562269568443298, + "z": -1.0461797501193359e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + } + ], + "Version": 57 +} diff --git a/unpublishedScripts/DomainContent/Home/blocky/newblocks5.json b/unpublishedScripts/DomainContent/Home/blocky/newblocks5.json new file mode 100644 index 0000000000..88ccb23c44 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/newblocks5.json @@ -0,0 +1,175 @@ +{ + "Entities": [ + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T23:42:57Z", + "dimensions": { + "x": 0.029999999329447746, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{f89e9217-6048-4ad8-a9fa-80404931864c}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0689697265625, + "y": 0.336700439453125, + "z": 0.02086639404296875 + }, + "queryAACube": { + "scale": 0.25670996308326721, + "x": -0.059385254979133606, + "y": 0.20834545791149139, + "z": -0.10748858749866486 + }, + "rotation": { + "w": 0.66232722997665405, + "x": 0.66232722997665405, + "y": 0.24763399362564087, + "z": -0.24763399362564087 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T23:42:57Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.10000000149011612, + "z": 0.25 + }, + "id": "{e065e9c3-b722-4ad3-bbd4-3f12efb530f5}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0335693359375, + "y": 0.179962158203125, + "z": 0.0505828857421875 + }, + "queryAACube": { + "scale": 0.28722813725471497, + "x": -0.11004473268985748, + "y": 0.036348089575767517, + "z": -0.093031182885169983 + }, + "rotation": { + "w": 0.88294041156768799, + "x": -6.3091447373153642e-06, + "y": -0.46948501467704773, + "z": -2.0636278350139037e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T23:42:57Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{f1367c6c-744a-4ee2-9a6f-ffe89fe67e7e}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0, + "y": 0, + "z": 0.03073883056640625 + }, + "queryAACube": { + "scale": 0.27386128902435303, + "x": -0.13693064451217651, + "y": -0.13693064451217651, + "z": -0.10619181394577026 + }, + "rotation": { + "w": 0.67456501722335815, + "x": 0.67456501722335815, + "y": 0.21204251050949097, + "z": -0.21204251050949097 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T23:42:57Z", + "dimensions": { + "x": 0.10000000149011612, + "y": 0.05000000074505806, + "z": 0.25 + }, + "id": "{73c2bd96-e77d-4ba2-908b-1ee8ca7c814c}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.02685546875, + "y": 0, + "z": 0.0877532958984375 + }, + "queryAACube": { + "scale": 0.27386128902435303, + "x": -0.11007517576217651, + "y": -0.13693064451217651, + "z": -0.049177348613739014 + }, + "rotation": { + "w": 0.67456501722335815, + "x": 0.67456501722335815, + "y": 0.21204251050949097, + "z": -0.21204251050949097 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + }, + { + "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", + "collisionless": 1, + "created": "2016-05-23T23:42:57Z", + "dimensions": { + "x": 0.05000000074505806, + "y": 0.05000000074505806, + "z": 0.05000000074505806 + }, + "id": "{28fd21e4-2138-4ca1-875b-1d35cbefa6b8}", + "ignoreForCollisions": 1, + "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", + "name": "home_model_blocky_block", + "position": { + "x": 0.0506591796875, + "y": 0.485748291015625, + "z": 0 + }, + "queryAACube": { + "scale": 0.086602538824081421, + "x": 0.0073579102754592896, + "y": 0.4424470067024231, + "z": -0.04330126941204071 + }, + "rotation": { + "w": 1, + "x": -1.52587890625e-05, + "y": -1.52587890625e-05, + "z": -1.52587890625e-05 + }, + "shapeType": "box", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":true},\"hifiHomeKey\":{\"reset\":true}}" + } + ], + "Version": 57 +} diff --git a/unpublishedScripts/DomainContent/Home/blocky/singleSpawner.js b/unpublishedScripts/DomainContent/Home/blocky/singleSpawner.js new file mode 100644 index 0000000000..fc6650ac6a --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/singleSpawner.js @@ -0,0 +1,27 @@ +// +// +// Created by The Content Team 4/10/216 +// Copyright 2016 High Fidelity, Inc. +// +// +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +var blockyPath = 'atp:/blocky/wrapper.js'; +Script.include(blockyPath); +var center = Vec3.sum(Vec3.sum(MyAvatar.position, { + x: 0, + y: 0.5, + z: 0 +}), Vec3.multiply(1, Quat.getFront(Camera.getOrientation()))); +var blocky = new BlockyGame(center, { + x: 0, + y: 0, + z: 0 +}); + +Script.scriptEnding.connect(function() { + blocky.cleanup() +}) \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/blocky/wrapper.js b/unpublishedScripts/DomainContent/Home/blocky/wrapper.js new file mode 100644 index 0000000000..5ae7d4592e --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/blocky/wrapper.js @@ -0,0 +1,51 @@ +// createPingPongGun.js +// +// Script Type: Entity Spawner +// Created by James B. Pollack on 9/30/2015 +// Copyright 2015 High Fidelity, Inc. +// +// This script creates a gun that shoots ping pong balls when you pull the trigger on a hand controller. +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + + +BlockyGame = function(spawnPosition, spawnRotation) { + + var scriptURL = "atp:/blocky/blocky.js"; + + var blockyProps = { + type: 'Model', + modelURL:'atp:/blocky/swiper.fbx', + name: 'home_box_blocky_resetter', + dimensions: { + x: 0.2543, + y: 0.3269, + z: 0.4154 + }, + rotation:Quat.fromPitchYawRollDegrees(-9.5165,-147.3687,16.6577), + script: scriptURL, + userData: JSON.stringify({ + "grabbableKey": { + "wantsTrigger": true + }, + 'hifiHomeKey': { + 'reset': true + } + }), + dynamic: false, + position: spawnPosition + }; + + var blocky = Entities.addEntity(blockyProps); + + function cleanup() { + print('BLOCKY CLEANUP!') + Entities.deleteEntity(blocky); + } + + this.cleanup = cleanup; + + print('HOME CREATED BLOCKY GAME BLOCK 1') + +} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/hoverGame/hoverBall.js b/unpublishedScripts/DomainContent/Home/hoverGame/hoverBall.js new file mode 100644 index 0000000000..b4072d4b69 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/hoverGame/hoverBall.js @@ -0,0 +1,60 @@ +(function() { + var _this; + HoverBall = function() { + _this = this; + } + + var MIN_DISTANCE_THRESHOLD = 0.075; + + var CENTER_POINT_LOCATION = { + x: 0, + y: 0, + z: 0 + }; + + HoverBall.prototype = { + preload: function(entityID) { + this.entityID = entityID; + + }, + unload: function() { + + }, + startDistanceGrab: function() { + + }, + continueDistantGrab: function() { + var position = Entities.getEntityProperties(_this.entityID).position; + var distanceFromCenterPoint = Vec3.distance(position, CENTER_POINT_LOCATION); + if (distanceFromCenterPoint < MIN_DISTANCE_THRESHOLD) { + + _this.turnOnGlow(); + } else { + _this.turnOffGlow(); + } + }, + releaseGrab: function() { + _this.turnOffGlow(); + }, + turnOnGlow: function() { + + }, + turnOffGlow: function() { + + }, + findHoverContainer: function() { + var position = Entities.getEntityProperties(_this.entityID).position; + var results = Entities.findEntities(position, 3); + results.forEach(function(item) { + var props = Entities.getEntityProperties(item); + if (props.name.indexOf('hoverGame_container') > -1) { + return item + } + }) + }, + + } + + return new HoverBall(); + +}) \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/hoverGame/hoverContainer.js b/unpublishedScripts/DomainContent/Home/hoverGame/hoverContainer.js new file mode 100644 index 0000000000..3391879793 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/hoverGame/hoverContainer.js @@ -0,0 +1,28 @@ +(function() { + + HoverContainer = function() { + + } + + HoverContainer.prototype = { + preload: function(entityID) { + this.entityID = entityID; + + var data = { + action: 'add', + id: this.entityID + }; + Messages.sendLocalMessage('Hifi-Hand-RayPick-Blacklist', JSON.stringify(data)) + }, + unload: function() { + var data = { + action: 'remove', + id: this.entityID + }; + Messages.sendLocalMessage('Hifi-Hand-RayPick-Blacklist', JSON.stringify(data)) + } + } + + return new HoverContainer(); + +}) \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/hoverGame/wrapper.js b/unpublishedScripts/DomainContent/Home/hoverGame/wrapper.js new file mode 100644 index 0000000000..a176e359fa --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/hoverGame/wrapper.js @@ -0,0 +1,80 @@ +// createPingPongGun.js +// +// Script Type: Entity Spawner +// Created by James B. Pollack on 9/30/2015 +// Copyright 2015 High Fidelity, Inc. +// +// This script creates a gun that shoots ping pong balls when you pull the trigger on a hand controller. +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +//var position = {x:1098.4813,y:461.6781,z:-71.3820} +// var dimensions = {x:1.0233,y:3.1541,z:0.8684} +HoverGame = function(spawnPosition, spawnRotation) { + + var scriptURL = "atp:/hoverGame/hoverInner.js"; + + var hoverContainerProps = { + type: 'Model', + modelURL: 'atp:/hoverGame/hover.fbx', + name: 'home_model_hoverGame_container', + dimensions: {x:1.0233,y:3.1541,z:0.8684}, + compoundShapeURL: 'atp:/hoverGame/hoverHull.obj', + rotation: spawnRotation, + script: scriptURL, + userData: JSON.stringify({ + "grabbableKey": { + "grabbable":false + }, + 'hifiHomeKey': { + 'reset': true + } + }), + dynamic: false, + position: spawnPosition + }; + + var hoverBall = { + type: 'Sphere', + name: 'home_model_hoverGame_sphere', + dimensions: { + x: 0.25, + y: 0.25, + z: 0.25, + }, + compoundShapeURL: 'atp:/hoverGame/hoverHull.obj', + rotation: spawnRotation, + script: scriptURL, + userData: JSON.stringify({ + 'hifiHomeKey': { + 'reset': true + } + }), + dynamic: true, + gravity:{ + x:0, + y:-9.8, + z:0 + }, + position: spawnPosition, + userData:JSON.stringify({ + grabKey:{ + shouldCollideWith:'static' + } + }) + }; + + var hoverContainer = Entities.addEntity(hoverContainerProps); + var hoverBall = Entities.addEntity(hoverContainerProps); + + function cleanup() { + print('HOVER GAME CLEANUP!') + Entities.deleteEntity(hoverInner); + } + + this.cleanup = cleanup; + + print('HOME CREATED HOVER GAME') + +} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/kineticObjects/bench.json b/unpublishedScripts/DomainContent/Home/kineticObjects/bench.json new file mode 100644 index 0000000000..6ad65af88d --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/kineticObjects/bench.json @@ -0,0 +1,37 @@ +{ + "Entities": [{ + "name": "home_model_bench", + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/bench/Bench.obj", + "created": "2016-05-17T19:27:31Z", + "dimensions": { + "x": 2.3647537231445312, + "y": 0.51260757446289062, + "z": 0.49234861135482788 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{733c3f02-a98a-4876-91dc-320a26a07090}", + "modelURL": "atp:/kineticObjects/bench/Bench.fbx", + "queryAACube": { + "scale": 2.4692578315734863, + "x": -1.2346289157867432, + "y": -1.2346289157867432, + "z": -1.2346289157867432 + }, + "rotation": { + "w": 0.88613712787628174, + "x": -0.0015716552734375, + "y": -0.46337074041366577, + "z": -1.52587890625e-05 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true}}" + }], + "Version": 57 +} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/kineticObjects/blocks.json b/unpublishedScripts/DomainContent/Home/kineticObjects/blocks.json deleted file mode 100644 index 08331169de..0000000000 --- a/unpublishedScripts/DomainContent/Home/kineticObjects/blocks.json +++ /dev/null @@ -1,778 +0,0 @@ -{ - "Entities": [{ - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.05000000074505806, - "y": 0.05000000074505806, - "z": 0.05000000074505806 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{5371218c-e05b-49da-ac70-81f1f76c55ea}", - "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", - "name": "home_model_block", - "position": { - "x": 0.69732666015625, - "y": 0.1600341796875, - "z": 0.28265380859375 - }, - "queryAACube": { - "scale": 0.086602538824081421, - "x": 0.6540253758430481, - "y": 0.11673291027545929, - "z": 0.23935253918170929 - }, - "rotation": { - "w": 0.996917724609375, - "x": -0.0001678466796875, - "y": 0.078294038772583008, - "z": -0.0003204345703125 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.05000000074505806, - "y": 0.05000000074505806, - "z": 0.05000000074505806 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{ccc1198a-a501-48b8-959a-68297258aea7}", - "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", - "name": "home_model_block", - "position": { - "x": 0.47344970703125, - "y": 0.06005859375, - "z": 0.30706787109375 - }, - "queryAACube": { - "scale": 0.086602538824081421, - "x": 0.4301484227180481, - "y": 0.01675732433795929, - "z": 0.2637665867805481 - }, - "rotation": { - "w": 0.70644688606262207, - "x": 0.70638585090637207, - "y": -0.030960559844970703, - "z": 0.031174182891845703 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{3aaf5dd5-16d8-4852-880d-8256de68de19}", - "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", - "name": "home_model_block", - "position": { - "x": 0.2613525390625, - "y": 0.01007080078125, - "z": 0.359466552734375 - }, - "queryAACube": { - "scale": 0.27386128902435303, - "x": 0.12442189455032349, - "y": -0.12685984373092651, - "z": 0.22253590822219849 - }, - "rotation": { - "w": -4.57763671875e-05, - "x": 0.35637450218200684, - "y": -4.57763671875e-05, - "z": 0.93432521820068359 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.029999999329447746, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{0474a29f-c45b-4d42-ae95-0c0bd1e6c501}", - "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", - "name": "home_model_block", - "position": { - "x": 0.30487060546875, - "y": 0.01007080078125, - "z": 0.188262939453125 - }, - "queryAACube": { - "scale": 0.25670996308326721, - "x": 0.17651562392711639, - "y": -0.11828418076038361, - "z": 0.059907957911491394 - }, - "rotation": { - "w": 0.99496448040008545, - "x": 1.52587890625e-05, - "y": 0.10020601749420166, - "z": 0.0002288818359375 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.10000000149011612, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{53e06851-8346-45ac-bdb5-0a74c99b5bd5}", - "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", - "name": "home_model_block", - "position": { - "x": 0.40277099609375, - "y": 0.035064697265625, - "z": 0.254364013671875 - }, - "queryAACube": { - "scale": 0.28722813725471497, - "x": 0.25915694236755371, - "y": -0.10854937136173248, - "z": 0.11074994504451752 - }, - "rotation": { - "w": 0.70650792121887207, - "x": -0.031143665313720703, - "y": -0.031143665313720703, - "z": 0.70632481575012207 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.029999999329447746, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{38bcb70d-e384-4b60-878a-e34d4830f045}", - "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", - "name": "home_model_block", - "position": { - "x": 0.54962158203125, - "y": 0.010040283203125, - "z": 0.294647216796875 - }, - "queryAACube": { - "scale": 0.25670996308326721, - "x": 0.42126661539077759, - "y": -0.11831469833850861, - "z": 0.16629223525524139 - }, - "rotation": { - "w": 0.999969482421875, - "x": -7.62939453125e-05, - "y": -0.0037384629249572754, - "z": 0.0001068115234375 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{fa8f8bbc-5bd0-4121-985d-75ce2f68eba1}", - "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", - "name": "home_model_block", - "position": { - "x": 0.52001953125, - "y": 0.01007080078125, - "z": 0 - }, - "queryAACube": { - "scale": 0.27386128902435303, - "x": 0.38308888673782349, - "y": -0.12685984373092651, - "z": -0.13693064451217651 - }, - "rotation": { - "w": 0.9861142635345459, - "x": -7.62939453125e-05, - "y": -0.16603344678878784, - "z": -7.62939453125e-05 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.029999999329447746, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{d4b8582b-b707-453c-89c6-65e358da5cd7}", - "modelURL": "atp:/kineticObjects/blocks/planky_yellow.fbx", - "name": "home_model_block", - "position": { - "x": 0.66876220703125, - "y": 0, - "z": 0.012939453125 - }, - "queryAACube": { - "scale": 0.25670996308326721, - "x": 0.54040724039077759, - "y": -0.12835498154163361, - "z": -0.11541552841663361 - }, - "rotation": { - "w": 0.70589756965637207, - "x": 0.036270737648010254, - "y": -0.036331713199615479, - "z": -0.70647746324539185 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{3b5b53fb-7ee5-44eb-9b81-8de8a525c433}", - "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", - "name": "home_model_block", - "position": { - "x": 0.83819580078125, - "y": 0.135040283203125, - "z": 0.261627197265625 - }, - "queryAACube": { - "scale": 0.27386128902435303, - "x": 0.70126515626907349, - "y": -0.0018903613090515137, - "z": 0.12469655275344849 - }, - "rotation": { - "w": 0.69332420825958252, - "x": 0.13832306861877441, - "y": -0.13841456174850464, - "z": -0.69353783130645752 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.10000000149011612, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{0d1f27e9-7e74-4263-9428-8c8f7aac94a6}", - "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", - "name": "home_model_block", - "position": { - "x": 0.61773681640625, - "y": 0.0350341796875, - "z": 0.265533447265625 - }, - "queryAACube": { - "scale": 0.28722813725471497, - "x": 0.47412276268005371, - "y": -0.10857988893985748, - "z": 0.12191937863826752 - }, - "rotation": { - "w": 0.9998779296875, - "x": -4.57763671875e-05, - "y": -0.014206171035766602, - "z": 1.52587890625e-05 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.10000000149011612, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{79ea518f-aac3-45ff-b22d-6d295b3c9e87}", - "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", - "name": "home_model_block", - "position": { - "x": 0.7188720703125, - "y": 0.08502197265625, - "z": 0.26397705078125 - }, - "queryAACube": { - "scale": 0.28722813725471497, - "x": 0.57525801658630371, - "y": -0.058592095971107483, - "z": 0.12036298215389252 - }, - "rotation": { - "w": 0.99993896484375, - "x": -4.57763671875e-05, - "y": -0.0099946856498718262, - "z": -0.0001068115234375 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.05000000074505806, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{ff470ff9-c889-4893-a25f-80895bff0e9a}", - "modelURL": "atp:/kineticObjects/blocks/planky_blue.fbx", - "name": "home_model_block", - "position": { - "x": 0.74981689453125, - "y": 0.010040283203125, - "z": 0.258575439453125 - }, - "queryAACube": { - "scale": 0.25980761647224426, - "x": 0.61991310119628906, - "y": -0.11986352503299713, - "z": 0.12867163121700287 - }, - "rotation": { - "w": 0.99993896484375, - "x": -4.57763671875e-05, - "y": -0.010666072368621826, - "z": -0.0003814697265625 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.10000000149011612, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{b5319f85-603d-436b-8bbe-fc9f798ca738}", - "modelURL": "atp:/kineticObjects/blocks/planky_green.fbx", - "name": "home_model_block", - "position": { - "x": 0.8824462890625, - "y": 0.0350341796875, - "z": 0.281097412109375 - }, - "queryAACube": { - "scale": 0.28722813725471497, - "x": 0.73883223533630371, - "y": -0.10857988893985748, - "z": 0.13748334348201752 - }, - "rotation": { - "w": 0.999847412109375, - "x": -4.57763671875e-05, - "y": -0.016922235488891602, - "z": 1.52587890625e-05 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.05000000074505806, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{944a4616-8dac-4d6a-a92b-49fa98514416}", - "modelURL": "atp:/kineticObjects/blocks/planky_blue.fbx", - "name": "home_model_block", - "position": { - "x": 0.963623046875, - "y": 0.010009765625, - "z": 0.25885009765625 - }, - "queryAACube": { - "scale": 0.25980761647224426, - "x": 0.83371925354003906, - "y": -0.11989404261112213, - "z": 0.12894628942012787 - }, - "rotation": { - "w": 0.999847412109375, - "x": -4.57763671875e-05, - "y": -0.017379999160766602, - "z": 1.52587890625e-05 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.05000000074505806, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{ea6a1038-7047-4a1e-bdbd-076d6e41508c}", - "modelURL": "atp:/kineticObjects/blocks/planky_blue.fbx", - "name": "home_model_block", - "position": { - "x": 0.49188232421875, - "y": 0.010040283203125, - "z": 0.27752685546875 - }, - "queryAACube": { - "scale": 0.25980761647224426, - "x": 0.36197853088378906, - "y": -0.11986352503299713, - "z": 0.14762304723262787 - }, - "rotation": { - "w": 0.99798583984375, - "x": -4.57763671875e-05, - "y": -0.063248634338378906, - "z": 4.57763671875e-05 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.05000000074505806, - "y": 0.05000000074505806, - "z": 0.05000000074505806 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{ff65f5dd-2d53-4127-86da-05156a42946d}", - "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", - "name": "home_model_block", - "position": { - "x": 0, - "y": 0.010101318359375, - "z": 0.353302001953125 - }, - "queryAACube": { - "scale": 0.086602538824081421, - "x": -0.04330126941204071, - "y": -0.03319995105266571, - "z": 0.3100007176399231 - }, - "rotation": { - "w": 0.55049967765808105, - "x": 0.44353401660919189, - "y": -0.44359505176544189, - "z": -0.55083543062210083 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.10000000149011612, - "y": 0.05000000074505806, - "z": 0.25 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{3a9acd14-f754-4c70-b294-9f622c000785}", - "modelURL": "atp:/kineticObjects/blocks/planky_red.fbx", - "name": "home_model_block", - "position": { - "x": 0.88006591796875, - "y": 0.010040283203125, - "z": 0.05718994140625 - }, - "queryAACube": { - "scale": 0.27386128902435303, - "x": 0.74313527345657349, - "y": -0.12689036130905151, - "z": -0.079740703105926514 - }, - "rotation": { - "w": 0.86965739727020264, - "x": -4.57763671875e-05, - "y": -0.4936751127243042, - "z": -4.57763671875e-05 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }, { - "collisionSoundURL": "atp:/kineticObjects/blocks/ToyWoodBlock.L.wav", - "collisionsWillMove": 1, - "created": "2016-03-23T21:29:36Z", - "dimensions": { - "x": 0.05000000074505806, - "y": 0.05000000074505806, - "z": 0.05000000074505806 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "velocity": { - "x": 0, - "y": -0.1, - "z": 0 - }, - "id": "{bb014301-247b-44d0-8b09-b830fea4439e}", - "modelURL": "atp:/kineticObjects/blocks/planky_natural.fbx", - "name": "home_model_block", - "position": { - "x": 0.80487060546875, - "y": 0.010040283203125, - "z": 0.19500732421875 - }, - "queryAACube": { - "scale": 0.086602538824081421, - "x": 0.7615693211555481, - "y": -0.03326098620891571, - "z": 0.15170605480670929 - }, - "rotation": { - "w": 0.70440220832824707, - "x": 0.060776710510253906, - "y": -0.060868263244628906, - "z": -0.70455479621887207 - }, - "shapeType": "box", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }], - "Version": 57 -} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/kineticObjects/blueChair.json b/unpublishedScripts/DomainContent/Home/kineticObjects/blueChair.json deleted file mode 100644 index 2556cd6223..0000000000 --- a/unpublishedScripts/DomainContent/Home/kineticObjects/blueChair.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "Entities": [{ - "collisionsWillMove": 1, - "compoundShapeURL": "atp:/kineticObjects/blueChair/Comfy_Chair_Blue_hull.obj", - "created": "2016-03-29T17:37:52Z", - "dimensions": { - "x": 1.1764, - "y": 1.4557, - "z": 1.2657 - }, - "dynamic": 1, - "gravity": { - "x": 0, - "y": -10, - "z": 0 - }, - "id": "{51a44c3a-ec4a-4c79-8034-aeb5c45660b5}", - "modelURL": "atp:/kineticObjects/blueChair/Comfy_Chair_Blue.fbx", - "name": "home_model_comfyChair", - "queryAACube": { - "scale": 1.9147497415542603, - "x": -0.95737487077713013, - "y": -0.95737487077713013, - "z": -0.95737487077713013 - }, - "rotation": { - "w": 0.46746015548706055, - "x": -0.0017547607421875, - "y": 0.88400089740753174, - "z": 0.0024261474609375 - }, - "shapeType": "compound", - "type": "Model", - "userData": "{\"hifiHomeKey\":{\"reset\":true}}" - }], - "Version": 57 -} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/kineticObjects/dressingRoomBricabrac.json b/unpublishedScripts/DomainContent/Home/kineticObjects/dressingRoomBricabrac.json new file mode 100644 index 0000000000..c87fd7bc98 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/kineticObjects/dressingRoomBricabrac.json @@ -0,0 +1,554 @@ +{ + "Entities": [{ + "name": "home_model_dressing_room_bricabrac", + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/skully/skullyhull.obj", + "created": "2016-05-16T19:34:28Z", + "dimensions": { + "x": 0.19080814719200134, + "y": 0.20009028911590576, + "z": 0.21198928356170654 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -6, + "z": 0 + }, + "id": "{cef37b0a-bb3d-4549-a645-f3a934f82148}", + "modelURL": "atp:/kineticObjects/skully/skully.fbx", + "position": { + "x": 0.254150390625, + "y": 0.4500732421875, + "z": 0.26517486572265625 + }, + "queryAACube": { + "scale": 0.34840109944343567, + "x": 0.079949840903282166, + "y": 0.27587270736694336, + "z": 0.090974316000938416 + }, + "rotation": { + "w": 0.11515986919403076, + "x": -0.087693572044372559, + "y": 0.88818192481994629, + "z": -0.43608760833740234 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/dressingRoom/trump.obj", + "created": "2016-05-18T00:02:46Z", + "dimensions": { + "x": 0.25387090444564819, + "y": 0.28642392158508301, + "z": 0.31468403339385986 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{6483a752-5ba0-4a02-bee5-3290781dfef8}", + "modelURL": "atp:/dressingRoom/trump.fbx", + "position": { + "x": 0.3887939453125, + "y": 0.879974365234375, + "z": 0.2674407958984375 + }, + "queryAACube": { + "scale": 0.49549484252929688, + "x": 0.14104652404785156, + "y": 0.63222694396972656, + "z": 0.019693374633789062 + }, + "rotation": { + "w": 0.58565652370452881, + "x": -0.039444565773010254, + "y": 0.73434042930603027, + "z": -0.34084075689315796 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/dressingRoom/dreads.obj", + "created": "2016-05-18T00:02:46Z", + "dimensions": { + "x": 0.30918264389038086, + "y": 0.31221473217010498, + "z": 0.29840445518493652 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{2f2fb50b-35f0-4818-9cfa-e29f7aeb7a1f}", + "modelURL": "atp:/dressingRoom/dreads.fbx", + "position": { + "x": 0.5389404296875, + "y": 0.52008056640625, + "z": 0.09856414794921875 + }, + "queryAACube": { + "scale": 0.53114700317382812, + "x": 0.27336692810058594, + "y": 0.25450706481933594, + "z": -0.16700935363769531 + }, + "rotation": { + "w": 0.85949492454528809, + "x": 0.051773905754089355, + "y": -0.41289389133453369, + "z": 0.29680323600769043 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/tophat/tophat.obj", + "created": "2016-05-16T16:59:22Z", + "dimensions": { + "x": 0.38495281338691711, + "y": 0.26857495307922363, + "z": 0.39648750424385071 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{8cff801b-cb50-47d2-a1e8-4f7ee245d2ee}", + "modelURL": "atp:/kineticObjects/tophat/tophat.fbx", + "position": { + "x": 0, + "y": 0.541900634765625, + "z": 0.4959869384765625 + }, + "queryAACube": { + "scale": 0.61442941427230835, + "x": -0.30721470713615417, + "y": 0.23468592762947083, + "z": 0.18877223134040833 + }, + "rotation": { + "w": 0.92727553844451904, + "x": -0.18382543325424194, + "y": 0.32610058784484863, + "z": 0.0003204345703125 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/hair/m2.obj", + "created": "2016-05-16T17:12:28Z", + "dimensions": { + "x": 0.094467177987098694, + "y": 0.079604864120483398, + "z": 0.029766213148832321 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{0805851a-4ef1-4075-b4b3-5692ca7d6352}", + "modelURL": "atp:/kineticObjects/hair/m3.fbx", + "position": { + "x": 0.0111083984375, + "y": 0.00689697265625, + "z": 0.45806884765625 + }, + "queryAACube": { + "scale": 0.12707087397575378, + "x": -0.052427038550376892, + "y": -0.056638464331626892, + "z": 0.39453339576721191 + }, + "rotation": { + "w": 0.84777605533599854, + "x": 0.43642330169677734, + "y": 0.26695656776428223, + "z": -0.13978791236877441 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/dressingRoom/rectangleFrames.obj", + "created": "2016-05-18T15:50:52Z", + "dimensions": { + "x": 0.18497957289218903, + "y": 0.048084259033203125, + "z": 0.14581345021724701 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{692df470-2a76-4d5b-971b-257291ff67f7}", + "modelURL": "atp:/dressingRoom/rectangleFrames.fbx", + "name": "rectangleFrames.fbx", + "position": { + "x": 0.3701171875, + "y": 0.062652587890625, + "z": 0.35735321044921875 + }, + "queryAACube": { + "scale": 0.24039779603481293, + "x": 0.24991828203201294, + "y": -0.057546310126781464, + "z": 0.23715430498123169 + }, + "rotation": { + "w": -0.084428191184997559, + "x": -0.10658425092697144, + "y": 0.9651484489440918, + "z": -0.2235599160194397 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/hair/b3.obj", + "created": "2016-05-16T17:10:17Z", + "dimensions": { + "x": 0.19054701924324036, + "y": 0.16880631446838379, + "z": 0.11410932987928391 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{32926ddc-7c3b-49ca-97da-56e69af211af}", + "modelURL": "atp:/kineticObjects/hair/b3.fbx", + "position": { + "x": 0.75, + "y": 0.0643310546875, + "z": 0 + }, + "queryAACube": { + "scale": 0.27897074818611145, + "x": 0.61051464080810547, + "y": -0.075154319405555725, + "z": -0.13948537409305573 + }, + "rotation": { + "w": -0.26207369565963745, + "x": 0.055374979972839355, + "y": 0.93298232555389404, + "z": 0.24034488201141357 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/hair/b1.obj", + "created": "2016-05-16T17:05:55Z", + "dimensions": { + "x": 0.18918535113334656, + "y": 0.15465652942657471, + "z": 0.11267256736755371 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{c412654f-9feb-489d-91f9-6f4eb369afe7}", + "modelURL": "atp:/kineticObjects/hair/b1.fbx", + "position": { + "x": 0.55712890625, + "y": 0.0443115234375, + "z": 0.0774078369140625 + }, + "queryAACube": { + "scale": 0.2690814733505249, + "x": 0.42258816957473755, + "y": -0.090229213237762451, + "z": -0.057132899761199951 + }, + "rotation": { + "w": -0.26680397987365723, + "x": 0.16276800632476807, + "y": 0.81954681873321533, + "z": 0.4802471399307251 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/hair/m3.obj", + "created": "2016-05-16T17:12:28Z", + "dimensions": { + "x": 0.15590831637382507, + "y": 0.057838320732116699, + "z": 0.033922493457794189 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{c2df6722-e970-4c36-bf42-b117e2bc13c4}", + "modelURL": "atp:/kineticObjects/hair/m3.fbx", + "position": { + "x": 0.1549072265625, + "y": 0.006439208984375, + "z": 0.34037017822265625 + }, + "queryAACube": { + "scale": 0.16971567273139954, + "x": 0.070049390196800232, + "y": -0.078418627381324768, + "z": 0.25551235675811768 + }, + "rotation": { + "w": -0.2230105996131897, + "x": 0.19484245777130127, + "y": 0.73751425743103027, + "z": 0.60689711570739746 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/dressingRoom/Elvis.obj", + "created": "2016-05-17T23:58:24Z", + "dimensions": { + "x": 0.22462925314903259, + "y": 0.32056856155395508, + "z": 0.32186508178710938 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{5fe0d835-e52b-432b-8ffe-2e7467613974}", + "modelURL": "atp:/dressingRoom/Elvis.fbx", + "position": { + "x": 0.6776123046875, + "y": 0.89739990234375, + "z": 0.036468505859375 + }, + "queryAACube": { + "scale": 0.50677376985549927, + "x": 0.42422541975975037, + "y": 0.64401304721832275, + "z": -0.21691837906837463 + }, + "rotation": { + "w": 0.76330208778381348, + "x": 0.26140224933624268, + "y": -0.43398183584213257, + "z": 0.40090024471282959 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/dressingRoom/roundFrames.obj", + "created": "2016-05-18T15:55:14Z", + "dimensions": { + "x": 0.18497957289218903, + "y": 0.061892151832580566, + "z": 0.14581345021724701 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{2706fd7c-9f99-4e11-aebe-4c7274d29d69}", + "modelURL": "atp:/dressingRoom/roundFrames.fbx", + "name": "roundFrames.fbx", + "position": { + "x": 0.1690673828125, + "y": 0.08319091796875, + "z": 0.50496673583984375 + }, + "queryAACube": { + "scale": 0.24353571236133575, + "x": 0.047299526631832123, + "y": -0.038576938211917877, + "z": 0.38319888710975647 + }, + "rotation": { + "w": -0.27809566259384155, + "x": -0.059800088405609131, + "y": 0.93838405609130859, + "z": -0.19615471363067627 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/hair/m1.obj", + "created": "2016-05-16T17:10:17Z", + "dimensions": { + "x": 0.10473950952291489, + "y": 0.044521570205688477, + "z": 0.032888296991586685 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{448c53c2-bf1e-44f5-b28f-06da33a4145d}", + "modelURL": "atp:/kineticObjects/hair/m1.fbx", + "position": { + "x": 0.29052734375, + "y": 0, + "z": 0.254638671875 + }, + "queryAACube": { + "scale": 0.11846592277288437, + "x": 0.23129437863826752, + "y": -0.059232961386442184, + "z": 0.19540570676326752 + }, + "rotation": { + "w": -0.24409854412078857, + "x": -0.17210650444030762, + "y": 0.76794075965881348, + "z": -0.56667429208755493 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/hair/b2.obj", + "created": "2016-05-16T17:05:55Z", + "dimensions": { + "x": 0.12604480981826782, + "y": 0.090894937515258789, + "z": 0.069697588682174683 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{33d3ba77-d2c9-4a5f-ba1c-f6f731d05221}", + "modelURL": "atp:/kineticObjects/hair/b3.fbx", + "position": { + "x": 0.4130859375, + "y": 0.030181884765625, + "z": 0.182342529296875 + }, + "queryAACube": { + "scale": 0.1703142374753952, + "x": 0.3279288113117218, + "y": -0.054975233972072601, + "z": 0.097185410559177399 + }, + "rotation": { + "w": -0.2856946587562561, + "x": 0.17711150646209717, + "y": 0.86263823509216309, + "z": 0.37792015075683594 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true}}" + }, { + "name": "home_model_dressing_room_bricabrac", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/snapback/snapback.obj", + "created": "2016-05-16T17:01:33Z", + "dimensions": { + "x": 0.19942393898963928, + "y": 0.12862896919250488, + "z": 0.30034130811691284 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{26e895b7-4a83-45fe-a3e9-5b6ba5f5717e}", + "modelURL": "atp:/kineticObjects/snapback/snapback.fbx", + "position": { + "x": 0.7891845703125, + "y": 0.492218017578125, + "z": 0.0359649658203125 + }, + "queryAACube": { + "scale": 0.38277959823608398, + "x": 0.59779477119445801, + "y": 0.30082821846008301, + "z": -0.15542483329772949 + }, + "rotation": { + "w": -0.31783014535903931, + "x": -0.04985123872756958, + "y": 0.92556643486022949, + "z": -0.19945067167282104 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true},\"wearable\":{\"joints\":{\"head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"Head\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"hair\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}],\"neck\":[{\"x\":0,\"y\":0,\"z\":0},{\"w\":0,\"x\":0,\"y\":0,\"z\":0}]}}}" + }], + "Version": 57 +} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/kineticObjects/umbrella.json b/unpublishedScripts/DomainContent/Home/kineticObjects/umbrella.json new file mode 100644 index 0000000000..6ab8f11ddc --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/kineticObjects/umbrella.json @@ -0,0 +1,39 @@ +{ + "Entities": [{ + "name": "home_model_umbrella", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "collisionsWillMove": 1, + "compoundShapeURL": "atp:/kineticObjects/umbrella/umbrellaopen_ch.obj", + "created": "2016-05-16T22:48:54Z", + "dimensions": { + "x": 1.2649545669555664, + "y": 1.0218980312347412, + "z": 1.2649545669555664 + }, + "dynamic": 1, + "gravity": { + "x": 0, + "y": -5, + "z": 0 + }, + "id": "{59f5cc21-c6e8-4deb-a1e2-0364e82fe062}", + "modelURL": "atp:/kineticObjects/umbrella/umbrella_open.fbx", + "queryAACube": { + "scale": 2.0602173805236816, + "x": -1.0301086902618408, + "y": -1.0301086902618408, + "z": -1.0301086902618408 + }, + "rotation": { + "w": 0.66066992282867432, + "x": -0.2207522988319397, + "y": 0.64501416683197021, + "z": -0.31422901153564453 + }, + "shapeType": "compound", + "type": "Model", + "userData": "{\"hifiHomeKey\":{\"reset\":true}}" + }], + "Version": 57 +} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/kineticObjects/wrapper.js b/unpublishedScripts/DomainContent/Home/kineticObjects/wrapper.js index 5b0e75dc94..d4512823db 100644 --- a/unpublishedScripts/DomainContent/Home/kineticObjects/wrapper.js +++ b/unpublishedScripts/DomainContent/Home/kineticObjects/wrapper.js @@ -1,24 +1,23 @@ -print('HOME KINETIC INCLUDING WRAPPER') - -var BOOKS_URL = "atp:/kineticObjects/books.json" -var UPPER_BOOKSHELF_URL = "atp:/kineticObjects/upperBookShelf.json" -var LOWER_BOOKSHELF_URL = "atp:/kineticObjects/lowerBookShelf.json" +print('HOME KINETIC INCLUDING WRAPPER'); +var BOOKS_URL = "atp:/kineticObjects/books.json"; +var UPPER_BOOKSHELF_URL = "atp:/kineticObjects/upperBookShelf.json"; +var LOWER_BOOKSHELF_URL = "atp:/kineticObjects/lowerBookShelf.json"; var CHAIR_URL = 'atp:/kineticObjects/deskChair.json'; -var BLUE_CHAIR_URL = 'atp:/kineticObjects/blueChair.json'; - var FRUIT_BOWL_URL = "atp:/kineticObjects/fruit.json" - -var LIVING_ROOM_LAMP_URL = "atp:/kineticObjects/deskLamp.json" +var LIVING_ROOM_LAMP_URL = "atp:/kineticObjects/deskLamp.json"; var TRASHCAN_URL = "atp:/kineticObjects/trashcan.json" var BLOCKS_URL = "atp:/kineticObjects/blocks.json"; -var PLAYA_POSTER_URL = "atp:/kineticObjects/postersPlaya.json" -var CELL_POSTER_URL = "atp:/kineticObjects/postersCell.json" -var STUFF_ON_SHELVES_URL = "atp:/kineticObjects/stuff_on_shelves.json" -var JUNK_URL = "atp:/kineticObjects/junk.json" +var PLAYA_POSTER_URL = "atp:/kineticObjects/postersPlaya.json"; +var CELL_POSTER_URL = "atp:/kineticObjects/postersCell.json"; +var STUFF_ON_SHELVES_URL = "atp:/kineticObjects/stuff_on_shelves.json"; +var JUNK_URL = "atp:/kineticObjects/junk.json"; +var BRICABRAC_URL = "atp:/kineticObjects/dressingRoomBricabrac.json"; +var BENCH_URL = "atp:/kineticObjects/bench.json"; +var UMBRELLA_URL = "atp:/kineticObjects/umbrella.json"; FruitBowl = function(spawnLocation, spawnRotation) { - print('CREATE FRUIT BOWL') + print('CREATE FRUIT BOWL'); var created = []; function create() { @@ -42,7 +41,7 @@ FruitBowl = function(spawnLocation, spawnRotation) { } LivingRoomLamp = function(spawnLocation, spawnRotation) { - print('CREATE LIVING ROOM LAMP') + print('CREATE LIVING ROOM LAMP'); var created = []; function create() { @@ -65,7 +64,7 @@ LivingRoomLamp = function(spawnLocation, spawnRotation) { } UpperBookShelf = function(spawnLocation, spawnRotation) { - print('CREATE UPPER SHELF') + print('CREATE UPPER SHELF'); var created = []; function create() { @@ -89,7 +88,7 @@ UpperBookShelf = function(spawnLocation, spawnRotation) { LowerBookShelf = function(spawnLocation, spawnRotation) { - print('CREATE LOWER SHELF') + print('CREATE LOWER SHELF'); var created = []; function create() { @@ -112,7 +111,7 @@ LowerBookShelf = function(spawnLocation, spawnRotation) { } Chair = function(spawnLocation, spawnRotation) { - print('CREATE CHAIR') + print('CREATE CHAIR'); var created = []; function create() { @@ -134,32 +133,8 @@ Chair = function(spawnLocation, spawnRotation) { this.cleanup = cleanup; } -BlueChair = function(spawnLocation, spawnRotation) { - print('CREATE BLUE CHAIR') - var created = []; - - function create() { - var success = Clipboard.importEntities(BLUE_CHAIR_URL); - - if (success === true) { - created = Clipboard.pasteEntities(spawnLocation) - print('created ' + created); - } - }; - - function cleanup() { - created.forEach(function(obj) { - Entities.deleteEntity(obj); - }) - }; - - create(); - - this.cleanup = cleanup; -} - Trashcan = function(spawnLocation, spawnRotation) { - print('CREATE TRASHCAN') + print('CREATE TRASHCAN'); var created = []; function create() { @@ -183,7 +158,7 @@ Trashcan = function(spawnLocation, spawnRotation) { } Books = function(spawnLocation, spawnRotation) { - print('CREATE BOOKS') + print('CREATE BOOKS'); var created = []; function create() { @@ -206,7 +181,7 @@ Books = function(spawnLocation, spawnRotation) { } Blocks = function(spawnLocation, spawnRotation) { - print('EBL CREATE BLOCKS') + print('EBL CREATE BLOCKS'); var created = []; function create() { @@ -230,7 +205,7 @@ Blocks = function(spawnLocation, spawnRotation) { } PosterCell = function(spawnLocation, spawnRotation) { - print('CREATE CELL POSTER') + print('CREATE CELL POSTER'); var created = []; function create() { @@ -253,7 +228,7 @@ PosterCell = function(spawnLocation, spawnRotation) { } PosterPlaya = function(spawnLocation, spawnRotation) { - print('CREATE PLAYA POSTER') + print('CREATE PLAYA POSTER'); var created = []; function create() { @@ -276,9 +251,10 @@ PosterPlaya = function(spawnLocation, spawnRotation) { } StuffOnShelves = function(spawnLocation, spawnRotation) { - print('CREATE STUFF ON SHELVES') + print('CREATE STUFF ON SHELVES'); var created = []; + function create() { var success = Clipboard.importEntities(STUFF_ON_SHELVES_URL); if (success === true) { @@ -293,17 +269,115 @@ StuffOnShelves = function(spawnLocation, spawnRotation) { }) }; + + + create(); + + this.cleanup = cleanup; +} + +HomeJunk = function(spawnLocation, spawnRotation) { + print('HOME CREATE JUNK'); + var created = []; + function addVelocityDown() { + print('HOME ADDING DOWN VELOCITY TO SHELF ITEMS') + created.forEach(function(obj) { + Entities.editEntity(obj, { + velocity: { + x: 0, + y: -0.1, + z: 0 + } + }); + }) + } + function create() { + var success = Clipboard.importEntities(JUNK_URL); + if (success === true) { + created = Clipboard.pasteEntities(spawnLocation) + print('created ' + created); + addVelocityDown(); + } + }; + + function cleanup() { + created.forEach(function(obj) { + Entities.deleteEntity(obj); + }) + }; + + create(); + + this.cleanup = cleanup; +} + +// Bricabrac = function(spawnLocation, spawnRotation) { +// print('HOME CREATE BRICABRAC'); +// var created = []; + +// function addVelocityDown() { +// print('HOME ADDING DOWN VELOCITY TO DRESSING ROOM ITEMS') +// created.forEach(function(obj) { +// Entities.editEntity(obj, { +// velocity: { +// x: 0, +// y: -0.1, +// z: 0 +// } +// }); +// }) +// } + +// function create() { +// var success = Clipboard.importEntities(BRICABRAC_URL); +// if (success === true) { +// created = Clipboard.pasteEntities(spawnLocation) +// print('created ' + created); +// addVelocityDown(); + +// } +// }; + +// function cleanup() { +// created.forEach(function(obj) { +// Entities.deleteEntity(obj); +// }) +// }; + +// create(); + +// this.cleanup = cleanup; +// } + +Bench = function(spawnLocation, spawnRotation) { + print('HOME CREATE BENCH'); + var created = []; + + function create() { + var success = Clipboard.importEntities(BENCH_URL); + if (success === true) { + created = Clipboard.pasteEntities(spawnLocation) + print('created ' + created); + } + }; + + function cleanup() { + created.forEach(function(obj) { + Entities.deleteEntity(obj); + }) + }; + create(); this.cleanup = cleanup; } -HomeJunk = function(spawnLocation, spawnRotation) { - print('HOME CREATE JUNK') +Umbrella = function(spawnLocation, spawnRotation) { + print('HOME CREATE Umbrella'); var created = []; function create() { - var success = Clipboard.importEntities(JUNK_URL); + var success = Clipboard.importEntities(UMBRELLA_URL); if (success === true) { created = Clipboard.pasteEntities(spawnLocation) print('created ' + created); diff --git a/unpublishedScripts/DomainContent/Home/pingPongGun/target.js b/unpublishedScripts/DomainContent/Home/pingPongGun/target.js new file mode 100644 index 0000000000..1a8ea6a25b --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/pingPongGun/target.js @@ -0,0 +1,76 @@ +// +// Copyright 2016 High Fidelity, Inc. +// +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + + +(function() { + + var _this = this; + _this.COLLISION_COOLDOWN_TIME = 5000; + + var startPosition = { + x: 1100.6343, + y: 460.5366, + z: -65.2142 + }; + + var startRotation = Quat.fromPitchYawRollDegrees(3.1471, -170.4121, -0.0060) + + _this.preload = function(entityID) { + + //set our id so other methods can get it. + _this.entityID = entityID; + + //variables we will use to keep track of when to reset the cow + _this.timeSinceLastCollision = 0; + _this.shouldUntip = true; + } + + _this.collisionWithEntity = function(myID, otherID, collisionInfo) { + //we dont actually use any of the parameters above, since we don't really care what we collided with, or the details of the collision. + //5 seconds after a collision, upright the target. protect from multiple collisions in a short timespan with the 'shouldUntip' variable + if (_this.shouldUntip) { + //in Hifi, preface setTimeout with Script.setTimeout + Script.setTimeout(function() { + _this.untip(); + _this.shouldUntip = true; + }, _this.COLLISION_COOLDOWN_TIME); + } + + _this.shouldUntip = false; + + } + + _this.untip = function() { + var props = Entities.getEntityProperties(this.entityID); + var rotation = Quat.safeEulerAngles(props.rotation) + if (rotation.x > 3 || rotation.x < -3 || rotation.z > 3 || rotation.z < -3) { + print('home target - too much pitch or roll, fix it'); + + //we zero out the velocity and angular velocity + Entities.editEntity(_this.entityID, { + position: startPosition, + rotation: startRotation, + velocity: { + x: 0, + y: 0, + z: 0 + }, + angularVelocity: { + x: 0, + y: 0, + z: 0 + } + }); + } + + + + } + + +}); \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/reset.js b/unpublishedScripts/DomainContent/Home/reset.js index f6e5a01c7c..cd1dcea76e 100644 --- a/unpublishedScripts/DomainContent/Home/reset.js +++ b/unpublishedScripts/DomainContent/Home/reset.js @@ -43,6 +43,8 @@ var transformerPath = Script.resolvePath("atp:/dressingRoom/wrapper.js"); + var blockyPath = Script.resolvePath("atp:/blocky/wrapper.js"); + Script.include(utilsPath); Script.include(kineticPath); @@ -53,6 +55,7 @@ Script.include(cuckooClockPath); Script.include(pingPongGunPath); Script.include(transformerPath); + Script.include(blockyPath); var TRANSFORMER_URL_ROBOT = 'atp:/dressingRoom/simple_robot.fbx'; @@ -60,7 +63,7 @@ var TRANSFORMER_URL_WILL = 'atp:/dressingRoom/will_T.fbx'; - var TRANSFORMER_URL_STYLIZED_FEMALE = 'atp:/dressingRoom/stylized_female.fbx'; + var TRANSFORMER_URL_STYLIZED_FEMALE = 'atp:/dressingRoom/ArtemisJacketOn.fbx'; var TRANSFORMER_URL_PRISCILLA = 'atp:/dressingRoom/priscilla.fbx'; @@ -199,6 +202,8 @@ _this.createKineticEntities(); _this.createScriptedEntities(); _this.setupDressingRoom(); + _this.createMilkPailBalls(); + _this.createTarget(); }, 750); } }, @@ -338,18 +343,18 @@ z: -0.0013 }); + var blocky = new BlockyGame({ + x: 1098.4424, + y: 460.3090, + z: -66.2190 + }) + print('HOME after creating scripted entities') }, createKineticEntities: function() { - var blocks = new Blocks({ - x: 1097.1383, - y: 460.3790, - z: -66.4895 - }); - var fruitBowl = new FruitBowl({ x: 1105.3185, y: 460.3221, @@ -380,12 +385,6 @@ z: -79.8097 }); - var blueChair = new BlueChair({ - x: 1100.4821, - y: 459.9147, - z: -75.9071 - }); - var stuffOnShelves = new StuffOnShelves({ x: 1105.9432, @@ -422,6 +421,25 @@ y: 461, z: -73.3 }); + + // var dressingRoomBricabrac = new Bricabrac({ + // x: 1106.8, + // y: 460.3909, + // z: -72.6 + // }); + + var bench = new Bench({ + x: 1100.1210, + y: 459.4552, + z: -75.4537 + }); + + var umbrella = new Umbrella({ + x: 1097.5510, + y: 459.5230, + z: -84.3897 + }); + print('HOME after creating kinetic entities'); }, @@ -510,6 +528,100 @@ var dais = Entities.addEntity(daisProperties); }, + createTarget: function() { + var targetProperties = { + type: 'Model', + modelURL: 'atp:/pingPongGun/Target.fbx', + shapeType: 'Compound', + compoundShapeURL: 'atp:/pingPongGun/Target.obj', + dimensions: { + x: 0.4937, + y: 0.6816, + z: 0.0778 + }, + rotation: Quat.fromPitchYawRollDegrees(3.1471, -170.4121, -0.0060), + gravity: { + x: 0, + y: -9.8, + z: 0 + }, + velocity: { + x: 0, + y: -0.1, + z: 0 + }, + position: { + x: 1100.6343, + y: 460.5366, + z: -65.2142 + }, + userData: JSON.stringify({ + grabbableKey: { + grabbable: true + }, + hifiHomeKey: { + reset: true + } + }), + script: 'atp:/pingPongGun/target.js', + density: 100, + dynamic: true + } + var target = Entities.addEntity(targetProperties); + }, + + createMilkPailBalls: function() { + var locations = [{ + x: 1099.0795, + y: 459.4186, + z: -70.8603 + }, { + x: 1099.2826, + y: 459.4186, + z: -70.9094 + }, { + x: 1099.5012, + y: 459.4186, + z: -71.1000 + }]; + + var ballProperties = { + type: 'Model', + modelURL: 'atp:/static_objects/StarBall.fbx', + shapeType: 'Sphere', + dimensions: { + x: 0.1646, + y: 0.1646, + z: 0.1646 + }, + gravity: { + x: 0, + y: -9.8, + z: 0 + }, + velocity: { + x: 0, + y: -0.1, + z: 0 + }, + userData: JSON.stringify({ + grabbableKey: { + grabbable: true + }, + hifiHomeKey: { + reset: true + } + }), + dynamic: true + }; + + locations.forEach(function(location) { + ballProperties.position = location; + var ball = Entities.addEntity(ballProperties); + }); + print('HOME made milk pail balls') + }, + createTransformers: function() { var firstDollPosition = { x: 1107.6, diff --git a/unpublishedScripts/DomainContent/Home/switches/dressingRoomDiscLights.js b/unpublishedScripts/DomainContent/Home/switches/dressingRoomLights.js similarity index 89% rename from unpublishedScripts/DomainContent/Home/switches/dressingRoomDiscLights.js rename to unpublishedScripts/DomainContent/Home/switches/dressingRoomLights.js index 6e2c4908b9..a44fa8f2f3 100644 --- a/unpublishedScripts/DomainContent/Home/switches/dressingRoomDiscLights.js +++ b/unpublishedScripts/DomainContent/Home/switches/dressingRoomLights.js @@ -147,6 +147,16 @@ setEntityCustomData('home-switch', _this.entityID, { state: 'on' }); + + Entities.editEntity(this.entityID, { + "animation": { + "currentFrame": 1, + "firstFrame": 1, + "hold": 1, + "lastFrame": 2, + "url": "atp:/switches/lightswitch.fbx" + }, + }); } else { glowLights.forEach(function(glowLight) { @@ -161,9 +171,18 @@ setEntityCustomData('home-switch', this.entityID, { state: 'off' }); + + Entities.editEntity(this.entityID, { + "animation": { + "currentFrame": 3, + "firstFrame": 3, + "hold": 1, + "lastFrame": 4, + "url": "atp:/switches/lightswitch.fbx" + }, + }); } - this.flipSwitch(); Audio.playSound(this.switchSound, { volume: 0.5, position: this.position @@ -171,20 +190,7 @@ }, - flipSwitch: function() { - var rotation = Entities.getEntityProperties(this.entityID, "rotation").rotation; - var axis = { - x: 0, - y: 1, - z: 0 - }; - var dQ = Quat.angleAxis(180, axis); - rotation = Quat.multiply(rotation, dQ); - Entities.editEntity(this.entityID, { - rotation: rotation - }); - }, preload: function(entityID) { this.entityID = entityID; diff --git a/unpublishedScripts/DomainContent/Home/switches/livingRoomFan.js b/unpublishedScripts/DomainContent/Home/switches/livingRoomFan.js index 6005503cf3..09d0fb97c8 100644 --- a/unpublishedScripts/DomainContent/Home/switches/livingRoomFan.js +++ b/unpublishedScripts/DomainContent/Home/switches/livingRoomFan.js @@ -11,7 +11,7 @@ (function() { - var FAN_SOUND_ENTITY_NAME ="home_sfx_ceiling_fan" + var FAN_SOUND_ENTITY_NAME = "home_sfx_ceiling_fan" var SEARCH_RADIUS = 100; var _this; var utilitiesScript = Script.resolvePath('../utils.js'); @@ -74,16 +74,16 @@ if (!_this.fanSoundEntity) { return; } - print('HOME FAN OFF 2') + print('HOME FAN OFF 2') var soundUserData = getEntityCustomData("soundKey", _this.fanSoundEntity); if (!soundUserData) { print("NO SOUND USER DATA! RETURNING."); return; } - print('HOME FAN OFF 3') + print('HOME FAN OFF 3') soundUserData.volume = 0.0; setEntityCustomData("soundKey", _this.fanSoundEntity, soundUserData); - print('HOME FAN OFF 4') + print('HOME FAN OFF 4') }, findFan: function() { @@ -105,7 +105,7 @@ var fan = null; print('HOME LOOKING FOR A FAN') - print('HOME TOTAL ENTITIES:: ' +entities.length) + print('HOME TOTAL ENTITIES:: ' + entities.length) entities.forEach(function(entity) { var props = Entities.getEntityProperties(entity); if (props.name === FAN_SOUND_ENTITY_NAME) { @@ -129,10 +129,22 @@ if (this._switch.state === 'off') { this.fanRotationOn(); this.fanSoundOn(); + setEntityCustomData('home-switch', this.entityID, { state: 'on' }); + Entities.editEntity(this.entityID, { + "animation": { + "currentFrame": 1, + "firstFrame": 1, + "hold": 1, + "lastFrame": 2, + "url": "atp:/switches/fanswitch.fbx" + }, + }) + + } else { this.fanRotationOff(); this.fanSoundOff(); @@ -140,9 +152,20 @@ setEntityCustomData('home-switch', this.entityID, { state: 'off' }); + Entities.editEntity(this.entityID, { + "animation": { + "currentFrame": 3, + "firstFrame": 3, + "hold": 1, + "lastFrame": 4, + "url": "atp:/switches/fanswitch.fbx" + }, + }) + + } - this.flipSwitch(); + Audio.playSound(this.switchSound, { volume: 0.5, position: this.position @@ -150,21 +173,6 @@ }, - flipSwitch: function() { - var rotation = Entities.getEntityProperties(this.entityID, "rotation").rotation; - var axis = { - x: 0, - y: 1, - z: 0 - }; - var dQ = Quat.angleAxis(180, axis); - rotation = Quat.multiply(rotation, dQ); - - Entities.editEntity(this.entityID, { - rotation: rotation - }); - }, - preload: function(entityID) { this.entityID = entityID; setEntityCustomData('grabbableKey', this.entityID, { diff --git a/unpublishedScripts/DomainContent/Home/switches/livingRoomDiscLights.js b/unpublishedScripts/DomainContent/Home/switches/livingRoomLights.js similarity index 89% rename from unpublishedScripts/DomainContent/Home/switches/livingRoomDiscLights.js rename to unpublishedScripts/DomainContent/Home/switches/livingRoomLights.js index eef64fd3f8..2c6208481f 100644 --- a/unpublishedScripts/DomainContent/Home/switches/livingRoomDiscLights.js +++ b/unpublishedScripts/DomainContent/Home/switches/livingRoomLights.js @@ -39,7 +39,7 @@ "Metal-brushed-light.jpg": "atp:/models/Lights-Living-Room-2.fbx/Lights-Living-Room-2.fbm/Metal-brushed-light.jpg", "Tex.CeilingLight.Emit": "atp:/models/Lights-Living-Room-2.fbx/Lights-Living-Room-2.fbm/CielingLight-On-Diffuse.jpg", "TexCeilingLight.Diffuse": "atp:/models/Lights-Living-Room-2.fbx/Lights-Living-Room-2.fbm/CielingLight-Base.jpg" - } + }; Entities.editEntity(glowDisc, { textures: JSON.stringify(data) @@ -51,7 +51,7 @@ "Metal-brushed-light.jpg": "atp:/models/Lights-Living-Room-2.fbx/Lights-Living-Room-2.fbm/Metal-brushed-light.jpg", "Tex.CeilingLight.Emit": "", "TexCeilingLight.Diffuse": "atp:/models/Lights-Living-Room-2.fbx/Lights-Living-Room-2.fbm/CielingLight-Base.jpg" - } + }; Entities.editEntity(glowDisc, { textures: JSON.stringify(data) @@ -143,6 +143,16 @@ state: 'on' }); + Entities.editEntity(this.entityID, { + "animation": { + "currentFrame": 1, + "firstFrame": 1, + "hold": 1, + "lastFrame": 2, + "url": "atp:/switches/lightswitch.fbx" + }, + }); + } else { glowLights.forEach(function(glowLight) { _this.glowLightOff(glowLight); @@ -156,9 +166,18 @@ setEntityCustomData('home-switch', this.entityID, { state: 'off' }); + + Entities.editEntity(this.entityID, { + "animation": { + "currentFrame": 3, + "firstFrame": 3, + "hold": 1, + "lastFrame": 4, + "url": "atp:/switches/lightswitch.fbx" + }, + }); } - this.flipSwitch(); Audio.playSound(this.switchSound, { volume: 0.5, position: this.position @@ -166,21 +185,6 @@ }, - flipSwitch: function() { - var rotation = Entities.getEntityProperties(this.entityID, "rotation").rotation; - var axis = { - x: 0, - y: 1, - z: 0 - }; - var dQ = Quat.angleAxis(180, axis); - rotation = Quat.multiply(rotation, dQ); - - Entities.editEntity(this.entityID, { - rotation: rotation - }); - }, - preload: function(entityID) { this.entityID = entityID; setEntityCustomData('grabbableKey', this.entityID, { diff --git a/unpublishedScripts/DomainContent/Home/teleport/downsparkle.json b/unpublishedScripts/DomainContent/Home/teleport/downsparkle.json new file mode 100644 index 0000000000..8682a4ed4c --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/teleport/downsparkle.json @@ -0,0 +1,65 @@ +down sparkle + +{ + "color": { + "red": "#", + "green": "c", + "blue": "f" + }, + "isEmitting": 1, + "maxParticles": 1000, + "lifespan": 2, + "emitRate": 10, + "emitSpeed": 0.1, + "speedSpread": 0.6, + "emitOrientation": { + "x": 0.8, + "y": 0, + "z": 0, + "w": 0.7071068286895752 + }, + "emitDimensions": { + "x": 0, + "y": 0, + "z": 0 + }, + "polarStart": 0, + "polarFinish": 0, + "azimuthStart": -3.1415927410125732, + "azimuthFinish": 3.1415927410125732, + "emitAcceleration": { + "x": 0, + "y": -1, + "z": 0 + }, + "accelerationSpread": { + "x": 0, + "y": 1, + "z": 0 + }, + "particleRadius": 0.02500000037252903, + "radiusSpread": 0, + "radiusStart": 0.079, + "radiusFinish": 0.053, + "colorSpread": { + "red": "#", + "green": "e", + "blue": "8" + }, + "colorStart": { + "red": 255, + "green": 255, + "blue": 255 + }, + "colorFinish": { + "red": "#", + "green": "d", + "blue": "4" + }, + "alpha": 1, + "alphaSpread": 0, + "alphaStart": 1, + "alphaFinish": 0, + "emitterShouldTrail": 1, + "textures": "atp:/teleport/sparkle1.png" +} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/teleport/downsparkler.json b/unpublishedScripts/DomainContent/Home/teleport/downsparkler.json new file mode 100644 index 0000000000..09ec79910a --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/teleport/downsparkler.json @@ -0,0 +1,63 @@ +{ + "Entities": [ + { + "accelerationSpread": { + "x": 0, + "y": 1, + "z": 0 + }, + "color": { + "blue": 207, + "green": 207, + "red": 207 + }, + "colorFinish": { + "blue": 207, + "green": 207, + "red": 207 + }, + "colorSpread": { + "blue": 125, + "green": 125, + "red": 232 + }, + "colorStart": { + "blue": 207, + "green": 207, + "red": 207 + }, + "created": "2016-05-23T20:41:38Z", + "dimensions": { + "x": 2.6566545963287354, + "y": 2.6566545963287354, + "z": 2.6566545963287354 + }, + "emitAcceleration": { + "x": 0, + "y": -1, + "z": 0 + }, + "emitOrientation": { + "w": 0.66226339340209961, + "x": 0.74927115440368652, + "y": -1.5258940038620494e-05, + "z": -1.5258940038620494e-05 + }, + "emitRate": 10, + "emitSpeed": 0.10000000149011612, + "id": "{e700e0a1-026a-4ebd-8609-6068b32df14e}", + "lifespan": 2, + "name": "home_particle_teleport_sparkle_down", + "queryAACube": { + "scale": 4.6014609336853027, + "x": -2.3007304668426514, + "y": -2.3007304668426514, + "z": -2.3007304668426514 + }, + "speedSpread": 0.60000002384185791, + "textures": "atp:/teleport/sparkle1.png", + "type": "ParticleEffect" + } + ], + "Version": 57 +} diff --git a/unpublishedScripts/DomainContent/Home/teleport/upsparkle.json b/unpublishedScripts/DomainContent/Home/teleport/upsparkle.json new file mode 100644 index 0000000000..508366d293 --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/teleport/upsparkle.json @@ -0,0 +1,63 @@ +{ + "color": { + "red": 255, + "green": 255, + "blue": 255 + }, + "isEmitting": 1, + "maxParticles": 210, + "lifespan": 3.6, + "emitRate": 11, + "emitSpeed": 0.5, + "speedSpread": 0.8, + "emitOrientation": { + "x": -1, + "y": -0.0000152587890625, + "z": -0.0000152587890625, + "w": 1 + }, + "emitDimensions": { + "x": 0, + "y": 0, + "z": 0 + }, + "polarStart": 0, + "polarFinish": 0, + "azimuthStart": -3.1415927410125732, + "azimuthFinish": 3.1415927410125732, + "emitAcceleration": { + "x": 0, + "y": 0.2, + "z": 0 + }, + "accelerationSpread": { + "x": 0, + "y": 0.30000000000000004, + "z": 0 + }, + "particleRadius": 0.02500000037252903, + "radiusSpread": 0, + "radiusStart": 0.013, + "radiusFinish": 0.014, + "colorSpread": { + "red": 0, + "green": 0, + "blue": 0 + }, + "colorStart": { + "red": 255, + "green": 255, + "blue": 255 + }, + "colorFinish": { + "red": 255, + "green": 255, + "blue": 255 + }, + "alpha": 1, + "alphaSpread": 0, + "alphaStart": 1, + "alphaFinish": 0, + "emitterShouldTrail": 0, + "textures": "atp:/teleport/sparkle2.png" +} \ No newline at end of file diff --git a/unpublishedScripts/DomainContent/Home/teleport/upsparkler.json b/unpublishedScripts/DomainContent/Home/teleport/upsparkler.json new file mode 100644 index 0000000000..a573b3deae --- /dev/null +++ b/unpublishedScripts/DomainContent/Home/teleport/upsparkler.json @@ -0,0 +1,44 @@ +{ + "Entities": [ + { + "accelerationSpread": { + "x": 0, + "y": 0.30000001192092896, + "z": 0 + }, + "created": "2016-05-23T20:56:55Z", + "dimensions": { + "x": 15.000479698181152, + "y": 15.000479698181152, + "z": 15.000479698181152 + }, + "emitAcceleration": { + "x": 0, + "y": 0.20000000298023224, + "z": 0 + }, + "emitOrientation": { + "w": 0.7070763111114502, + "x": -0.70713728666305542, + "y": -1.5258539860951714e-05, + "z": -1.5258539860951714e-05 + }, + "emitRate": 11, + "emitSpeed": 0.5, + "id": "{57104b1c-01a9-4f2b-b7bf-9eb406e8d78b}", + "lifespan": 3.5999999046325684, + "maxParticles": 210, + "name": "home_teleport_sparkler_up", + "queryAACube": { + "scale": 25.981592178344727, + "x": -12.990796089172363, + "y": -12.990796089172363, + "z": -12.990796089172363 + }, + "speedSpread": 0.80000001192092896, + "textures": "atp:/teleport/sparkle2.png", + "type": "ParticleEffect" + } + ], + "Version": 57 +}