@lovelace_lol/polymer 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/index.d.ts +19 -7
- package/dist/index.js +24 -24
- package/package.json +1 -1
- package/src/polymer/runtime/rust_embody_host.cljs +17 -15
package/README.md
CHANGED
|
@@ -186,7 +186,8 @@ import {
|
|
|
186
186
|
await initEmbodyCore();
|
|
187
187
|
if (supportsRustEmbodyPreset('cc4')) {
|
|
188
188
|
const engine = createRustEmbodyHostUnbound({
|
|
189
|
-
|
|
189
|
+
profileMode: 'preset',
|
|
190
|
+
presetId: 'cc4',
|
|
190
191
|
profile: characterProfileOverrides,
|
|
191
192
|
});
|
|
192
193
|
engine.onReady({ model, meshes });
|
package/dist/index.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export interface WasmHairPhysicsSolver {
|
|
|
80
80
|
|
|
81
81
|
export interface WasmRuntimeCore {
|
|
82
82
|
configure(profileJson: string, modelJson: string): void;
|
|
83
|
+
configure_with_profile(profileJson: string, modelJson: string): void;
|
|
83
84
|
configure_with_preset(presetId: string, overrideJson: string, modelJson: string): void;
|
|
84
85
|
viseme_slot_index(slotId: string): number;
|
|
85
86
|
load_au_morph_bindings(values: Float32Array): void;
|
|
@@ -150,14 +151,24 @@ export interface EmbodyCoreWasmModule {
|
|
|
150
151
|
RuntimeCore: new (visemeSlotCount: number) => WasmRuntimeCore;
|
|
151
152
|
}
|
|
152
153
|
|
|
153
|
-
export type RustEmbodyProfileMode = '
|
|
154
|
+
export type RustEmbodyProfileMode = 'preset' | 'profile';
|
|
154
155
|
|
|
155
|
-
export
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
156
|
+
export type RustEmbodyHostConfig =
|
|
157
|
+
| {
|
|
158
|
+
profileMode?: 'preset';
|
|
159
|
+
presetId?: string;
|
|
160
|
+
/** @deprecated Use presetId. */
|
|
161
|
+
presetType?: string;
|
|
162
|
+
profile?: Partial<Profile>;
|
|
163
|
+
meshes?: unknown[];
|
|
164
|
+
}
|
|
165
|
+
| {
|
|
166
|
+
profileMode: 'profile';
|
|
167
|
+
profile: Profile;
|
|
168
|
+
presetId?: never;
|
|
169
|
+
presetType?: never;
|
|
170
|
+
meshes?: unknown[];
|
|
171
|
+
};
|
|
161
172
|
|
|
162
173
|
/**
|
|
163
174
|
* Polymer's CLJS-owned character runtime contract.
|
|
@@ -175,6 +186,7 @@ export interface PolymerCharacterRuntime {
|
|
|
175
186
|
setProfile(profile: Profile): void;
|
|
176
187
|
getProfile(): Profile;
|
|
177
188
|
getProfileMode(): RustEmbodyProfileMode;
|
|
189
|
+
getPresetId(): string | null;
|
|
178
190
|
supportsPreset(presetId?: string): boolean;
|
|
179
191
|
setAU(id: number, value: number, balance?: number): void;
|
|
180
192
|
getAU(id: number): number;
|
package/dist/index.js
CHANGED
|
@@ -621,8 +621,8 @@ Td,q);return function(){return Z.i(h,Kk,q)}},notifyAgentSpeech:function(q){retur
|
|
|
621
621
|
case "WORD":return c(new m(null,2,[V,"agentSpeechWord",nw,nw.g(q)],null));default:return null}},dispose:function(){if(t(x(l)))return null;P(l,!0);var q=x(k);t(q)&&(q.l?q.l():q.call(null),P(k,null));P(e,Vg);P(f,Vg);P(h,Vg);return AI(d,"dispose")},notifyAgentSpeechEnd:function(){return c(new m(null,1,[V,"agentSpeechEnded"],null))},getState:function(){return AI(d,"snapshot")},onTranscript:function(q){Z.i(e,Td,q);return function(){return Z.i(e,Kk,q)}}}},EI=function(a){for(var b=[],c=arguments.length,
|
|
622
622
|
d=0;;)if(d<c)b.push(arguments[d]),d+=1;else break;return DI(arguments[0],arguments[1],2<b.length?new vc(b.slice(2),0,null):null)},DI=function(a,b,c){a=a[b];if(!fd(a))throw Error(["Embody Wasm module is missing method: ",w.g(b)].join(""));return oe(a,c)},GI=function(){var a=x(FI);if(t(a))return a;throw Error("Embody Wasm core is not initialized. Call initEmbodyCore / init-core! first.");},II=function(){var a=x(HI);t(a)||(a=esm_import$$lovelace_lol$embody$wasm.initEmbodyCore().then(function(b){var c=
|
|
623
623
|
esm_import$$lovelace_lol$embody$wasm.EMBODY_CORE_ABI_VERSION;c=t(c)?c:1;var d=EI(b,"core_abi_version");if(ye(d,c))throw Error(["Embody Wasm ABI mismatch: runtime\x3d",w.g(d)," expected\x3d",w.g(c)].join(""));P(FI,b);return b}).catch(function(b){P(HI,null);throw b;}),P(HI,a));return a},JI=function(a,b){return DI(GI(),"solve_bilateral_values",K([a,b]))},KI=function(){return EI(GI(),"default_hair_physics_config_values")},MI=function(a){for(var b=[],c=arguments.length,d=0;;)if(d<c)b.push(arguments[d]),
|
|
624
|
-
d+=1;else break;return LI(arguments[0],1<b.length?new vc(b.slice(1),0,null):null)},LI=function(a,b){if(!t(a))throw Error("The installed Embody package is missing a required Three.js adapter export.");return Reflect.construct(a,Ad(b))},NI=function(a){return ya(a)?K(a):yc},OI=function(a){var b="number"===typeof a;a=t(b?isFinite(a):b)?a:0;a=1<a?1:a;return 0>a?0:a},PI=function(a){a="string"===typeof a?a.trim().toLowerCase():null;return
|
|
625
|
-
a
|
|
624
|
+
d+=1;else break;return LI(arguments[0],1<b.length?new vc(b.slice(1),0,null):null)},LI=function(a,b){if(!t(a))throw Error("The installed Embody package is missing a required Three.js adapter export.");return Reflect.construct(a,Ad(b))},NI=function(a){return ya(a)?K(a):yc},OI=function(a){var b="number"===typeof a;a=t(b?isFinite(a):b)?a:0;a=1<a?1:a;return 0>a?0:a},PI=function(a){a="string"===typeof a?a.trim().toLowerCase():null;return null==a||J.h("",a)?"cc4":a},QI=function(a){var b="string"===typeof a?
|
|
625
|
+
a.trim().toLowerCase():null;if(J.h(null,b)||J.h("",b)||J.h("preset",b)||J.h("embedded-preset",b))return"preset";if(J.h("profile",b)||J.h("resolved-profile",b)||J.h("exact",b)||J.h("exact-profile",b))return"profile";throw Error(['Unknown Rust Embody profileMode "',w.g(a),'". Expected "preset" or "profile".'].join(""));},RI=function(a,b){if(null==a){if(t(b))throw Error("Rust Embody profile mode requires a resolved profile object.");return""}if(ya(a)||ye("object",ba(a)))throw Error("Rust Embody profile must be a JSON object.");
|
|
626
626
|
return JSON.stringify(a)},TI=function(a){var b=GI();return td(SI.j(b,"has_preset",K([PI(a)])))},UI=function(a,b){a=t(a)?a[b]:null;return t(a)?a:{}},VI=function(a,b,c,d){d=ya(d)&&0<d.length?d:function(){var e=UI(c,"morphToMesh").face;return ya(e)&&0<e.length?e:a.map(function(f){return f.name})}();return Me(function(e){return b.get(e)},NI(d))},WI=function(a,b,c,d,e){return Ja(function(f,h){var l=h.morphTargetDictionary;h=h.morphTargetInfluences;l="number"===typeof d?d:t(l)?l[d]:null;return t(t(h)?"number"===
|
|
627
627
|
typeof l&&0<=l&&l<h.length:h)?Td.h(f,{infl:h,idx:l}):f},ef,VI(a,b,c,e))},XI=function(a,b,c,d,e){return Ja(function(f,h){h=h.infl[h.idx];h=t(h)?h:0;return f>h?f:h},0,WI(a,b,c,d,e))},YI=function(a,b){var c=UI(a,"auToMorphs")[w.g(b)];a=UI(a,"auToBones")[w.g(b)];b=function(){return t(c)?De(function(d){d=c[d];return 0<(t(d)?d:[]).length},new Q(null,3,5,T,["left","right","center"],null)):c}();return td(t(b)?ya(a)&&0<a.length:b)},ZI=function(a,b,c){a[c]=function(){function d(f){var h=null;if(0<arguments.length){h=
|
|
628
628
|
0;for(var l=Array(arguments.length-0);h<l.length;)l[h]=arguments[h+0],++h;h=new vc(l,0,null)}return e.call(this,h)}function e(f){return qe(SI,x(b),c,f)}d.C=0;d.G=function(f){f=C(f);return e(f)};d.j=e;return d}()};/*
|
|
@@ -979,29 +979,29 @@ pK=function pK(a){switch(arguments.length){case 0:return pK.l();case 1:return pK
|
|
|
979
979
|
pK.g=function(a){function b(la,R,aa){la=WI(x(ea),x(S),x(B),la,aa);R=OI(R);la=C(la);aa=null;for(var ta=0,oa=0;;)if(oa<ta){var Ka=aa.B(null,oa);Ka.infl[Ka.idx]=R;oa+=1}else if(la=C(la))aa=la,rd(aa)?(la=Yb(aa),ta=Zb(aa),aa=la,Ka=G(la),la=ta,ta=Ka):(Ka=D(aa),Ka.infl[Ka.idx]=R,la=F(aa),aa=null,ta=0),oa=0;else return null}function c(la){var R="number"===typeof la;la=t(R?isFinite(la):R)?la:0;la=0>la?0:la;if(0<la){R=SI(y,"active_transition_count");var aa=SI.j(y,"update",K([la]));SI.j(H,"tick",K([la]));(0<
|
|
980
980
|
R||0<aa)&&d();t(x(Aa))&&SI.j(x(Aa),"update",K([la]));return t(x(Qa))?SI.j(x(Qa),"update",K([la])):null}return null}function d(){var la=SI(y,"evaluate_morph_frame_delta"),R=SI(y,"evaluate_bone_frame_delta");0<la.length&&SI.j(A,"applyPackedMorphFrameDelta",K([la]));return 0<R.length?(SI.j(A,"applyPackedBoneFrameDelta",K([R])),t(x(W))?SI.j(x(W),"updateMatrixWorld",K([!0])):null):null}function e(){P(Ib,!1);P(E,null);if(null!=x(M)){var la=globalThis.cancelAnimationFrame;t(la)&&la.call(globalThis,x(M));
|
|
981
981
|
return P(M,null)}return null}function f(la){if(t(x(W))){la=t(la)?{profile:x(B),meshes:la}:{profile:x(B)};la=SI.j(v,"inspectModel",K([x(W),la]));var R=la.allMeshes;var aa=la.morphMeshes;aa=t(t(aa)?0<aa.length:aa)?aa:R;P(Ha,la);P(ea,aa);P(N,R);P(S,la.meshByName);P(pa,la.bones);da.meshes=aa;da.meshByName=x(S);da.bones=x(pa);SI.j(A,"setBindings",K([lK.g?lK.g(la):lK.call(null,la)]));SI.j(A,"applyMeshMaterialConfigs",K([x(W),UI(x(B),"meshes")]));t(x(Qa))&&(SI.j(x(Qa),"registerHairObjects",K([Ad(l())])),
|
|
982
|
-
SI.j(x(Qa),"setHairPhysicsProfileConfig",K([x(B).hairPhysics])));la=JSON.stringify(la.descriptor);r?SI.j(y,"
|
|
982
|
+
SI.j(x(Qa),"setHairPhysicsProfileConfig",K([x(B).hairPhysics])));la=JSON.stringify(la.descriptor);r?SI.j(y,"configure_with_profile",K([x(z),la])):SI.j(y,"configure_with_preset",K([u,x(z),la]));return d()}return null}function h(la){var R=bd(x(Jb),la);if(t(R))return R;la=UI(x(B),"auMixDefaults")[w.g(la)];return t(la)?la:1}function l(){return bf(function(la){la=UI(x(B),"meshes")[la.name];la=t(la)?la.category:null;return J.h(la,"hair")||J.h(la,"eyebrow")},NI(x(N)))}function n(la,R,aa,ta){var oa=WI(x(ea),
|
|
983
983
|
x(S),x(B),la,ta),Ka=Ja(function(ib,kb){kb=kb.infl[kb.idx];kb=t(kb)?kb:0;return ib>kb?ib:kb},0,oa);R=OI(R);return SI.j(H,"addTransition",K([["morph:",w.g(ya(ta)&&0<ta.length?ta.join(","):"*"),":",w.g(la)].join(""),Ka,R,t(aa)?aa:120,function(ib){for(var kb=C(oa),hb=null,be=0,Sg=0;;)if(Sg<be){var cf=hb.B(null,Sg);cf.infl[cf.idx]=OI(ib);Sg+=1}else if(kb=C(kb))hb=kb,rd(hb)?(kb=Yb(hb),be=Zb(hb),hb=kb,cf=G(kb),kb=be,be=cf):(cf=D(hb),cf.infl[cf.idx]=OI(ib),kb=F(hb),hb=null,be=0),Sg=0;else return null}]))}
|
|
984
|
-
var k=t(a)?a:{},q=GI(),p=QI(k.profileMode),r=J.h(p,"
|
|
985
|
-
Qa=Oe(null),rb=Oe([]),Jb=Oe(we),Ib=Oe(!1),M=Oe(null),E=Oe(null),da={},La=function R(){if(t(x(Ib))){var aa=globalThis.requestAnimationFrame;return t(aa)?P(M,aa.call(globalThis,function(ta){var oa=x(E);t(oa)?(oa=ta-oa,oa=(0>oa?0:oa)/1E3):oa=0;P(E,ta);c(oa);return R()})):null}return null};P(Aa,LI(jK,K([{getMeshByName:function(R){return x(S).get(R)},getMeshes:function(){return x(ea)},reapplyProceduralState:d,getBones:function(){return x(pa)},getCurrentBonePositionValue:function(R,
|
|
986
|
-
R?null:R.obj;R=null==R?null:R.position;return null==R?null:R[aa]},getCurrentBoneQuaternion:function(R){R=x(pa)[R];R=null==R?null:R.obj;R=null==R?null:R.quaternion;return null==R?null:R.clone()},getCurrentVisemeValue:function(R){R=x(rb)[R];return t(R)?R:0},getAUMixWeight:h,getCurrentMorphIndexValue:function(R,aa){return XI(x(ea),x(S),x(B),R,aa)},getCurrentMorphValue:function(R,aa){return XI(x(ea),x(S),x(B),R,aa)},getConfig:function(){return x(B)},computeSideValues:function(R,
|
|
987
|
-
return{left:R[0],right:R[1]}},getMeshNamesForViseme:function(){var R=x(B);return nK.g?nK.g(R):nK.call(null,R)},getModel:function(){return x(W)},getMeshNamesForAU:function(R){var aa=x(B);return mK.h?mK.h(aa,R):mK.call(null,aa,R)},isMixedAU:function(R){return YI(x(B),R)},getCompositeRotations:function(){var R=x(B);R=t(R)?R.compositeRotations:null;return ya(R)?R:[]},getCurrentAUValue:function(R){return SI.j(y,"get_au",K([R]))}}])));a=LI(kK,K([{getMeshByName:function(R){return x(S).get(R)},
|
|
988
|
-
bf(function(R){var aa=J.h;R=UI(x(B),"meshes")[R.name];return aa.call(J,"hair",null==R?null:R.category)},NI(x(N)))))},buildClip:function(R,aa,ta){return SI.j(x(Aa),"buildClip",K([R,aa,ta]))},cleanupSnippet:function(R){return SI.j(x(Aa),"cleanupSnippet",K([R]))}}]));SI.j(a,"setCore",K([q]));P(Qa,a);da.onReady=function(R){P(W,R.model);return f(R.meshes)};da.bindModel=f;da.setProfile=function(R){SI(y,"clear");SI(H,"clearTransitions");
|
|
989
|
-
"merge_embedded_preset",K([u,x(z)]))));return f(x(ea))};da.getProfile=function(){return x(B)};da.getProfileMode=function(){return p};da.supportsPreset=function(R){return TI(R)};da.setAU=function(R,aa,ta){SI.j(y,"set_au_signed",K([R,aa,"number"===typeof ta?ta:NaN]));return d()};da.getAU=function(R){return SI.j(y,"get_au",K([R]))};da.setContinuum=function(R,aa,ta,oa){SI.j(y,"set_continuum",
|
|
990
|
-
K([R,aa]))};da.transitionAU=function(R,aa,ta,oa){return SI.j(y,"transition_au",K([R,aa,t(ta)?ta:200,"number"===typeof oa?oa:NaN]))};da.transitionViseme=function(R,aa,ta,oa){return SI.j(y,"transition_viseme",K([R,aa,t(ta)?ta:80,t(oa)?oa:1]))};da.setViseme=function(R,aa,ta){SI.j(y,"set_viseme",K([R,aa]));SI.j(y,"set_viseme_jaw_scale",K([R,t(ta)?ta:1]));x(rb)[R]=aa;return d()};da.setVisemeById=
|
|
991
|
-
null};da.transitionVisemeById=function(R,aa,ta,oa){R=SI.j(y,"viseme_slot_index",K([R]));return 0<=R?SI.j(da,"transitionViseme",K([R,aa,t(ta)?ta:80,t(oa)?oa:1])):null};da.setAUMixWeight=function(R,aa){Z.o(Jb,U,R,aa);SI.j(y,"set_au_mix_weight",K([R,aa]));return d()};da.getAUMixWeight=h;da.hasLeftRightBones=function(R){R=UI(x(B),"auToBones")[w.g(R)];R=Yg(We.h(function(aa){return aa.side},NI(R)));
|
|
992
|
-
null;aa=function(ta,oa,Ka){switch(arguments.length){case 2:return R.call(this,ta,oa);case 3:return b(ta,oa,Ka)}throw Error("Invalid arity: "+arguments.length);};aa.h=R;aa.i=function(ta,oa,Ka){return b(ta,oa,Ka)};return aa}();da.setMorphOnMeshes=function(R,aa,ta){return b(aa,ta,R)};da.transitionMorph=function(){function R(oa,Ka,ib){return n(oa,Ka,ib,null)}function aa(oa,Ka){return n(oa,Ka,120,null)}
|
|
993
|
-
oa,Ka,ib);case 4:return n(oa,Ka,ib,kb)}throw Error("Invalid arity: "+arguments.length);};ta.h=aa;ta.i=R;ta.o=function(oa,Ka,ib,kb){return n(oa,Ka,ib,kb)};return ta}();da.getMorphTargets=function(){for(var R={},aa=C(NI(x(ea))),ta=null,oa=0,Ka=0;;)if(Ka<oa){var ib=ta.B(null,Ka),kb=ib.morphTargetDictionary;t(kb)&&(R[ib.name]=Object.keys(kb).sort());Ka+=1}else if(aa=C(aa))rd(aa)?(oa=
|
|
994
|
-
ta=null,oa=0),Ka=0;else break;return R};da.getMorphTargetIndices=function(){for(var R={},aa=C(NI(x(ea))),ta=null,oa=0,Ka=0;;)if(Ka<oa){var ib=ta.B(null,Ka),kb=ib.morphTargetDictionary;if(t(kb)){var hb=kb,be=Object.entries(hb).map(function(){return function(ig){return{name:ig[0],index:ig[1]}}}(aa,ta,oa,Ka,hb,kb,ib,R,k,q,p,r,u,null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,
|
|
995
|
-
y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,E,da));R[ib.name]=be}Ka+=1}else if(kb=C(aa)){ib=kb;if(rd(ib))aa=Yb(ib),Ka=Zb(ib),ta=aa,oa=G(aa),aa=Ka;else{hb=D(ib);be=hb.morphTargetDictionary;if(t(be)){var Sg=be,cf=Object.entries(Sg).map(function(){return function(ig){return{name:ig[0],index:ig[1]}}}(aa,ta,oa,Ka,Sg,be,hb,ib,kb,R,k,q,p,r,u,null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,
|
|
996
|
-
null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,E,da));R[hb.name]=cf}aa=F(ib);ta=null;oa=0}Ka=0}else break;return R};da.getHairMorphTargets=function(){function R(oa){return SI.j(x(Qa),"getHairMorphTargets",K([oa]))}function aa(){return SI(x(Qa),"getHairMorphTargets")}var ta=null;ta=function(oa){switch(arguments.length){case 0:return aa.call(this);case 1:return R.call(this,
|
|
997
|
-
R.name,ta=UI(x(B),"meshes")[aa];return{name:aa,visible:R.visible,morphCount:function(){var oa=R.morphTargetInfluences;return t(oa)?oa:[]}().length,category:function(){var oa=t(ta)?ta.category:null;return t(oa)?oa:"other"}()}})};da.getBones=function(){return x(pa)};da.setMeshVisible=function(R,aa){return t(x(W))?SI.j(A,"setMeshVisible",K([x(W),R,aa])):null};
|
|
998
|
-
SI.j(A,"highlightMesh",K([x(W),Ka,ib])):null}function ta(Ka){return t(x(W))?SI.j(A,"highlightMesh",K([x(W),Ka])):null}var oa=null;oa=function(Ka,ib,kb){switch(arguments.length){case 1:return ta.call(this,Ka);case 2:return aa.call(this,Ka,ib);case 3:return R.call(this,Ka,ib,kb)}throw Error("Invalid arity: "+arguments.length);};oa.g=ta;oa.h=aa;oa.i=R;return oa}();
|
|
999
|
-
aa){return t(x(W))?SI.j(A,"setMeshMaterialConfig",K([x(W),R,aa])):null};a=C(new Q(null,16,5,T,"registerHairObjects getRegisteredHairObjects getHairAppearance setHairColor setEyebrowColor setHairBaseColor setEyebrowBaseColor setHairGlow setEyebrowGlow setHairOutline setHairPhysicsEnabled isHairPhysicsEnabled setHairPhysicsConfig getHairPhysicsConfig validateHairMorphTargets applyHairStateToObject".split(" "),
|
|
1000
|
-
oa,Ka,ib,kb,hb,be,Sg,cf,ig,nn,vK,wK,xK,yK,zK,AK,BK,CK,DK,EK,FK,GK,EA){return function(){function on(jg){var kg=null;if(0<arguments.length){kg=0;for(var Tg=Array(arguments.length-0);kg<Tg.length;)Tg[kg]=arguments[kg+0],++kg;kg=new vc(Tg,0,null)}return pn.call(this,kg)}function pn(jg){return qe(SI,x(EA),Ka,jg)}on.C=0;on.G=function(jg){jg=C(jg);return pn(jg)};on.j=pn;return on}()}(a,Wa,cb,Ua,ec,k,q,p,r,u,null,z,
|
|
1001
|
-
Yb(ec),Ua=Zb(ec),Wa=a,cb=G(a),a=Ua;else{var sa=D(ec);da[sa]=function(R,aa,ta,oa,Ka,ib,kb,hb,be,Sg,cf,ig,nn,vK,wK,xK,yK,zK,AK,BK,CK,DK,EK,FK,GK,EA,on,pn){return function(){function jg(Tg){var Aj=null;if(0<arguments.length){Aj=0;for(var st=Array(arguments.length-0);Aj<st.length;)st[Aj]=arguments[Aj+0],++Aj;Aj=new vc(st,0,null)}return kg.call(this,Aj)}function kg(Tg){return qe(SI,x(pn),Ka,Tg)}jg.C=0;jg.G=
|
|
1002
|
-
B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,E,da);a=F(ec);Wa=null;cb=0}Ua=0}else break}da.updateHairPhysics=function(R){return SI.j(x(Qa),"update",K([R]))};da.update=c;da.start=function(){if(t(x(Ib)))return null;P(Ib,!0);P(E,null);return La()};da.stop=e;da.clear=function(){SI(y,"clear");SI(H,"clearTransitions");return d()};da.resetToNeutral=da.clear;da.dispose=function(){e();t(x(Aa))&&SI(x(Aa),"dispose");
|
|
1003
|
-
[]);P(N,[]);P(S,new Map);return P(pa,{})};a=C(oK);Wa=null;for(Ua=cb=0;;)if(Ua<cb)ec=Wa.B(null,Ua),ZI(da,Aa,ec),Ua+=1;else if(a=C(a))Wa=a,rd(Wa)?(a=Yb(Wa),Ua=Zb(Wa),Wa=a,cb=G(a),a=Ua):(a=D(Wa),ZI(da,Aa,a),a=F(Wa),Wa=null,cb=0),Ua=0;else break;return da};pK.C=1;
|
|
1004
|
-
qK.h=function(a,b){return II().then(function(){var c=pK.g(b);SI.j(c,"onReady",K([{model:a,meshes:b.meshes}]));return c})};qK.C=2;var rK=esm_import$$lovelace_lol$embody.Embody,sK,tK=esm_import$$lovelace_lol$embody.BLENDING_MODES;sK=t(tK)?tK:esm_import$$lovelace_lol$embody.THREE_BLENDING_MODES;
|
|
984
|
+
var k=t(a)?a:{},q=GI(),p=QI(k.profileMode),r=J.h(p,"profile"),u=PI(function(){var la=k.presetId;return t(la)?la:k.presetType}());if(!r&&za(SI.j(q,"has_preset",K([u]))))throw Error(['Rust Embody preset "',w.g(u),'" is not embedded. Known presets: ',w.g(SI(q,"list_presets").join(", ")),"."].join(""));var z=Oe(RI(k.profile,r)),B=Oe(r?JSON.parse(x(z)):JSON.parse(SI.j(q,"merge_embedded_preset",K([u,x(z)])))),I=q.RuntimeCore,y=LI(I,K([0])),v=MI(gK),A=MI(hK),H=MI(iK),W=Oe(null),ea=Oe([]),N=Oe([]),S=Oe(new Map),
|
|
985
|
+
pa=Oe({}),Ha=Oe(null),Aa=Oe(null),Qa=Oe(null),rb=Oe([]),Jb=Oe(we),Ib=Oe(!1),M=Oe(null),E=Oe(null),da={},La=function R(){if(t(x(Ib))){var aa=globalThis.requestAnimationFrame;return t(aa)?P(M,aa.call(globalThis,function(ta){var oa=x(E);t(oa)?(oa=ta-oa,oa=(0>oa?0:oa)/1E3):oa=0;P(E,ta);c(oa);return R()})):null}return null};P(Aa,LI(jK,K([{getMeshByName:function(R){return x(S).get(R)},getMeshes:function(){return x(ea)},reapplyProceduralState:d,getBones:function(){return x(pa)},getCurrentBonePositionValue:function(R,
|
|
986
|
+
aa){R=x(pa)[R];R=null==R?null:R.obj;R=null==R?null:R.position;return null==R?null:R[aa]},getCurrentBoneQuaternion:function(R){R=x(pa)[R];R=null==R?null:R.obj;R=null==R?null:R.quaternion;return null==R?null:R.clone()},getCurrentVisemeValue:function(R){R=x(rb)[R];return t(R)?R:0},getAUMixWeight:h,getCurrentMorphIndexValue:function(R,aa){return XI(x(ea),x(S),x(B),R,aa)},getCurrentMorphValue:function(R,aa){return XI(x(ea),x(S),x(B),R,aa)},getConfig:function(){return x(B)},computeSideValues:function(R,
|
|
987
|
+
aa){R=JI(R,t(aa)?aa:0);return{left:R[0],right:R[1]}},getMeshNamesForViseme:function(){var R=x(B);return nK.g?nK.g(R):nK.call(null,R)},getModel:function(){return x(W)},getMeshNamesForAU:function(R){var aa=x(B);return mK.h?mK.h(aa,R):mK.call(null,aa,R)},isMixedAU:function(R){return YI(x(B),R)},getCompositeRotations:function(){var R=x(B);R=t(R)?R.compositeRotations:null;return ya(R)?R:[]},getCurrentAUValue:function(R){return SI.j(y,"get_au",K([R]))}}])));a=LI(kK,K([{getMeshByName:function(R){return x(S).get(R)},
|
|
988
|
+
getSelectedHairMeshNames:function(){return Ad(We.h(function(R){return R.name},bf(function(R){var aa=J.h;R=UI(x(B),"meshes")[R.name];return aa.call(J,"hair",null==R?null:R.category)},NI(x(N)))))},buildClip:function(R,aa,ta){return SI.j(x(Aa),"buildClip",K([R,aa,ta]))},cleanupSnippet:function(R){return SI.j(x(Aa),"cleanupSnippet",K([R]))}}]));SI.j(a,"setCore",K([q]));P(Qa,a);da.onReady=function(R){P(W,R.model);return f(R.meshes)};da.bindModel=f;da.setProfile=function(R){SI(y,"clear");SI(H,"clearTransitions");
|
|
989
|
+
d();P(rb,[]);P(Jb,we);P(z,RI(R,r));P(B,r?JSON.parse(x(z)):JSON.parse(SI.j(q,"merge_embedded_preset",K([u,x(z)]))));return f(x(ea))};da.getProfile=function(){return x(B)};da.getProfileMode=function(){return p};da.getPresetId=function(){return r?null:u};da.supportsPreset=function(R){return TI(R)};da.setAU=function(R,aa,ta){SI.j(y,"set_au_signed",K([R,aa,"number"===typeof ta?ta:NaN]));return d()};da.getAU=function(R){return SI.j(y,"get_au",K([R]))};da.setContinuum=function(R,aa,ta,oa){SI.j(y,"set_continuum",
|
|
990
|
+
K([R,aa,ta,"number"===typeof oa?oa:NaN]));return d()};da.getContinuum=function(R,aa){return SI.j(y,"get_continuum",K([R,aa]))};da.transitionAU=function(R,aa,ta,oa){return SI.j(y,"transition_au",K([R,aa,t(ta)?ta:200,"number"===typeof oa?oa:NaN]))};da.transitionViseme=function(R,aa,ta,oa){return SI.j(y,"transition_viseme",K([R,aa,t(ta)?ta:80,t(oa)?oa:1]))};da.setViseme=function(R,aa,ta){SI.j(y,"set_viseme",K([R,aa]));SI.j(y,"set_viseme_jaw_scale",K([R,t(ta)?ta:1]));x(rb)[R]=aa;return d()};da.setVisemeById=
|
|
991
|
+
function(R,aa,ta){R=SI.j(y,"viseme_slot_index",K([R]));return 0<=R?SI.j(da,"setViseme",K([R,aa,t(ta)?ta:1])):null};da.transitionVisemeById=function(R,aa,ta,oa){R=SI.j(y,"viseme_slot_index",K([R]));return 0<=R?SI.j(da,"transitionViseme",K([R,aa,t(ta)?ta:80,t(oa)?oa:1])):null};da.setAUMixWeight=function(R,aa){Z.o(Jb,U,R,aa);SI.j(y,"set_au_mix_weight",K([R,aa]));return d()};da.getAUMixWeight=h;da.hasLeftRightBones=function(R){R=UI(x(B),"auToBones")[w.g(R)];R=Yg(We.h(function(aa){return aa.side},NI(R)));
|
|
992
|
+
return wd(R,"left")&&wd(R,"right")};da.setMorph=function(){function R(ta,oa){return b(ta,oa,null)}var aa=null;aa=function(ta,oa,Ka){switch(arguments.length){case 2:return R.call(this,ta,oa);case 3:return b(ta,oa,Ka)}throw Error("Invalid arity: "+arguments.length);};aa.h=R;aa.i=function(ta,oa,Ka){return b(ta,oa,Ka)};return aa}();da.setMorphOnMeshes=function(R,aa,ta){return b(aa,ta,R)};da.transitionMorph=function(){function R(oa,Ka,ib){return n(oa,Ka,ib,null)}function aa(oa,Ka){return n(oa,Ka,120,null)}
|
|
993
|
+
var ta=null;ta=function(oa,Ka,ib,kb){switch(arguments.length){case 2:return aa.call(this,oa,Ka);case 3:return R.call(this,oa,Ka,ib);case 4:return n(oa,Ka,ib,kb)}throw Error("Invalid arity: "+arguments.length);};ta.h=aa;ta.i=R;ta.o=function(oa,Ka,ib,kb){return n(oa,Ka,ib,kb)};return ta}();da.getMorphTargets=function(){for(var R={},aa=C(NI(x(ea))),ta=null,oa=0,Ka=0;;)if(Ka<oa){var ib=ta.B(null,Ka),kb=ib.morphTargetDictionary;t(kb)&&(R[ib.name]=Object.keys(kb).sort());Ka+=1}else if(aa=C(aa))rd(aa)?(oa=
|
|
994
|
+
Yb(aa),aa=Zb(aa),ta=oa,oa=G(oa)):(ta=D(aa),oa=ta.morphTargetDictionary,t(oa)&&(R[ta.name]=Object.keys(oa).sort()),aa=F(aa),ta=null,oa=0),Ka=0;else break;return R};da.getMorphTargetIndices=function(){for(var R={},aa=C(NI(x(ea))),ta=null,oa=0,Ka=0;;)if(Ka<oa){var ib=ta.B(null,Ka),kb=ib.morphTargetDictionary;if(t(kb)){var hb=kb,be=Object.entries(hb).map(function(){return function(ig){return{name:ig[0],index:ig[1]}}}(aa,ta,oa,Ka,hb,kb,ib,R,k,q,p,r,u,null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,
|
|
995
|
+
E,da));be.sort(function(){return function(ig,nn){return ig.index-nn.index}}(aa,ta,oa,Ka,be,hb,kb,ib,R,k,q,p,r,u,null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,E,da));R[ib.name]=be}Ka+=1}else if(kb=C(aa)){ib=kb;if(rd(ib))aa=Yb(ib),Ka=Zb(ib),ta=aa,oa=G(aa),aa=Ka;else{hb=D(ib);be=hb.morphTargetDictionary;if(t(be)){var Sg=be,cf=Object.entries(Sg).map(function(){return function(ig){return{name:ig[0],index:ig[1]}}}(aa,ta,oa,Ka,Sg,be,hb,ib,kb,R,k,q,p,r,u,null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,
|
|
996
|
+
Ib,M,E,da));cf.sort(function(){return function(ig,nn){return ig.index-nn.index}}(aa,ta,oa,Ka,cf,Sg,be,hb,ib,kb,R,k,q,p,r,u,null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,E,da));R[hb.name]=cf}aa=F(ib);ta=null;oa=0}Ka=0}else break;return R};da.getHairMorphTargets=function(){function R(oa){return SI.j(x(Qa),"getHairMorphTargets",K([oa]))}function aa(){return SI(x(Qa),"getHairMorphTargets")}var ta=null;ta=function(oa){switch(arguments.length){case 0:return aa.call(this);case 1:return R.call(this,
|
|
997
|
+
oa)}throw Error("Invalid arity: "+arguments.length);};ta.l=aa;ta.g=R;return ta}();da.getMeshList=function(){return x(N).map(function(R){var aa=R.name,ta=UI(x(B),"meshes")[aa];return{name:aa,visible:R.visible,morphCount:function(){var oa=R.morphTargetInfluences;return t(oa)?oa:[]}().length,category:function(){var oa=t(ta)?ta.category:null;return t(oa)?oa:"other"}()}})};da.getBones=function(){return x(pa)};da.setMeshVisible=function(R,aa){return t(x(W))?SI.j(A,"setMeshVisible",K([x(W),R,aa])):null};
|
|
998
|
+
da.highlightMesh=function(){function R(Ka,ib,kb){return t(x(W))?SI.j(A,"highlightMesh",K([x(W),Ka,ib,kb])):null}function aa(Ka,ib){return t(x(W))?SI.j(A,"highlightMesh",K([x(W),Ka,ib])):null}function ta(Ka){return t(x(W))?SI.j(A,"highlightMesh",K([x(W),Ka])):null}var oa=null;oa=function(Ka,ib,kb){switch(arguments.length){case 1:return ta.call(this,Ka);case 2:return aa.call(this,Ka,ib);case 3:return R.call(this,Ka,ib,kb)}throw Error("Invalid arity: "+arguments.length);};oa.g=ta;oa.h=aa;oa.i=R;return oa}();
|
|
999
|
+
da.getMeshMaterialConfig=function(R){return t(x(W))?SI.j(A,"getMeshMaterialConfig",K([x(W),R])):null};da.setMeshMaterialConfig=function(R,aa){return t(x(W))?SI.j(A,"setMeshMaterialConfig",K([x(W),R,aa])):null};a=C(new Q(null,16,5,T,"registerHairObjects getRegisteredHairObjects getHairAppearance setHairColor setEyebrowColor setHairBaseColor setEyebrowBaseColor setHairGlow setEyebrowGlow setHairOutline setHairPhysicsEnabled isHairPhysicsEnabled setHairPhysicsConfig getHairPhysicsConfig validateHairMorphTargets applyHairStateToObject".split(" "),
|
|
1000
|
+
null));for(var Wa=null,cb=0,Ua=0;;)if(Ua<cb){var ec=Wa.B(null,Ua);da[ec]=function(R,aa,ta,oa,Ka,ib,kb,hb,be,Sg,cf,ig,nn,vK,wK,xK,yK,zK,AK,BK,CK,DK,EK,FK,GK,EA){return function(){function on(jg){var kg=null;if(0<arguments.length){kg=0;for(var Tg=Array(arguments.length-0);kg<Tg.length;)Tg[kg]=arguments[kg+0],++kg;kg=new vc(Tg,0,null)}return pn.call(this,kg)}function pn(jg){return qe(SI,x(EA),Ka,jg)}on.C=0;on.G=function(jg){jg=C(jg);return pn(jg)};on.j=pn;return on}()}(a,Wa,cb,Ua,ec,k,q,p,r,u,null,z,
|
|
1001
|
+
B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,E,da);Ua+=1}else{var Vb=C(a);if(Vb){ec=Vb;if(rd(ec))a=Yb(ec),Ua=Zb(ec),Wa=a,cb=G(a),a=Ua;else{var sa=D(ec);da[sa]=function(R,aa,ta,oa,Ka,ib,kb,hb,be,Sg,cf,ig,nn,vK,wK,xK,yK,zK,AK,BK,CK,DK,EK,FK,GK,EA,on,pn){return function(){function jg(Tg){var Aj=null;if(0<arguments.length){Aj=0;for(var st=Array(arguments.length-0);Aj<st.length;)st[Aj]=arguments[Aj+0],++Aj;Aj=new vc(st,0,null)}return kg.call(this,Aj)}function kg(Tg){return qe(SI,x(pn),Ka,Tg)}jg.C=0;jg.G=
|
|
1002
|
+
function(Tg){Tg=C(Tg);return kg(Tg)};jg.j=kg;return jg}()}(a,Wa,cb,Ua,sa,ec,Vb,k,q,p,r,u,null,z,B,I,y,v,A,H,W,ea,N,S,pa,Ha,Aa,Qa,rb,Jb,Ib,M,E,da);a=F(ec);Wa=null;cb=0}Ua=0}else break}da.updateHairPhysics=function(R){return SI.j(x(Qa),"update",K([R]))};da.update=c;da.start=function(){if(t(x(Ib)))return null;P(Ib,!0);P(E,null);return La()};da.stop=e;da.clear=function(){SI(y,"clear");SI(H,"clearTransitions");return d()};da.resetToNeutral=da.clear;da.dispose=function(){e();t(x(Aa))&&SI(x(Aa),"dispose");
|
|
1003
|
+
t(x(Qa))&&SI(x(Qa),"clearRegisteredHairObjects");var R=y.free;t(R)&&R.call(y);P(W,null);P(ea,[]);P(N,[]);P(S,new Map);return P(pa,{})};a=C(oK);Wa=null;for(Ua=cb=0;;)if(Ua<cb)ec=Wa.B(null,Ua),ZI(da,Aa,ec),Ua+=1;else if(a=C(a))Wa=a,rd(Wa)?(a=Yb(Wa),Ua=Zb(Wa),Wa=a,cb=G(a),a=Ua):(a=D(Wa),ZI(da,Aa,a),a=F(Wa),Wa=null,cb=0),Ua=0;else break;return da};pK.C=1;
|
|
1004
|
+
var qK=function qK(a){switch(arguments.length){case 1:return qK.g(arguments[0]);case 2:return qK.h(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",w.g(arguments.length)].join(""));}};qK.g=function(a){return qK.h(a,{})};qK.h=function(a,b){return II().then(function(){var c=pK.g(b);SI.j(c,"onReady",K([{model:a,meshes:b.meshes}]));return c})};qK.C=2;var rK=esm_import$$lovelace_lol$embody.Embody,sK,tK=esm_import$$lovelace_lol$embody.BLENDING_MODES;sK=t(tK)?tK:esm_import$$lovelace_lol$embody.THREE_BLENDING_MODES;
|
|
1005
1005
|
var uK=esm_import$$lovelace_lol$embody.THREE_BLENDING_MODES,HK=esm_import$$lovelace_lol$embody.collectMorphMeshes,IK=esm_import$$lovelace_lol$embody.analyzeModel,JK=esm_import$$lovelace_lol$embody.extractModelData,KK=esm_import$$lovelace_lol$embody.getPreset,LK=esm_import$$lovelace_lol$embody.validateMappings,MK=esm_import$$lovelace_lol$embody.extendCharacterConfigWithPreset,NK=esm_import$$lovelace_lol$embody.extractProfileOverrides,OK=esm_import$$lovelace_lol$embody.mergeCharacterRegionsByName,PK=
|
|
1006
1006
|
esm_import$$lovelace_lol$embody.applyAUBoneBindingUpdate,QK=esm_import$$lovelace_lol$embody.applyBilateralAxisBindingUpdate,RK=esm_import$$lovelace_lol$embody.applyBoneAxisBindingUpdate,SK=esm_import$$lovelace_lol$embody.buildBoneAuOptions,TK=esm_import$$lovelace_lol$embody.classifyAuAsJointControl,UK=esm_import$$lovelace_lol$embody.createBilateralBoneAxisAu,VK=esm_import$$lovelace_lol$embody.createBoneAxisAu,WK=esm_import$$lovelace_lol$embody.DEFAULT_AXIS_TO_CHANNEL,XK=esm_import$$lovelace_lol$embody.DEFAULT_BONE_MAX_DEGREES,
|
|
1007
1007
|
YK=esm_import$$lovelace_lol$embody.ensureBilateralBoneNodeKeys,ZK=esm_import$$lovelace_lol$embody.ensureBoneNodeKey,$K=esm_import$$lovelace_lol$embody.findNodeKeyForBone,aL=esm_import$$lovelace_lol$embody.formatAxisDirectionLabel,bL=esm_import$$lovelace_lol$embody.formatAxisLabel,cL=esm_import$$lovelace_lol$embody.getAUBoneBindingState,dL=esm_import$$lovelace_lol$embody.getAxisFromChannel,eL=esm_import$$lovelace_lol$embody.getBilateralAxisBindingState,fL=esm_import$$lovelace_lol$embody.getBoneAxisBindingState,
|
package/package.json
CHANGED
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
(defn- normalize-preset-id
|
|
41
41
|
[preset-id]
|
|
42
42
|
(let [normalized (when (string? preset-id) (.toLowerCase (.trim preset-id)))]
|
|
43
|
-
(
|
|
44
|
-
|
|
43
|
+
(if (or (nil? normalized) (= "" normalized))
|
|
44
|
+
"cc4"
|
|
45
45
|
normalized)))
|
|
46
46
|
|
|
47
47
|
(defn- normalize-profile-mode
|
|
@@ -49,18 +49,18 @@
|
|
|
49
49
|
(let [normalized (when (string? profile-mode)
|
|
50
50
|
(.toLowerCase (.trim profile-mode)))]
|
|
51
51
|
(case normalized
|
|
52
|
-
(nil "" "preset" "embedded-preset") "
|
|
53
|
-
("exact" "exact-profile") "
|
|
52
|
+
(nil "" "preset" "embedded-preset") "preset"
|
|
53
|
+
("profile" "resolved-profile" "exact" "exact-profile") "profile"
|
|
54
54
|
(throw (js/Error.
|
|
55
55
|
(str "Unknown Rust Embody profileMode \"" profile-mode
|
|
56
|
-
"\". Expected \"
|
|
56
|
+
"\". Expected \"preset\" or \"profile\"."))))))
|
|
57
57
|
|
|
58
58
|
(defn- profile-json
|
|
59
59
|
[profile required?]
|
|
60
60
|
(cond
|
|
61
61
|
(nil? profile)
|
|
62
62
|
(if required?
|
|
63
|
-
(throw (js/Error. "Rust Embody
|
|
63
|
+
(throw (js/Error. "Rust Embody profile mode requires a resolved profile object."))
|
|
64
64
|
"")
|
|
65
65
|
|
|
66
66
|
(or (array? profile) (not= "object" (goog/typeOf profile)))
|
|
@@ -176,16 +176,17 @@
|
|
|
176
176
|
(let [config (or config #js {})
|
|
177
177
|
wasm (embody-wasm/get-core)
|
|
178
178
|
profile-mode (normalize-profile-mode (aget config "profileMode"))
|
|
179
|
-
|
|
180
|
-
preset-id (normalize-preset-id
|
|
181
|
-
|
|
179
|
+
resolved-profile? (= profile-mode "profile")
|
|
180
|
+
preset-id (normalize-preset-id
|
|
181
|
+
(or (aget config "presetId") (aget config "presetType")))
|
|
182
|
+
_ (when (and (not resolved-profile?)
|
|
182
183
|
(not (js-call wasm "has_preset" preset-id)))
|
|
183
184
|
(throw (js/Error.
|
|
184
185
|
(str "Rust Embody preset \"" preset-id
|
|
185
186
|
"\" is not embedded. Known presets: "
|
|
186
187
|
(.join (js-call wasm "list_presets") ", ") "."))))
|
|
187
|
-
profile-source-json (atom (profile-json (aget config "profile")
|
|
188
|
-
profile (atom (if
|
|
188
|
+
profile-source-json (atom (profile-json (aget config "profile") resolved-profile?))
|
|
189
|
+
profile (atom (if resolved-profile?
|
|
189
190
|
(.parse js/JSON @profile-source-json)
|
|
190
191
|
(.parse js/JSON
|
|
191
192
|
(js-call wasm
|
|
@@ -251,9 +252,9 @@
|
|
|
251
252
|
"setHairPhysicsProfileConfig"
|
|
252
253
|
(aget @profile "hairPhysics")))
|
|
253
254
|
(let [descriptor-json (.stringify js/JSON (aget result "descriptor"))]
|
|
254
|
-
(if
|
|
255
|
+
(if resolved-profile?
|
|
255
256
|
(js-call core
|
|
256
|
-
"
|
|
257
|
+
"configure_with_profile"
|
|
257
258
|
@profile-source-json
|
|
258
259
|
descriptor-json)
|
|
259
260
|
(js-call core
|
|
@@ -269,9 +270,9 @@
|
|
|
269
270
|
(apply-frame!)
|
|
270
271
|
(reset! viseme-values #js [])
|
|
271
272
|
(reset! mix-weights {})
|
|
272
|
-
(reset! profile-source-json (profile-json next-profile
|
|
273
|
+
(reset! profile-source-json (profile-json next-profile resolved-profile?))
|
|
273
274
|
(reset! profile
|
|
274
|
-
(if
|
|
275
|
+
(if resolved-profile?
|
|
275
276
|
(.parse js/JSON @profile-source-json)
|
|
276
277
|
(.parse js/JSON
|
|
277
278
|
(js-call wasm
|
|
@@ -431,6 +432,7 @@
|
|
|
431
432
|
(aset host "setProfile" set-profile!)
|
|
432
433
|
(aset host "getProfile" (fn [] @profile))
|
|
433
434
|
(aset host "getProfileMode" (fn [] profile-mode))
|
|
435
|
+
(aset host "getPresetId" (fn [] (when-not resolved-profile? preset-id)))
|
|
434
436
|
(aset host "supportsPreset" (fn [id] (supports-preset? id)))
|
|
435
437
|
(aset host "setAU"
|
|
436
438
|
(fn [id value balance]
|