@aura3d/animation 4.0.3 → 4.0.5
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/dist/AnimationAction.d.ts +55 -1
- package/dist/AnimationAction.d.ts.map +1 -1
- package/dist/AnimationAction.js +156 -27
- package/dist/AnimationAction.js.map +1 -1
- package/dist/AnimationEvents.d.ts +1 -1
- package/dist/AnimationEvents.d.ts.map +1 -1
- package/dist/AnimationEvents.js +33 -14
- package/dist/AnimationEvents.js.map +1 -1
- package/dist/AnimationMixer.d.ts +35 -0
- package/dist/AnimationMixer.d.ts.map +1 -1
- package/dist/AnimationMixer.js +60 -10
- package/dist/AnimationMixer.js.map +1 -1
- package/dist/AnimationObjectGroup.d.ts +28 -0
- package/dist/AnimationObjectGroup.d.ts.map +1 -0
- package/dist/AnimationObjectGroup.js +242 -0
- package/dist/AnimationObjectGroup.js.map +1 -0
- package/dist/AnimationTrack.d.ts +18 -2
- package/dist/AnimationTrack.d.ts.map +1 -1
- package/dist/AnimationTrack.js +62 -0
- package/dist/AnimationTrack.js.map +1 -1
- package/dist/AnimationUtils.d.ts +56 -0
- package/dist/AnimationUtils.d.ts.map +1 -0
- package/dist/AnimationUtils.js +202 -0
- package/dist/AnimationUtils.js.map +1 -0
- package/dist/PropertyBinding.d.ts +93 -0
- package/dist/PropertyBinding.d.ts.map +1 -0
- package/dist/PropertyBinding.js +393 -0
- package/dist/PropertyBinding.js.map +1 -0
- package/dist/SceneAnimationBridge.d.ts +23 -1
- package/dist/SceneAnimationBridge.d.ts.map +1 -1
- package/dist/SceneAnimationBridge.js +152 -14
- package/dist/SceneAnimationBridge.js.map +1 -1
- package/dist/browser-index.d.ts +3 -0
- package/dist/browser-index.d.ts.map +1 -1
- package/dist/browser-index.js +3 -0
- package/dist/browser-index.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/pose/blendKernels.d.ts +1 -1
- package/dist/pose/blendKernels.d.ts.map +1 -1
- package/dist/pose/blendKernels.js +3 -3
- package/dist/pose/blendKernels.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SA-03 — three-compatible `PropertyBinding` (`three@0.185.x
|
|
3
|
+
* src/animation/PropertyBinding.js`) adapted to Aura's value-oriented track
|
|
4
|
+
* API: `getValue()`/`setValue()` exchange `AnimationValue`s directly instead of
|
|
5
|
+
* writing into a flat buffer at an offset. The track-name grammar, node lookup
|
|
6
|
+
* (`findNode`), and `sanitizeNodeName` are exact ports, so paths like
|
|
7
|
+
* `nodeName.property[index]`, `.morphTargetInfluences[name]`,
|
|
8
|
+
* `uuid.materials[0].opacity`, `parent/child.position`, and
|
|
9
|
+
* `.bones[Armature.DEF_cog].position` resolve exactly as they do upstream.
|
|
10
|
+
*/
|
|
11
|
+
// Characters `[].:/` are reserved for track binding syntax.
|
|
12
|
+
const RESERVED_CHARS_RE = "\\[\\]\\.:\\/";
|
|
13
|
+
const RESERVED_RE = new RegExp("[" + RESERVED_CHARS_RE + "]", "g");
|
|
14
|
+
// Attempts to allow node names from any language: match everything except the
|
|
15
|
+
// reserved characters (three deliberately avoids `\w`).
|
|
16
|
+
const WORD_CHAR = "[^" + RESERVED_CHARS_RE + "]";
|
|
17
|
+
const WORD_CHAR_OR_DOT = "[^" + RESERVED_CHARS_RE.replace("\\.", "") + "]";
|
|
18
|
+
// Parent directories, delimited by '/' or ':'. Currently unused, but must be
|
|
19
|
+
// matched to parse the rest of the track name.
|
|
20
|
+
const DIRECTORY_RE = /((?:WC+[\/:])*)/.source.replace(/WC/g, WORD_CHAR);
|
|
21
|
+
// Target node. May contain word characters and '.' (e.g. 'foo.bar.baz').
|
|
22
|
+
const NODE_RE = /(WCOD+)?/.source.replace(/WCOD/g, WORD_CHAR_OR_DOT);
|
|
23
|
+
// Object on target node, and accessor (`materials[0]`).
|
|
24
|
+
const OBJECT_RE = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace(/WC/g, WORD_CHAR);
|
|
25
|
+
// Property and accessor (`morphTargetInfluences[run]`, `position[x]`).
|
|
26
|
+
const PROPERTY_RE = /\.(WC+)(?:\[(.+)\])?/.source.replace(/WC/g, WORD_CHAR);
|
|
27
|
+
const TRACK_RE = new RegExp("^" + DIRECTORY_RE + NODE_RE + OBJECT_RE + PROPERTY_RE + "$");
|
|
28
|
+
const SUPPORTED_OBJECT_NAMES = ["material", "materials", "bones", "map"];
|
|
29
|
+
export function parseTrackName(trackName) {
|
|
30
|
+
const matches = TRACK_RE.exec(trackName);
|
|
31
|
+
if (matches === null) {
|
|
32
|
+
throw new Error(`PropertyBinding: Cannot parse trackName: ${trackName}`);
|
|
33
|
+
}
|
|
34
|
+
const results = {
|
|
35
|
+
directoryName: matches[1],
|
|
36
|
+
nodeName: matches[2],
|
|
37
|
+
objectName: matches[3],
|
|
38
|
+
objectIndex: matches[4],
|
|
39
|
+
propertyName: matches[5],
|
|
40
|
+
propertyIndex: matches[6]
|
|
41
|
+
};
|
|
42
|
+
const lastDot = results.nodeName?.lastIndexOf(".");
|
|
43
|
+
if (lastDot !== undefined && lastDot !== -1) {
|
|
44
|
+
const objectName = results.nodeName.substring(lastDot + 1);
|
|
45
|
+
// Object names must be checked against an allowlist. Otherwise there is no
|
|
46
|
+
// way to parse 'foo.bar.baz': 'baz' must be a property, but 'bar' could be
|
|
47
|
+
// the objectName, or part of a nodeName (which can include '.' characters).
|
|
48
|
+
if (SUPPORTED_OBJECT_NAMES.indexOf(objectName) !== -1) {
|
|
49
|
+
results.nodeName = results.nodeName.substring(0, lastDot);
|
|
50
|
+
results.objectName = objectName;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (results.propertyName === null || results.propertyName === undefined || results.propertyName.length === 0) {
|
|
54
|
+
throw new Error(`PropertyBinding: can not parse propertyName from trackName: ${trackName}`);
|
|
55
|
+
}
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
58
|
+
export function sanitizeNodeName(name) {
|
|
59
|
+
return name.replace(/\s/g, "_").replace(RESERVED_RE, "");
|
|
60
|
+
}
|
|
61
|
+
export function findNode(root, nodeName) {
|
|
62
|
+
if (nodeName === undefined || nodeName === "" || nodeName === "." || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {
|
|
63
|
+
return root;
|
|
64
|
+
}
|
|
65
|
+
// search into skeleton bones.
|
|
66
|
+
if (root.skeleton) {
|
|
67
|
+
const bone = root.skeleton.getBoneByName?.(String(nodeName));
|
|
68
|
+
if (bone !== undefined) {
|
|
69
|
+
return bone;
|
|
70
|
+
}
|
|
71
|
+
if (root.skeleton.bones) {
|
|
72
|
+
const named = root.skeleton.bones.find((candidate) => candidate.name === nodeName || candidate.uuid === nodeName);
|
|
73
|
+
if (named) {
|
|
74
|
+
return named;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// search into node subtree.
|
|
79
|
+
if (root.children) {
|
|
80
|
+
const subTreeNode = searchNodeSubtree(root.children, nodeName);
|
|
81
|
+
if (subTreeNode) {
|
|
82
|
+
return subTreeNode;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function searchNodeSubtree(children, nodeName) {
|
|
88
|
+
for (const childNode of children) {
|
|
89
|
+
if (childNode.name === nodeName || childNode.uuid === nodeName) {
|
|
90
|
+
return childNode;
|
|
91
|
+
}
|
|
92
|
+
if (childNode.children) {
|
|
93
|
+
const result = searchNodeSubtree(childNode.children, nodeName);
|
|
94
|
+
if (result) {
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
var BindingType;
|
|
102
|
+
(function (BindingType) {
|
|
103
|
+
BindingType[BindingType["Direct"] = 0] = "Direct";
|
|
104
|
+
BindingType[BindingType["EntireArray"] = 1] = "EntireArray";
|
|
105
|
+
BindingType[BindingType["ArrayElement"] = 2] = "ArrayElement";
|
|
106
|
+
BindingType[BindingType["HasFromToArray"] = 3] = "HasFromToArray";
|
|
107
|
+
})(BindingType || (BindingType = {}));
|
|
108
|
+
var Versioning;
|
|
109
|
+
(function (Versioning) {
|
|
110
|
+
Versioning[Versioning["None"] = 0] = "None";
|
|
111
|
+
Versioning[Versioning["NeedsUpdate"] = 1] = "NeedsUpdate";
|
|
112
|
+
Versioning[Versioning["MatrixWorldNeedsUpdate"] = 2] = "MatrixWorldNeedsUpdate";
|
|
113
|
+
})(Versioning || (Versioning = {}));
|
|
114
|
+
/**
|
|
115
|
+
* Binds a parsed track path to a concrete property on a node resolved from
|
|
116
|
+
* `rootNode`. `getValue`/`setValue` read and write `AnimationValue`s; on
|
|
117
|
+
* failure to bind they become no-ops (three's unbound state).
|
|
118
|
+
*/
|
|
119
|
+
export class PropertyBinding {
|
|
120
|
+
static parseTrackName = parseTrackName;
|
|
121
|
+
static sanitizeNodeName = sanitizeNodeName;
|
|
122
|
+
static findNode = findNode;
|
|
123
|
+
/** three's `PropertyBinding.Composite` (lazy so the class can be declared below). */
|
|
124
|
+
static get Composite() {
|
|
125
|
+
return PropertyBindingComposite;
|
|
126
|
+
}
|
|
127
|
+
path;
|
|
128
|
+
parsedPath;
|
|
129
|
+
rootNode;
|
|
130
|
+
node;
|
|
131
|
+
targetObject;
|
|
132
|
+
resolvedProperty;
|
|
133
|
+
propertyName;
|
|
134
|
+
propertyIndex;
|
|
135
|
+
bound = false;
|
|
136
|
+
constructor(rootNode, path, parsedPath) {
|
|
137
|
+
this.path = path;
|
|
138
|
+
this.parsedPath = parsedPath ?? parseTrackName(path);
|
|
139
|
+
this.rootNode = rootNode;
|
|
140
|
+
this.node = findNode(rootNode, this.parsedPath.nodeName);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Factory matching three's `PropertyBinding.create`: a root marked
|
|
144
|
+
* `isAnimationObjectGroup` produces a composite binding shared across the
|
|
145
|
+
* group's objects.
|
|
146
|
+
*/
|
|
147
|
+
static create(root, path, parsedPath) {
|
|
148
|
+
if (!("isAnimationObjectGroup" in root && root.isAnimationObjectGroup)) {
|
|
149
|
+
return new PropertyBinding(root, path, parsedPath);
|
|
150
|
+
}
|
|
151
|
+
return new PropertyBindingComposite(root, path, parsedPath);
|
|
152
|
+
}
|
|
153
|
+
bind() {
|
|
154
|
+
let targetObject = this.node;
|
|
155
|
+
const parsedPath = this.parsedPath;
|
|
156
|
+
const objectName = parsedPath.objectName;
|
|
157
|
+
const propertyName = parsedPath.propertyName;
|
|
158
|
+
let propertyIndex = parsedPath.propertyIndex;
|
|
159
|
+
if (!targetObject) {
|
|
160
|
+
targetObject = findNode(this.rootNode, parsedPath.nodeName);
|
|
161
|
+
this.node = targetObject;
|
|
162
|
+
}
|
|
163
|
+
this.bound = false;
|
|
164
|
+
if (!targetObject) {
|
|
165
|
+
console.warn(`PropertyBinding: No target node found for track: ${this.path}.`);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (objectName) {
|
|
169
|
+
let objectIndex = parsedPath.objectIndex;
|
|
170
|
+
switch (objectName) {
|
|
171
|
+
case "materials": {
|
|
172
|
+
const material = targetObject.material;
|
|
173
|
+
if (!material) {
|
|
174
|
+
console.error("PropertyBinding: Can not bind to material as node does not have a material.", this);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (!material.materials) {
|
|
178
|
+
console.error("PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.", this);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
targetObject = material.materials;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
case "bones": {
|
|
185
|
+
if (!targetObject.skeleton) {
|
|
186
|
+
console.error("PropertyBinding: Can not bind to bones as node does not have a skeleton.", this);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const bones = (targetObject.skeleton.bones ?? []);
|
|
190
|
+
targetObject = bones;
|
|
191
|
+
// support resolving bone names into indices.
|
|
192
|
+
for (let i = 0; i < bones.length; i++) {
|
|
193
|
+
if (bones[i].name === objectIndex) {
|
|
194
|
+
objectIndex = i;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
case "map": {
|
|
201
|
+
if ("map" in targetObject) {
|
|
202
|
+
targetObject = targetObject.map;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
const material = targetObject.material;
|
|
206
|
+
if (!material) {
|
|
207
|
+
console.error("PropertyBinding: Can not bind to material as node does not have a material.", this);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (!material.map) {
|
|
211
|
+
console.error("PropertyBinding: Can not bind to material.map as node.material does not have a map.", this);
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
targetObject = material.map;
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
default: {
|
|
218
|
+
if (targetObject[objectName] === undefined) {
|
|
219
|
+
console.error("PropertyBinding: Can not bind to objectName of node undefined.", this);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
targetObject = targetObject[objectName];
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (objectIndex !== undefined) {
|
|
226
|
+
const indexed = targetObject[objectIndex];
|
|
227
|
+
if (indexed === undefined) {
|
|
228
|
+
console.error("PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.", this, targetObject);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
targetObject = indexed;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// resolve property
|
|
235
|
+
const nodeProperty = targetObject[propertyName];
|
|
236
|
+
if (nodeProperty === undefined) {
|
|
237
|
+
console.error(`PropertyBinding: Trying to update property for track: ${parsedPath.nodeName}.${propertyName} but it wasn't found.`, targetObject);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
this.targetObject = targetObject;
|
|
241
|
+
if (propertyIndex !== undefined) {
|
|
242
|
+
// access a sub element of the property array (only primitives are supported right now)
|
|
243
|
+
if (propertyName === "morphTargetInfluences") {
|
|
244
|
+
// support resolving morphTarget names into indices.
|
|
245
|
+
const dictionary = typeof targetObject.morphTargetDictionary === "function"
|
|
246
|
+
? targetObject.morphTargetDictionary()
|
|
247
|
+
: targetObject.morphTargetDictionary;
|
|
248
|
+
if (dictionary === undefined) {
|
|
249
|
+
console.error("PropertyBinding: Can not bind to morphTargetInfluences because node does not have a morphTargetDictionary.", this);
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
if (dictionary[propertyIndex] !== undefined) {
|
|
253
|
+
propertyIndex = dictionary[propertyIndex];
|
|
254
|
+
}
|
|
255
|
+
else if (!Number.isInteger(Number(propertyIndex))) {
|
|
256
|
+
console.error(`PropertyBinding: Can not bind to morphTargetInfluences[${String(propertyIndex)}] because it is not a known morph target.`, this);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
propertyIndex = Number(propertyIndex);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Other properties keep the accessor verbatim: `[0]` and `[x]` both
|
|
264
|
+
// index `resolvedProperty` (three supports named components).
|
|
265
|
+
this.resolvedProperty = nodeProperty;
|
|
266
|
+
this.propertyIndex = propertyIndex;
|
|
267
|
+
this.bindingType = BindingType.ArrayElement;
|
|
268
|
+
}
|
|
269
|
+
else if (isFromToArrayCapable(nodeProperty)) {
|
|
270
|
+
this.resolvedProperty = nodeProperty;
|
|
271
|
+
this.bindingType = BindingType.HasFromToArray;
|
|
272
|
+
this.propertyName = undefined;
|
|
273
|
+
}
|
|
274
|
+
else if (Array.isArray(nodeProperty)) {
|
|
275
|
+
this.resolvedProperty = nodeProperty;
|
|
276
|
+
this.bindingType = BindingType.EntireArray;
|
|
277
|
+
this.propertyName = undefined;
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
this.propertyName = propertyName;
|
|
281
|
+
this.bindingType = BindingType.Direct;
|
|
282
|
+
}
|
|
283
|
+
this.versioning = targetObject.isMaterial === true
|
|
284
|
+
? Versioning.NeedsUpdate
|
|
285
|
+
: targetObject.isObject3D === true
|
|
286
|
+
? Versioning.MatrixWorldNeedsUpdate
|
|
287
|
+
: Versioning.None;
|
|
288
|
+
this.bound = true;
|
|
289
|
+
}
|
|
290
|
+
unbind() {
|
|
291
|
+
this.node = null;
|
|
292
|
+
this.bound = false;
|
|
293
|
+
}
|
|
294
|
+
getValue() {
|
|
295
|
+
if (!this.bound) {
|
|
296
|
+
this.bind();
|
|
297
|
+
if (!this.bound) {
|
|
298
|
+
return undefined;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
const target = this.targetObject;
|
|
302
|
+
switch (this.bindingType) {
|
|
303
|
+
case BindingType.ArrayElement:
|
|
304
|
+
return this.resolvedProperty[this.propertyIndex];
|
|
305
|
+
case BindingType.EntireArray:
|
|
306
|
+
return [...this.resolvedProperty];
|
|
307
|
+
case BindingType.HasFromToArray: {
|
|
308
|
+
const source = this.resolvedProperty.toArray();
|
|
309
|
+
return Array.from(source);
|
|
310
|
+
}
|
|
311
|
+
default:
|
|
312
|
+
return target[this.propertyName];
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
setValue(value) {
|
|
316
|
+
if (!this.bound) {
|
|
317
|
+
this.bind();
|
|
318
|
+
if (!this.bound) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
const target = this.targetObject;
|
|
323
|
+
switch (this.bindingType) {
|
|
324
|
+
case BindingType.ArrayElement:
|
|
325
|
+
this.resolvedProperty[this.propertyIndex] = value;
|
|
326
|
+
break;
|
|
327
|
+
case BindingType.EntireArray: {
|
|
328
|
+
const dest = this.resolvedProperty;
|
|
329
|
+
const source = value;
|
|
330
|
+
for (let i = 0, n = dest.length; i !== n && i < source.length; i++) {
|
|
331
|
+
dest[i] = source[i];
|
|
332
|
+
}
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
case BindingType.HasFromToArray:
|
|
336
|
+
this.resolvedProperty.fromArray(value);
|
|
337
|
+
break;
|
|
338
|
+
default:
|
|
339
|
+
target[this.propertyName] = value;
|
|
340
|
+
}
|
|
341
|
+
if (this.versioning === Versioning.NeedsUpdate) {
|
|
342
|
+
target.needsUpdate = true;
|
|
343
|
+
}
|
|
344
|
+
else if (this.versioning === Versioning.MatrixWorldNeedsUpdate) {
|
|
345
|
+
target.matrixWorldNeedsUpdate = true;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
bindingType = BindingType.Direct;
|
|
349
|
+
versioning = Versioning.None;
|
|
350
|
+
}
|
|
351
|
+
function isFromToArrayCapable(value) {
|
|
352
|
+
const candidate = value;
|
|
353
|
+
return typeof candidate?.fromArray === "function" && typeof candidate?.toArray === "function";
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* three's `PropertyBinding.Composite`: fans a single track path out over every
|
|
357
|
+
* object in an {@link AnimationObjectGroup}-compatible group. `getValue` reads
|
|
358
|
+
* the first valid object; `setValue` writes all valid objects.
|
|
359
|
+
*/
|
|
360
|
+
export class PropertyBindingComposite {
|
|
361
|
+
targetGroup;
|
|
362
|
+
bindings;
|
|
363
|
+
constructor(targetGroup, path, optionalParsedPath) {
|
|
364
|
+
const parsedPath = optionalParsedPath ?? parseTrackName(path);
|
|
365
|
+
this.targetGroup = targetGroup;
|
|
366
|
+
this.bindings = targetGroup.subscribe_(path, parsedPath);
|
|
367
|
+
}
|
|
368
|
+
getValue() {
|
|
369
|
+
this.bind();
|
|
370
|
+
const firstValidIndex = this.targetGroup.nCachedObjects_;
|
|
371
|
+
const binding = this.bindings[firstValidIndex];
|
|
372
|
+
return binding?.getValue();
|
|
373
|
+
}
|
|
374
|
+
setValue(value) {
|
|
375
|
+
const bindings = this.bindings;
|
|
376
|
+
for (let i = this.targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {
|
|
377
|
+
bindings[i].setValue(value);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
bind() {
|
|
381
|
+
const bindings = this.bindings;
|
|
382
|
+
for (let i = this.targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {
|
|
383
|
+
bindings[i].bind();
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
unbind() {
|
|
387
|
+
const bindings = this.bindings;
|
|
388
|
+
for (let i = this.targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {
|
|
389
|
+
bindings[i].unbind();
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=PropertyBinding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyBinding.js","sourceRoot":"","sources":["../../../../packages/animation/src/PropertyBinding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import type { AnimationValue } from "./Keyframe.js";
|
|
2
|
-
|
|
2
|
+
import { sanitizeNodeName, type PropertyBindingNode } from "./PropertyBinding.js";
|
|
3
|
+
/**
|
|
4
|
+
* Animation-writable node shape. Beyond the legacy transform/weight fields it
|
|
5
|
+
* accepts the optional `PropertyBinding` node members (`uuid`, `children`,
|
|
6
|
+
* `skeleton`, `material`, `morphTargetDictionary`, `morphTargetInfluences`) so
|
|
7
|
+
* three-style track paths (`node.material.opacity`,
|
|
8
|
+
* `.morphTargetInfluences[smile]`, `uuid.position[x]`) resolve through the
|
|
9
|
+
* same grammar (SA-03).
|
|
10
|
+
*/
|
|
11
|
+
export type SceneAnimationNode = PropertyBindingNode & {
|
|
3
12
|
name?: string;
|
|
4
13
|
position?: [number, number, number];
|
|
5
14
|
rotation?: [number, number, number, number];
|
|
6
15
|
scale?: [number, number, number];
|
|
7
16
|
weights?: number[];
|
|
17
|
+
/** Opt-in per SA-05: when true, morph weight writes are not clamped to [0, 1]. */
|
|
18
|
+
unclampedMorphWeights?: boolean;
|
|
8
19
|
setPosition?: (value: readonly [number, number, number]) => void;
|
|
9
20
|
setRotation?: (value: readonly [number, number, number, number]) => void;
|
|
10
21
|
setScale?: (value: readonly [number, number, number]) => void;
|
|
@@ -12,7 +23,18 @@ export type SceneAnimationNode = {
|
|
|
12
23
|
};
|
|
13
24
|
export declare class SceneAnimationBridge {
|
|
14
25
|
private readonly nodes;
|
|
26
|
+
private root;
|
|
15
27
|
register(name: string, node: SceneAnimationNode): void;
|
|
28
|
+
/**
|
|
29
|
+
* Sets the hierarchy root used for `PropertyBinding.findNode` lookups:
|
|
30
|
+
* node names not registered directly are searched through `root.children`
|
|
31
|
+
* and `root.skeleton`, and empty/`root`-named paths resolve to the root
|
|
32
|
+
* itself (three's `PropertyBinding.findNode` contract).
|
|
33
|
+
*/
|
|
34
|
+
setRoot(node: SceneAnimationNode): void;
|
|
16
35
|
setAnimationValue(target: string, value: AnimationValue): void;
|
|
36
|
+
private resolveNode;
|
|
37
|
+
private setObjectProperty;
|
|
17
38
|
}
|
|
39
|
+
export { sanitizeNodeName };
|
|
18
40
|
//# sourceMappingURL=SceneAnimationBridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneAnimationBridge.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/SceneAnimationBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"SceneAnimationBridge.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/SceneAnimationBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAA6C,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE7H;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kFAAkF;IAClF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC9D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,IAAI,CAAiC;IAE7C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAOtD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAIvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAqC9D,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,iBAAiB;CAgB1B;AAuHD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|