@react-three/drei 9.116.1 → 9.116.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/core/Environment.cjs.js +1 -1
- package/core/Environment.js +10 -2
- package/core/Lightformer.cjs.js +1 -1
- package/core/Lightformer.d.ts +3 -2
- package/core/Lightformer.js +18 -8
- package/core/SpriteAnimator.cjs.js +1 -1
- package/core/SpriteAnimator.d.ts +25 -18
- package/core/SpriteAnimator.js +147 -193
- package/core/index.cjs.js +1 -1
- package/core/index.js +1 -1
- package/core/useSpriteLoader.cjs.js +1 -1
- package/core/useSpriteLoader.d.ts +50 -3
- package/core/useSpriteLoader.js +295 -263
- package/index.cjs.js +1 -1
- package/index.js +1 -1
- package/native/index.cjs.js +1 -1
- package/native/index.js +1 -1
- package/package.json +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +1 -1
package/core/SpriteAnimator.js
CHANGED
|
@@ -3,88 +3,168 @@ import * as React from 'react';
|
|
|
3
3
|
import { useFrame } from '@react-three/fiber';
|
|
4
4
|
import * as THREE from 'three';
|
|
5
5
|
import { Instances, Instance } from './Instances.js';
|
|
6
|
-
import {
|
|
6
|
+
import { Billboard } from './Billboard.js';
|
|
7
|
+
import { useSpriteLoader, getFirstFrame } from './useSpriteLoader.js';
|
|
8
|
+
|
|
9
|
+
// Frame-related types
|
|
7
10
|
|
|
8
11
|
const context = /*#__PURE__*/React.createContext(null);
|
|
9
12
|
function useSpriteAnimator() {
|
|
10
13
|
return React.useContext(context);
|
|
11
14
|
}
|
|
15
|
+
|
|
16
|
+
// Type guard for SpriteData
|
|
17
|
+
function isSpriteData(data) {
|
|
18
|
+
return data !== null && 'meta' in data && 'frames' in data;
|
|
19
|
+
}
|
|
12
20
|
const geometry = new THREE.PlaneGeometry(1, 1);
|
|
13
21
|
const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
14
|
-
startFrame,
|
|
22
|
+
startFrame = 0,
|
|
15
23
|
endFrame,
|
|
16
|
-
fps,
|
|
17
|
-
frameName,
|
|
24
|
+
fps = 30,
|
|
25
|
+
frameName = '',
|
|
18
26
|
textureDataURL,
|
|
19
27
|
textureImageURL,
|
|
20
|
-
loop,
|
|
21
|
-
numberOfFrames,
|
|
22
|
-
autoPlay,
|
|
28
|
+
loop = false,
|
|
29
|
+
numberOfFrames = 1,
|
|
30
|
+
autoPlay = true,
|
|
23
31
|
animationNames,
|
|
24
32
|
onStart,
|
|
25
33
|
onEnd,
|
|
26
34
|
onLoopEnd,
|
|
27
35
|
onFrame,
|
|
28
36
|
play,
|
|
29
|
-
pause,
|
|
30
|
-
flipX,
|
|
31
|
-
alphaTest,
|
|
37
|
+
pause = false,
|
|
38
|
+
flipX = false,
|
|
39
|
+
alphaTest = 0.0,
|
|
32
40
|
children,
|
|
33
|
-
asSprite,
|
|
41
|
+
asSprite = false,
|
|
34
42
|
offset,
|
|
35
|
-
playBackwards,
|
|
36
|
-
resetOnEnd,
|
|
37
|
-
maxItems,
|
|
38
|
-
instanceItems,
|
|
43
|
+
playBackwards = false,
|
|
44
|
+
resetOnEnd = false,
|
|
45
|
+
maxItems = 1,
|
|
46
|
+
instanceItems = [[0, 0, 0]],
|
|
39
47
|
spriteDataset,
|
|
40
48
|
canvasRenderingContext2DSettings,
|
|
41
49
|
roundFramePosition = false,
|
|
42
50
|
meshProps = {},
|
|
43
51
|
...props
|
|
44
52
|
}, fref) => {
|
|
45
|
-
|
|
46
|
-
const ref = React.useRef();
|
|
53
|
+
const ref = React.useRef(new THREE.Group());
|
|
47
54
|
const spriteData = React.useRef(null);
|
|
48
|
-
const matRef = React.useRef();
|
|
49
|
-
const spriteRef = React.useRef();
|
|
55
|
+
const matRef = React.useRef(null);
|
|
56
|
+
const spriteRef = React.useRef(null);
|
|
50
57
|
const timerOffset = React.useRef(window.performance.now());
|
|
51
|
-
const currentFrame = React.useRef(startFrame
|
|
52
|
-
const currentFrameName = React.useRef(frameName
|
|
53
|
-
const fpsInterval =
|
|
58
|
+
const currentFrame = React.useRef(startFrame);
|
|
59
|
+
const currentFrameName = React.useRef(frameName);
|
|
60
|
+
const fpsInterval = fps > 0 ? 1000 / fps : 0;
|
|
54
61
|
const [spriteTexture, setSpriteTexture] = React.useState(new THREE.Texture());
|
|
55
62
|
const totalFrames = React.useRef(0);
|
|
56
|
-
const [aspect, setAspect] = React.useState(
|
|
63
|
+
const [aspect, setAspect] = React.useState(new THREE.Vector3(1, 1, 1));
|
|
57
64
|
const flipOffset = flipX ? -1 : 1;
|
|
58
|
-
const [displayAsSprite, setDisplayAsSprite] = React.useState(asSprite !== null && asSprite !== void 0 ? asSprite : true);
|
|
59
65
|
const pauseRef = React.useRef(pause);
|
|
60
66
|
const pos = React.useRef(offset);
|
|
61
67
|
const softEnd = React.useRef(false);
|
|
62
|
-
const frameBuffer = React.useRef([]);
|
|
63
68
|
const {
|
|
64
69
|
spriteObj,
|
|
65
70
|
loadJsonAndTexture
|
|
66
71
|
} = useSpriteLoader(null, null, animationNames, numberOfFrames, undefined, canvasRenderingContext2DSettings);
|
|
67
|
-
|
|
72
|
+
const frameNameRef = React.useRef(frameName);
|
|
73
|
+
|
|
74
|
+
// lite version for pre-loaded assets
|
|
75
|
+
const parseSpriteDataLite = React.useCallback((textureData, data) => {
|
|
76
|
+
if (data === null) {
|
|
77
|
+
if (numberOfFrames) {
|
|
78
|
+
//get size from texture
|
|
79
|
+
|
|
80
|
+
totalFrames.current = numberOfFrames;
|
|
81
|
+
if (playBackwards) {
|
|
82
|
+
currentFrame.current = numberOfFrames - 1;
|
|
83
|
+
}
|
|
84
|
+
spriteData.current = data;
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
var _spriteData$current$f, _spriteData$current;
|
|
88
|
+
spriteData.current = data;
|
|
89
|
+
if (spriteData.current && Array.isArray(spriteData.current.frames)) {
|
|
90
|
+
totalFrames.current = spriteData.current.frames.length;
|
|
91
|
+
} else if (spriteData.current && typeof spriteData.current === 'object' && frameNameRef.current) {
|
|
92
|
+
totalFrames.current = spriteData.current.frames[frameNameRef.current].length;
|
|
93
|
+
} else {
|
|
94
|
+
totalFrames.current = 0;
|
|
95
|
+
}
|
|
96
|
+
if (playBackwards) {
|
|
97
|
+
currentFrame.current = totalFrames.current - 1;
|
|
98
|
+
}
|
|
99
|
+
const {
|
|
100
|
+
w,
|
|
101
|
+
h
|
|
102
|
+
} = getFirstFrame((_spriteData$current$f = (_spriteData$current = spriteData.current) == null ? void 0 : _spriteData$current.frames) !== null && _spriteData$current$f !== void 0 ? _spriteData$current$f : [], frameNameRef.current).sourceSize;
|
|
103
|
+
const aspect = calculateAspectRatio(w, h);
|
|
104
|
+
setAspect(aspect);
|
|
105
|
+
if (matRef.current) {
|
|
106
|
+
matRef.current.map = textureData;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setSpriteTexture(textureData);
|
|
110
|
+
}, [numberOfFrames, playBackwards]);
|
|
68
111
|
|
|
69
|
-
|
|
112
|
+
// modify the sprite material after json is parsed and state updated
|
|
113
|
+
const modifySpritePosition = React.useCallback(() => {
|
|
114
|
+
if (!spriteData.current) return;
|
|
115
|
+
const {
|
|
116
|
+
meta: {
|
|
117
|
+
size: metaInfo
|
|
118
|
+
},
|
|
119
|
+
frames
|
|
120
|
+
} = spriteData.current;
|
|
121
|
+
const {
|
|
122
|
+
w: frameW,
|
|
123
|
+
h: frameH
|
|
124
|
+
} = Array.isArray(frames) ? frames[0].sourceSize : frameName ? frames[frameName] ? frames[frameName][0].sourceSize : {
|
|
125
|
+
w: 0,
|
|
126
|
+
h: 0
|
|
127
|
+
} : {
|
|
128
|
+
w: 0,
|
|
129
|
+
h: 0
|
|
130
|
+
};
|
|
131
|
+
if (matRef.current && matRef.current.map) {
|
|
132
|
+
matRef.current.map.wrapS = matRef.current.map.wrapT = THREE.RepeatWrapping;
|
|
133
|
+
matRef.current.map.center.set(0, 0);
|
|
134
|
+
matRef.current.map.repeat.set(1 * flipOffset / (metaInfo.w / frameW), 1 / (metaInfo.h / frameH));
|
|
135
|
+
}
|
|
136
|
+
//const framesH = (metaInfo.w - 1) / frameW
|
|
137
|
+
const framesV = (metaInfo.h - 1) / frameH;
|
|
138
|
+
const frameOffsetY = 1 / framesV;
|
|
139
|
+
if (matRef.current && matRef.current.map) {
|
|
140
|
+
matRef.current.map.offset.x = 0.0; //-matRef.current.map.repeat.x
|
|
141
|
+
matRef.current.map.offset.y = 1 - frameOffsetY;
|
|
142
|
+
}
|
|
143
|
+
if (onStart) {
|
|
144
|
+
onStart({
|
|
145
|
+
currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
|
|
146
|
+
currentFrame: currentFrame.current
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}, [flipOffset, frameName, onStart]);
|
|
70
150
|
const state = React.useMemo(() => ({
|
|
71
151
|
current: pos.current,
|
|
72
152
|
offset: pos.current,
|
|
73
153
|
imageUrl: textureImageURL,
|
|
74
|
-
reset: reset,
|
|
75
154
|
hasEnded: false,
|
|
76
155
|
ref: fref
|
|
77
|
-
}), [textureImageURL,
|
|
156
|
+
}), [textureImageURL, fref]);
|
|
78
157
|
React.useImperativeHandle(fref, () => ref.current, []);
|
|
79
158
|
React.useLayoutEffect(() => {
|
|
80
159
|
pos.current = offset;
|
|
81
160
|
}, [offset]);
|
|
82
161
|
const calculateAspectRatio = (width, height) => {
|
|
162
|
+
var _spriteRef$current;
|
|
163
|
+
const ret = new THREE.Vector3();
|
|
83
164
|
const aspectRatio = height / width;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return [1, aspectRatio, 1];
|
|
165
|
+
ret.set(1, aspectRatio, 1);
|
|
166
|
+
(_spriteRef$current = spriteRef.current) == null || _spriteRef$current.scale.copy(ret);
|
|
167
|
+
return ret;
|
|
88
168
|
};
|
|
89
169
|
|
|
90
170
|
// initial loads
|
|
@@ -97,29 +177,27 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
97
177
|
loadJsonAndTexture(textureImageURL, textureDataURL);
|
|
98
178
|
}
|
|
99
179
|
}
|
|
100
|
-
}, [spriteDataset]);
|
|
180
|
+
}, [loadJsonAndTexture, spriteDataset, textureDataURL, textureImageURL, parseSpriteDataLite]);
|
|
101
181
|
React.useEffect(() => {
|
|
102
182
|
if (spriteObj) {
|
|
103
183
|
var _spriteObj$spriteText;
|
|
104
184
|
parseSpriteDataLite(spriteObj == null || (_spriteObj$spriteText = spriteObj.spriteTexture) == null ? void 0 : _spriteObj$spriteText.clone(), spriteObj == null ? void 0 : spriteObj.spriteData);
|
|
105
185
|
}
|
|
106
|
-
}, [spriteObj]);
|
|
107
|
-
React.useEffect(() => {
|
|
108
|
-
setDisplayAsSprite(asSprite !== null && asSprite !== void 0 ? asSprite : true);
|
|
109
|
-
}, [asSprite]);
|
|
186
|
+
}, [spriteObj, parseSpriteDataLite]);
|
|
110
187
|
|
|
111
188
|
// support backwards play
|
|
112
189
|
React.useEffect(() => {
|
|
113
190
|
state.hasEnded = false;
|
|
114
191
|
if (spriteData.current && playBackwards === true) {
|
|
115
|
-
|
|
192
|
+
var _ref;
|
|
193
|
+
currentFrame.current = ((_ref = spriteData.current.frames.length) !== null && _ref !== void 0 ? _ref : 0) - 1;
|
|
116
194
|
} else {
|
|
117
195
|
currentFrame.current = 0;
|
|
118
196
|
}
|
|
119
|
-
}, [playBackwards]);
|
|
197
|
+
}, [playBackwards, state]);
|
|
120
198
|
React.useLayoutEffect(() => {
|
|
121
199
|
modifySpritePosition();
|
|
122
|
-
}, [spriteTexture, flipX]);
|
|
200
|
+
}, [spriteTexture, flipX, modifySpritePosition]);
|
|
123
201
|
React.useEffect(() => {
|
|
124
202
|
if (autoPlay) {
|
|
125
203
|
pauseRef.current = false;
|
|
@@ -138,113 +216,16 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
138
216
|
const {
|
|
139
217
|
w,
|
|
140
218
|
h
|
|
141
|
-
} =
|
|
219
|
+
} = getFirstFrame(spriteData.current.frames, frameName).sourceSize;
|
|
142
220
|
const _aspect = calculateAspectRatio(w, h);
|
|
143
221
|
setAspect(_aspect);
|
|
144
222
|
}
|
|
145
223
|
}
|
|
146
|
-
}, [frameName, fpsInterval]);
|
|
147
|
-
|
|
148
|
-
// lite version for pre-loaded assets
|
|
149
|
-
const parseSpriteDataLite = (textureData, frameData = null) => {
|
|
150
|
-
if (frameData === null) {
|
|
151
|
-
if (numberOfFrames) {
|
|
152
|
-
//get size from texture
|
|
153
|
-
const width = textureData.image.width;
|
|
154
|
-
const height = textureData.image.height;
|
|
155
|
-
totalFrames.current = numberOfFrames;
|
|
156
|
-
if (playBackwards) {
|
|
157
|
-
currentFrame.current = numberOfFrames - 1;
|
|
158
|
-
}
|
|
159
|
-
spriteData.current = {
|
|
160
|
-
frames: [],
|
|
161
|
-
meta: {
|
|
162
|
-
version: '1.0',
|
|
163
|
-
size: {
|
|
164
|
-
w: width,
|
|
165
|
-
h: height
|
|
166
|
-
},
|
|
167
|
-
scale: '1'
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
spriteData.current.frames = frameData;
|
|
171
|
-
}
|
|
172
|
-
} else {
|
|
173
|
-
spriteData.current = frameData;
|
|
174
|
-
totalFrames.current = spriteData.current.frames.length;
|
|
175
|
-
if (playBackwards) {
|
|
176
|
-
currentFrame.current = totalFrames.current - 1;
|
|
177
|
-
}
|
|
178
|
-
const {
|
|
179
|
-
w,
|
|
180
|
-
h
|
|
181
|
-
} = getFirstItem(spriteData.current.frames).sourceSize;
|
|
182
|
-
const aspect = calculateAspectRatio(w, h);
|
|
183
|
-
setAspect(aspect);
|
|
184
|
-
if (matRef.current) {
|
|
185
|
-
matRef.current.map = textureData;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// buffer for instanced
|
|
190
|
-
if (instanceItems) {
|
|
191
|
-
for (var i = 0; i < instanceItems.length; i++) {
|
|
192
|
-
const keys = Object.keys(spriteData.current.frames);
|
|
193
|
-
const randomKey = keys[Math.floor(Math.random() * keys.length)];
|
|
194
|
-
frameBuffer.current.push({
|
|
195
|
-
key: i,
|
|
196
|
-
frames: spriteData.current.frames,
|
|
197
|
-
selectedFrame: randomKey,
|
|
198
|
-
offset: {
|
|
199
|
-
x: 0,
|
|
200
|
-
y: 0
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
setSpriteTexture(textureData);
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
// modify the sprite material after json is parsed and state updated
|
|
209
|
-
const modifySpritePosition = () => {
|
|
210
|
-
if (!spriteData.current) return;
|
|
211
|
-
const {
|
|
212
|
-
meta: {
|
|
213
|
-
size: metaInfo
|
|
214
|
-
},
|
|
215
|
-
frames
|
|
216
|
-
} = spriteData.current;
|
|
217
|
-
const {
|
|
218
|
-
w: frameW,
|
|
219
|
-
h: frameH
|
|
220
|
-
} = Array.isArray(frames) ? frames[0].sourceSize : frameName ? frames[frameName] ? frames[frameName][0].sourceSize : {
|
|
221
|
-
w: 0,
|
|
222
|
-
h: 0
|
|
223
|
-
} : {
|
|
224
|
-
w: 0,
|
|
225
|
-
h: 0
|
|
226
|
-
};
|
|
227
|
-
matRef.current.map.wrapS = matRef.current.map.wrapT = THREE.RepeatWrapping;
|
|
228
|
-
matRef.current.map.center.set(0, 0);
|
|
229
|
-
matRef.current.map.repeat.set(1 * flipOffset / (metaInfo.w / frameW), 1 / (metaInfo.h / frameH));
|
|
230
|
-
|
|
231
|
-
//const framesH = (metaInfo.w - 1) / frameW
|
|
232
|
-
const framesV = (metaInfo.h - 1) / frameH;
|
|
233
|
-
const frameOffsetY = 1 / framesV;
|
|
234
|
-
matRef.current.map.offset.x = 0.0; //-matRef.current.map.repeat.x
|
|
235
|
-
matRef.current.map.offset.y = 1 - frameOffsetY;
|
|
236
|
-
if (onStart) {
|
|
237
|
-
onStart({
|
|
238
|
-
currentFrameName: frameName,
|
|
239
|
-
currentFrame: currentFrame.current
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
};
|
|
224
|
+
}, [frameName, fpsInterval, state, endFrame, startFrame]);
|
|
243
225
|
|
|
244
226
|
// run the animation on each frame
|
|
245
227
|
const runAnimation = () => {
|
|
246
|
-
|
|
247
|
-
|
|
228
|
+
if (!isSpriteData(spriteData.current)) return;
|
|
248
229
|
const {
|
|
249
230
|
meta: {
|
|
250
231
|
size: metaInfo
|
|
@@ -254,7 +235,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
254
235
|
const {
|
|
255
236
|
w: frameW,
|
|
256
237
|
h: frameH
|
|
257
|
-
} =
|
|
238
|
+
} = getFirstFrame(frames, frameName).sourceSize;
|
|
258
239
|
const spriteFrames = Array.isArray(frames) ? frames : frameName ? frames[frameName] : [];
|
|
259
240
|
const _endFrame = endFrame || spriteFrames.length - 1;
|
|
260
241
|
var _offset = offset === undefined ? state.current : offset;
|
|
@@ -278,15 +259,15 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
278
259
|
}
|
|
279
260
|
if (loop) {
|
|
280
261
|
onLoopEnd == null || onLoopEnd({
|
|
281
|
-
currentFrameName: frameName,
|
|
262
|
+
currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
|
|
282
263
|
currentFrame: currentFrame.current
|
|
283
264
|
});
|
|
284
265
|
} else {
|
|
285
266
|
onEnd == null || onEnd({
|
|
286
|
-
currentFrameName: frameName,
|
|
267
|
+
currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
|
|
287
268
|
currentFrame: currentFrame.current
|
|
288
269
|
});
|
|
289
|
-
state.hasEnded = resetOnEnd
|
|
270
|
+
state.hasEnded = !resetOnEnd;
|
|
290
271
|
if (resetOnEnd) {
|
|
291
272
|
pauseRef.current = true;
|
|
292
273
|
//calculateFinalPosition(frameW, frameH, metaInfo, spriteFrames)
|
|
@@ -295,7 +276,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
295
276
|
if (!loop) return;
|
|
296
277
|
} else if (onStartCondition) {
|
|
297
278
|
onStart == null || onStart({
|
|
298
|
-
currentFrameName: frameName,
|
|
279
|
+
currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
|
|
299
280
|
currentFrame: currentFrame.current
|
|
300
281
|
});
|
|
301
282
|
}
|
|
@@ -304,7 +285,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
304
285
|
if (_offset !== undefined && manualProgressEndCondition) {
|
|
305
286
|
if (softEnd.current === false) {
|
|
306
287
|
onEnd == null || onEnd({
|
|
307
|
-
currentFrameName: frameName,
|
|
288
|
+
currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
|
|
308
289
|
currentFrame: currentFrame.current
|
|
309
290
|
});
|
|
310
291
|
softEnd.current = true;
|
|
@@ -343,10 +324,12 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
343
324
|
} = spriteFrames[targetFrame];
|
|
344
325
|
const frameOffsetX = 1 / framesH;
|
|
345
326
|
const frameOffsetY = 1 / framesV;
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
327
|
+
if (matRef.current && matRef.current.map) {
|
|
328
|
+
finalValX = flipOffset > 0 ? frameOffsetX * (frameX / originalSizeX) : frameOffsetX * (frameX / originalSizeX) - matRef.current.map.repeat.x;
|
|
329
|
+
finalValY = Math.abs(1 - frameOffsetY) - frameOffsetY * (frameY / originalSizeY);
|
|
330
|
+
matRef.current.map.offset.x = finalValX;
|
|
331
|
+
matRef.current.map.offset.y = finalValY;
|
|
332
|
+
}
|
|
350
333
|
|
|
351
334
|
// if manual update is active
|
|
352
335
|
if (_offset !== undefined && _offset !== null) {
|
|
@@ -371,8 +354,8 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
371
354
|
|
|
372
355
|
// *** Warning! It runs on every frame! ***
|
|
373
356
|
useFrame((_state, _delta) => {
|
|
374
|
-
var _spriteData$
|
|
375
|
-
if (!((_spriteData$
|
|
357
|
+
var _spriteData$current2, _matRef$current;
|
|
358
|
+
if (!((_spriteData$current2 = spriteData.current) != null && _spriteData$current2.frames) || !((_matRef$current = matRef.current) != null && _matRef$current.map)) {
|
|
376
359
|
return;
|
|
377
360
|
}
|
|
378
361
|
if (pauseRef.current) {
|
|
@@ -380,64 +363,35 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
380
363
|
}
|
|
381
364
|
if (!state.hasEnded && (autoPlay || play)) {
|
|
382
365
|
runAnimation();
|
|
383
|
-
onFrame
|
|
366
|
+
onFrame == null || onFrame({
|
|
384
367
|
currentFrameName: currentFrameName.current,
|
|
385
368
|
currentFrame: currentFrame.current
|
|
386
369
|
});
|
|
387
370
|
}
|
|
388
371
|
});
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
if (
|
|
393
|
-
return param[0];
|
|
394
|
-
} else if (typeof param === 'object' && param !== null) {
|
|
395
|
-
const keys = Object.keys(param);
|
|
396
|
-
return frameName ? param[frameName][0] : param[keys[0]][0];
|
|
397
|
-
} else {
|
|
398
|
-
return {
|
|
399
|
-
w: 0,
|
|
400
|
-
h: 0
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
};
|
|
404
|
-
function multiplyScale(initialScale, newScale) {
|
|
405
|
-
let _newScale = [];
|
|
406
|
-
|
|
407
|
-
// If newScale is a single number, convert it to a Vector3
|
|
408
|
-
if (typeof newScale === 'number') {
|
|
409
|
-
_newScale = [newScale, newScale, newScale];
|
|
410
|
-
} else if (Array.isArray(newScale)) {
|
|
411
|
-
// If newScale is an array, convert it to a Vector3
|
|
412
|
-
_newScale = newScale;
|
|
413
|
-
} else if (newScale instanceof THREE.Vector3) {
|
|
414
|
-
_newScale = [newScale.x, newScale.y, newScale.z];
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
// Multiply the scale values element-wise
|
|
418
|
-
const result = initialScale.map((value, index) => value * _newScale[index]);
|
|
419
|
-
// Convert the result to an array of numbers
|
|
420
|
-
return result;
|
|
372
|
+
function multiplyScale(initialScale = new THREE.Vector3(1, 1, 1), newScale = 1) {
|
|
373
|
+
if (typeof newScale === 'number') return initialScale.multiplyScalar(newScale);
|
|
374
|
+
if (Array.isArray(newScale)) return initialScale.multiply(new THREE.Vector3(...newScale));
|
|
375
|
+
if (newScale instanceof THREE.Vector3) return initialScale.multiply(newScale);
|
|
421
376
|
}
|
|
422
377
|
return /*#__PURE__*/React.createElement("group", _extends({}, props, {
|
|
423
378
|
ref: ref,
|
|
424
|
-
scale: multiplyScale(aspect
|
|
379
|
+
scale: multiplyScale(aspect, props.scale)
|
|
425
380
|
}), /*#__PURE__*/React.createElement(context.Provider, {
|
|
426
381
|
value: state
|
|
427
|
-
}, /*#__PURE__*/React.createElement(React.
|
|
428
|
-
fallback: null
|
|
429
|
-
}, displayAsSprite && /*#__PURE__*/React.createElement("sprite", _extends({
|
|
382
|
+
}, asSprite && /*#__PURE__*/React.createElement(Billboard, null, /*#__PURE__*/React.createElement("mesh", _extends({
|
|
430
383
|
ref: spriteRef,
|
|
431
384
|
scale: 1.0,
|
|
432
385
|
geometry: geometry
|
|
433
|
-
}, meshProps), /*#__PURE__*/React.createElement("
|
|
386
|
+
}, meshProps), /*#__PURE__*/React.createElement("meshBasicMaterial", {
|
|
434
387
|
premultipliedAlpha: false,
|
|
435
388
|
toneMapped: false,
|
|
389
|
+
side: THREE.DoubleSide,
|
|
436
390
|
ref: matRef,
|
|
437
391
|
map: spriteTexture,
|
|
438
392
|
transparent: true,
|
|
439
393
|
alphaTest: alphaTest !== null && alphaTest !== void 0 ? alphaTest : 0.0
|
|
440
|
-
})), !
|
|
394
|
+
}))), !asSprite && /*#__PURE__*/React.createElement(Instances, _extends({
|
|
441
395
|
geometry: geometry,
|
|
442
396
|
limit: maxItems !== null && maxItems !== void 0 ? maxItems : 1
|
|
443
397
|
}, meshProps), /*#__PURE__*/React.createElement("meshBasicMaterial", {
|
|
@@ -453,7 +407,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
|
|
|
453
407
|
ref: (instanceItems == null ? void 0 : instanceItems.length) === 1 ? spriteRef : null,
|
|
454
408
|
position: item,
|
|
455
409
|
scale: 1.0
|
|
456
|
-
}, meshProps))))
|
|
410
|
+
}, meshProps)))), children));
|
|
457
411
|
});
|
|
458
412
|
|
|
459
413
|
export { SpriteAnimator, useSpriteAnimator };
|
package/core/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./ScreenSizer.cjs.js"),t=require("./QuadraticBezierLine.cjs.js"),o=require("./CubicBezierLine.cjs.js"),i=require("./CatmullRomLine.cjs.js"),a=require("./Line.cjs.js"),u=require("./PositionalAudio.cjs.js"),c=require("./Text.cjs.js"),p=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),x=require("./Image.cjs.js"),l=require("./Edges.cjs.js"),d=require("./Outlines.cjs.js"),q=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),h=require("./ComputedAttribute.cjs.js"),C=require("./Clone.cjs.js"),M=require("./MarchingCubes.cjs.js"),S=require("./Decal.cjs.js"),T=require("./Svg.cjs.js"),b=require("./Gltf.cjs.js"),P=require("./AsciiRenderer.cjs.js"),f=require("./Splat.cjs.js"),g=require("./OrthographicCamera.cjs.js"),B=require("./PerspectiveCamera.cjs.js"),v=require("./CubeCamera.cjs.js"),A=require("./DeviceOrientationControls.cjs.js"),F=require("./FlyControls.cjs.js"),L=require("./MapControls.cjs.js"),R=require("./OrbitControls.cjs.js"),G=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),E=require("./TransformControls.cjs.js"),k=require("./PointerLockControls.cjs.js"),I=require("./FirstPersonControls.cjs.js"),w=require("./CameraControls.cjs.js"),z=require("./MotionPathControls.cjs.js"),O=require("./GizmoHelper.cjs.js"),y=require("./GizmoViewcube.cjs.js"),H=require("./GizmoViewport.cjs.js"),V=require("./Grid.cjs.js"),W=require("./CubeTexture.cjs.js"),K=require("./Fbx.cjs.js"),Q=require("./Ktx2.cjs.js"),N=require("./Progress.cjs.js"),U=require("./Texture.cjs.js"),X=require("./VideoTexture.cjs.js"),_=require("./useFont.cjs.js"),J=require("./useSpriteLoader.cjs.js"),Y=require("./Helper.cjs.js"),Z=require("./Stats.cjs.js"),$=require("./StatsGl.cjs.js"),ee=require("./useDepthBuffer.cjs.js"),re=require("./useAspect.cjs.js"),se=require("./useCamera.cjs.js"),te=require("./DetectGPU.cjs.js"),oe=require("./Bvh.cjs.js"),ie=require("./useContextBridge.cjs.js"),ae=require("./useAnimations.cjs.js"),ue=require("./Fbo.cjs.js"),ce=require("./useIntersect.cjs.js"),pe=require("./useBoxProjectedEnv.cjs.js"),ne=require("./BBAnchor.cjs.js"),je=require("./TrailTexture.cjs.js"),xe=require("./Example.cjs.js"),le=require("./SpriteAnimator.cjs.js"),de=require("./CurveModifier.cjs.js"),qe=require("./MeshDistortMaterial.cjs.js"),me=require("./MeshWobbleMaterial.cjs.js"),he=require("./MeshReflectorMaterial.cjs.js"),Ce=require("./MeshRefractionMaterial.cjs.js"),Me=require("./MeshTransmissionMaterial.cjs.js"),Se=require("./MeshDiscardMaterial.cjs.js"),Te=require("./MultiMaterial.cjs.js"),be=require("./PointMaterial.cjs.js"),Pe=require("./shaderMaterial.cjs.js"),fe=require("./softShadows.cjs.js"),ge=require("./shapes.cjs.js"),Be=require("./RoundedBox.cjs.js"),ve=require("./ScreenQuad.cjs.js"),Ae=require("./Center.cjs.js"),Fe=require("./Resize.cjs.js"),Le=require("./Bounds.cjs.js"),Re=require("./CameraShake.cjs.js"),Ge=require("./Float.cjs.js"),De=require("./Stage.cjs.js"),Ee=require("./Backdrop.cjs.js"),ke=require("./Shadow.cjs.js"),Ie=require("./Caustics.cjs.js"),we=require("./ContactShadows.cjs.js"),ze=require("./AccumulativeShadows.cjs.js"),Oe=require("./Reflector.cjs.js"),ye=require("./SpotLight.cjs.js"),He=require("./Environment.cjs.js"),Ve=require("./Lightformer.cjs.js"),We=require("./Sky.cjs.js"),Ke=require("./Stars.cjs.js"),Qe=require("./Cloud.cjs.js"),Ne=require("./Sparkles.cjs.js"),Ue=require("./useEnvironment.cjs.js"),Xe=require("./MatcapTexture.cjs.js"),_e=require("./NormalTexture.cjs.js"),Je=require("./Wireframe.cjs.js"),Ye=require("./ShadowAlpha.cjs.js"),Ze=require("./Points.cjs.js"),$e=require("./Instances.cjs.js"),er=require("./Segments.cjs.js"),rr=require("./Detailed.cjs.js"),sr=require("./Preload.cjs.js"),tr=require("./BakeShadows.cjs.js"),or=require("./meshBounds.cjs.js"),ir=require("./AdaptiveDpr.cjs.js"),ar=require("./AdaptiveEvents.cjs.js"),ur=require("./PerformanceMonitor.cjs.js"),cr=require("./RenderTexture.cjs.js"),pr=require("./RenderCubeTexture.cjs.js"),nr=require("./Mask.cjs.js"),jr=require("./Hud.cjs.js"),xr=require("./Fisheye.cjs.js"),lr=require("./MeshPortalMaterial.cjs.js"),dr=require("./calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("hls.js"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.ScreenSizer=s.ScreenSizer,exports.QuadraticBezierLine=t.QuadraticBezierLine,exports.CubicBezierLine=o.CubicBezierLine,exports.CatmullRomLine=i.CatmullRomLine,exports.Line=a.Line,exports.PositionalAudio=u.PositionalAudio,exports.Text=c.Text,exports.Text3D=p.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=x.Image,exports.Edges=l.Edges,exports.Outlines=d.Outlines,exports.Trail=q.Trail,exports.useTrail=q.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=h.ComputedAttribute,exports.Clone=C.Clone,exports.MarchingCube=M.MarchingCube,exports.MarchingCubes=M.MarchingCubes,exports.MarchingPlane=M.MarchingPlane,exports.Decal=S.Decal,exports.Svg=T.Svg,exports.Gltf=b.Gltf,exports.useGLTF=b.useGLTF,exports.AsciiRenderer=P.AsciiRenderer,exports.Splat=f.Splat,exports.OrthographicCamera=g.OrthographicCamera,exports.PerspectiveCamera=B.PerspectiveCamera,exports.CubeCamera=v.CubeCamera,exports.useCubeCamera=v.useCubeCamera,exports.DeviceOrientationControls=A.DeviceOrientationControls,exports.FlyControls=F.FlyControls,exports.MapControls=L.MapControls,exports.OrbitControls=R.OrbitControls,exports.TrackballControls=G.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=I.FirstPersonControls,exports.CameraControls=w.CameraControls,exports.MotionPathControls=z.MotionPathControls,exports.useMotion=z.useMotion,exports.GizmoHelper=O.GizmoHelper,exports.useGizmoContext=O.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=H.GizmoViewport,exports.Grid=V.Grid,exports.CubeTexture=W.CubeTexture,exports.useCubeTexture=W.useCubeTexture,exports.Fbx=K.Fbx,exports.useFBX=K.useFBX,exports.Ktx2=Q.Ktx2,exports.useKTX2=Q.useKTX2,exports.Progress=N.Progress,exports.useProgress=N.useProgress,exports.IsObject=U.IsObject,exports.Texture=U.Texture,exports.useTexture=U.useTexture,exports.VideoTexture=X.VideoTexture,exports.useVideoTexture=X.useVideoTexture,exports.useFont=_.useFont,exports.calculateAspectRatio=J.calculateAspectRatio,exports.checkIfFrameIsEmpty=J.checkIfFrameIsEmpty,exports.getFirstItem=J.getFirstItem,exports.useSpriteLoader=J.useSpriteLoader,exports.Helper=Y.Helper,exports.useHelper=Y.useHelper,exports.Stats=Z.Stats,exports.StatsGl=$.StatsGl,exports.useDepthBuffer=ee.useDepthBuffer,exports.useAspect=re.useAspect,exports.useCamera=se.useCamera,exports.DetectGPU=te.DetectGPU,exports.useDetectGPU=te.useDetectGPU,exports.Bvh=oe.Bvh,exports.useBVH=oe.useBVH,exports.useContextBridge=ie.useContextBridge,exports.useAnimations=ae.useAnimations,exports.Fbo=ue.Fbo,exports.useFBO=ue.useFBO,exports.useIntersect=ce.useIntersect,exports.useBoxProjectedEnv=pe.useBoxProjectedEnv,exports.BBAnchor=ne.BBAnchor,exports.TrailTexture=je.TrailTexture,exports.useTrailTexture=je.useTrailTexture,exports.Example=xe.Example,exports.SpriteAnimator=le.SpriteAnimator,exports.useSpriteAnimator=le.useSpriteAnimator,exports.CurveModifier=de.CurveModifier,exports.MeshDistortMaterial=qe.MeshDistortMaterial,exports.MeshWobbleMaterial=me.MeshWobbleMaterial,exports.MeshReflectorMaterial=he.MeshReflectorMaterial,exports.MeshRefractionMaterial=Ce.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Me.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Se.MeshDiscardMaterial,exports.MultiMaterial=Te.MultiMaterial,exports.PointMaterial=be.PointMaterial,exports.PointMaterialImpl=be.PointMaterialImpl,exports.shaderMaterial=Pe.shaderMaterial,exports.SoftShadows=fe.SoftShadows,exports.Box=ge.Box,exports.Capsule=ge.Capsule,exports.Circle=ge.Circle,exports.Cone=ge.Cone,exports.Cylinder=ge.Cylinder,exports.Dodecahedron=ge.Dodecahedron,exports.Extrude=ge.Extrude,exports.Icosahedron=ge.Icosahedron,exports.Lathe=ge.Lathe,exports.Octahedron=ge.Octahedron,exports.Plane=ge.Plane,exports.Polyhedron=ge.Polyhedron,exports.Ring=ge.Ring,exports.Shape=ge.Shape,exports.Sphere=ge.Sphere,exports.Tetrahedron=ge.Tetrahedron,exports.Torus=ge.Torus,exports.TorusKnot=ge.TorusKnot,exports.Tube=ge.Tube,exports.RoundedBox=Be.RoundedBox,exports.ScreenQuad=ve.ScreenQuad,exports.Center=Ae.Center,exports.Resize=Fe.Resize,exports.Bounds=Le.Bounds,exports.useBounds=Le.useBounds,exports.CameraShake=Re.CameraShake,exports.Float=Ge.Float,exports.Stage=De.Stage,exports.Backdrop=Ee.Backdrop,exports.Shadow=ke.Shadow,exports.Caustics=Ie.Caustics,exports.ContactShadows=we.ContactShadows,exports.AccumulativeShadows=ze.AccumulativeShadows,exports.RandomizedLight=ze.RandomizedLight,exports.accumulativeContext=ze.accumulativeContext,exports.Reflector=Oe.Reflector,exports.SpotLight=ye.SpotLight,exports.SpotLightShadow=ye.SpotLightShadow,exports.Environment=He.Environment,exports.EnvironmentCube=He.EnvironmentCube,exports.EnvironmentMap=He.EnvironmentMap,exports.EnvironmentPortal=He.EnvironmentPortal,exports.Lightformer=Ve.Lightformer,exports.Sky=We.Sky,exports.calcPosFromAngles=We.calcPosFromAngles,exports.Stars=Ke.Stars,exports.Cloud=Qe.Cloud,exports.CloudInstance=Qe.CloudInstance,exports.Clouds=Qe.Clouds,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.MatcapTexture=Xe.MatcapTexture,exports.useMatcapTexture=Xe.useMatcapTexture,exports.NormalTexture=_e.NormalTexture,exports.useNormalTexture=_e.useNormalTexture,exports.Wireframe=Je.Wireframe,exports.ShadowAlpha=Ye.ShadowAlpha,exports.Point=Ze.Point,exports.Points=Ze.Points,exports.PointsBuffer=Ze.PointsBuffer,exports.PositionPoint=Ze.PositionPoint,exports.Instance=$e.Instance,exports.InstancedAttribute=$e.InstancedAttribute,exports.Instances=$e.Instances,exports.Merged=$e.Merged,exports.PositionMesh=$e.PositionMesh,exports.createInstances=$e.createInstances,exports.Segment=er.Segment,exports.SegmentObject=er.SegmentObject,exports.Segments=er.Segments,exports.Detailed=rr.Detailed,exports.Preload=sr.Preload,exports.BakeShadows=tr.BakeShadows,exports.meshBounds=or.meshBounds,exports.AdaptiveDpr=ir.AdaptiveDpr,exports.AdaptiveEvents=ar.AdaptiveEvents,exports.PerformanceMonitor=ur.PerformanceMonitor,exports.usePerformanceMonitor=ur.usePerformanceMonitor,exports.RenderTexture=cr.RenderTexture,exports.RenderCubeTexture=pr.RenderCubeTexture,exports.Mask=nr.Mask,exports.useMask=nr.useMask,exports.Hud=jr.Hud,exports.Fisheye=xr.Fisheye,exports.MeshPortalMaterial=lr.MeshPortalMaterial,exports.calculateScaleFactor=dr.calculateScaleFactor;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./ScreenSizer.cjs.js"),t=require("./QuadraticBezierLine.cjs.js"),o=require("./CubicBezierLine.cjs.js"),i=require("./CatmullRomLine.cjs.js"),a=require("./Line.cjs.js"),u=require("./PositionalAudio.cjs.js"),c=require("./Text.cjs.js"),n=require("./Text3D.cjs.js"),p=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),x=require("./Image.cjs.js"),l=require("./Edges.cjs.js"),d=require("./Outlines.cjs.js"),q=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),h=require("./ComputedAttribute.cjs.js"),C=require("./Clone.cjs.js"),M=require("./MarchingCubes.cjs.js"),S=require("./Decal.cjs.js"),T=require("./Svg.cjs.js"),b=require("./Gltf.cjs.js"),P=require("./AsciiRenderer.cjs.js"),f=require("./Splat.cjs.js"),g=require("./OrthographicCamera.cjs.js"),B=require("./PerspectiveCamera.cjs.js"),v=require("./CubeCamera.cjs.js"),A=require("./DeviceOrientationControls.cjs.js"),F=require("./FlyControls.cjs.js"),L=require("./MapControls.cjs.js"),G=require("./OrbitControls.cjs.js"),R=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),E=require("./TransformControls.cjs.js"),k=require("./PointerLockControls.cjs.js"),I=require("./FirstPersonControls.cjs.js"),w=require("./CameraControls.cjs.js"),z=require("./MotionPathControls.cjs.js"),O=require("./GizmoHelper.cjs.js"),y=require("./GizmoViewcube.cjs.js"),H=require("./GizmoViewport.cjs.js"),V=require("./Grid.cjs.js"),W=require("./CubeTexture.cjs.js"),K=require("./Fbx.cjs.js"),Q=require("./Ktx2.cjs.js"),N=require("./Progress.cjs.js"),U=require("./Texture.cjs.js"),X=require("./VideoTexture.cjs.js"),_=require("./useFont.cjs.js"),J=require("./useSpriteLoader.cjs.js"),Y=require("./Helper.cjs.js"),Z=require("./Stats.cjs.js"),$=require("./StatsGl.cjs.js"),ee=require("./useDepthBuffer.cjs.js"),re=require("./useAspect.cjs.js"),se=require("./useCamera.cjs.js"),te=require("./DetectGPU.cjs.js"),oe=require("./Bvh.cjs.js"),ie=require("./useContextBridge.cjs.js"),ae=require("./useAnimations.cjs.js"),ue=require("./Fbo.cjs.js"),ce=require("./useIntersect.cjs.js"),ne=require("./useBoxProjectedEnv.cjs.js"),pe=require("./BBAnchor.cjs.js"),je=require("./TrailTexture.cjs.js"),xe=require("./Example.cjs.js"),le=require("./SpriteAnimator.cjs.js"),de=require("./CurveModifier.cjs.js"),qe=require("./MeshDistortMaterial.cjs.js"),me=require("./MeshWobbleMaterial.cjs.js"),he=require("./MeshReflectorMaterial.cjs.js"),Ce=require("./MeshRefractionMaterial.cjs.js"),Me=require("./MeshTransmissionMaterial.cjs.js"),Se=require("./MeshDiscardMaterial.cjs.js"),Te=require("./MultiMaterial.cjs.js"),be=require("./PointMaterial.cjs.js"),Pe=require("./shaderMaterial.cjs.js"),fe=require("./softShadows.cjs.js"),ge=require("./shapes.cjs.js"),Be=require("./RoundedBox.cjs.js"),ve=require("./ScreenQuad.cjs.js"),Ae=require("./Center.cjs.js"),Fe=require("./Resize.cjs.js"),Le=require("./Bounds.cjs.js"),Ge=require("./CameraShake.cjs.js"),Re=require("./Float.cjs.js"),De=require("./Stage.cjs.js"),Ee=require("./Backdrop.cjs.js"),ke=require("./Shadow.cjs.js"),Ie=require("./Caustics.cjs.js"),we=require("./ContactShadows.cjs.js"),ze=require("./AccumulativeShadows.cjs.js"),Oe=require("./Reflector.cjs.js"),ye=require("./SpotLight.cjs.js"),He=require("./Environment.cjs.js"),Ve=require("./Lightformer.cjs.js"),We=require("./Sky.cjs.js"),Ke=require("./Stars.cjs.js"),Qe=require("./Cloud.cjs.js"),Ne=require("./Sparkles.cjs.js"),Ue=require("./useEnvironment.cjs.js"),Xe=require("./MatcapTexture.cjs.js"),_e=require("./NormalTexture.cjs.js"),Je=require("./Wireframe.cjs.js"),Ye=require("./ShadowAlpha.cjs.js"),Ze=require("./Points.cjs.js"),$e=require("./Instances.cjs.js"),er=require("./Segments.cjs.js"),rr=require("./Detailed.cjs.js"),sr=require("./Preload.cjs.js"),tr=require("./BakeShadows.cjs.js"),or=require("./meshBounds.cjs.js"),ir=require("./AdaptiveDpr.cjs.js"),ar=require("./AdaptiveEvents.cjs.js"),ur=require("./PerformanceMonitor.cjs.js"),cr=require("./RenderTexture.cjs.js"),nr=require("./RenderCubeTexture.cjs.js"),pr=require("./Mask.cjs.js"),jr=require("./Hud.cjs.js"),xr=require("./Fisheye.cjs.js"),lr=require("./MeshPortalMaterial.cjs.js"),dr=require("./calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("hls.js"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.ScreenSizer=s.ScreenSizer,exports.QuadraticBezierLine=t.QuadraticBezierLine,exports.CubicBezierLine=o.CubicBezierLine,exports.CatmullRomLine=i.CatmullRomLine,exports.Line=a.Line,exports.PositionalAudio=u.PositionalAudio,exports.Text=c.Text,exports.Text3D=n.Text3D,exports.Effects=p.Effects,exports.isWebGL2Available=p.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=x.Image,exports.Edges=l.Edges,exports.Outlines=d.Outlines,exports.Trail=q.Trail,exports.useTrail=q.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=h.ComputedAttribute,exports.Clone=C.Clone,exports.MarchingCube=M.MarchingCube,exports.MarchingCubes=M.MarchingCubes,exports.MarchingPlane=M.MarchingPlane,exports.Decal=S.Decal,exports.Svg=T.Svg,exports.Gltf=b.Gltf,exports.useGLTF=b.useGLTF,exports.AsciiRenderer=P.AsciiRenderer,exports.Splat=f.Splat,exports.OrthographicCamera=g.OrthographicCamera,exports.PerspectiveCamera=B.PerspectiveCamera,exports.CubeCamera=v.CubeCamera,exports.useCubeCamera=v.useCubeCamera,exports.DeviceOrientationControls=A.DeviceOrientationControls,exports.FlyControls=F.FlyControls,exports.MapControls=L.MapControls,exports.OrbitControls=G.OrbitControls,exports.TrackballControls=R.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=I.FirstPersonControls,exports.CameraControls=w.CameraControls,exports.MotionPathControls=z.MotionPathControls,exports.useMotion=z.useMotion,exports.GizmoHelper=O.GizmoHelper,exports.useGizmoContext=O.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=H.GizmoViewport,exports.Grid=V.Grid,exports.CubeTexture=W.CubeTexture,exports.useCubeTexture=W.useCubeTexture,exports.Fbx=K.Fbx,exports.useFBX=K.useFBX,exports.Ktx2=Q.Ktx2,exports.useKTX2=Q.useKTX2,exports.Progress=N.Progress,exports.useProgress=N.useProgress,exports.IsObject=U.IsObject,exports.Texture=U.Texture,exports.useTexture=U.useTexture,exports.VideoTexture=X.VideoTexture,exports.useVideoTexture=X.useVideoTexture,exports.useFont=_.useFont,exports.checkIfFrameIsEmpty=J.checkIfFrameIsEmpty,exports.getFirstFrame=J.getFirstFrame,exports.useSpriteLoader=J.useSpriteLoader,exports.Helper=Y.Helper,exports.useHelper=Y.useHelper,exports.Stats=Z.Stats,exports.StatsGl=$.StatsGl,exports.useDepthBuffer=ee.useDepthBuffer,exports.useAspect=re.useAspect,exports.useCamera=se.useCamera,exports.DetectGPU=te.DetectGPU,exports.useDetectGPU=te.useDetectGPU,exports.Bvh=oe.Bvh,exports.useBVH=oe.useBVH,exports.useContextBridge=ie.useContextBridge,exports.useAnimations=ae.useAnimations,exports.Fbo=ue.Fbo,exports.useFBO=ue.useFBO,exports.useIntersect=ce.useIntersect,exports.useBoxProjectedEnv=ne.useBoxProjectedEnv,exports.BBAnchor=pe.BBAnchor,exports.TrailTexture=je.TrailTexture,exports.useTrailTexture=je.useTrailTexture,exports.Example=xe.Example,exports.SpriteAnimator=le.SpriteAnimator,exports.useSpriteAnimator=le.useSpriteAnimator,exports.CurveModifier=de.CurveModifier,exports.MeshDistortMaterial=qe.MeshDistortMaterial,exports.MeshWobbleMaterial=me.MeshWobbleMaterial,exports.MeshReflectorMaterial=he.MeshReflectorMaterial,exports.MeshRefractionMaterial=Ce.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Me.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Se.MeshDiscardMaterial,exports.MultiMaterial=Te.MultiMaterial,exports.PointMaterial=be.PointMaterial,exports.PointMaterialImpl=be.PointMaterialImpl,exports.shaderMaterial=Pe.shaderMaterial,exports.SoftShadows=fe.SoftShadows,exports.Box=ge.Box,exports.Capsule=ge.Capsule,exports.Circle=ge.Circle,exports.Cone=ge.Cone,exports.Cylinder=ge.Cylinder,exports.Dodecahedron=ge.Dodecahedron,exports.Extrude=ge.Extrude,exports.Icosahedron=ge.Icosahedron,exports.Lathe=ge.Lathe,exports.Octahedron=ge.Octahedron,exports.Plane=ge.Plane,exports.Polyhedron=ge.Polyhedron,exports.Ring=ge.Ring,exports.Shape=ge.Shape,exports.Sphere=ge.Sphere,exports.Tetrahedron=ge.Tetrahedron,exports.Torus=ge.Torus,exports.TorusKnot=ge.TorusKnot,exports.Tube=ge.Tube,exports.RoundedBox=Be.RoundedBox,exports.ScreenQuad=ve.ScreenQuad,exports.Center=Ae.Center,exports.Resize=Fe.Resize,exports.Bounds=Le.Bounds,exports.useBounds=Le.useBounds,exports.CameraShake=Ge.CameraShake,exports.Float=Re.Float,exports.Stage=De.Stage,exports.Backdrop=Ee.Backdrop,exports.Shadow=ke.Shadow,exports.Caustics=Ie.Caustics,exports.ContactShadows=we.ContactShadows,exports.AccumulativeShadows=ze.AccumulativeShadows,exports.RandomizedLight=ze.RandomizedLight,exports.accumulativeContext=ze.accumulativeContext,exports.Reflector=Oe.Reflector,exports.SpotLight=ye.SpotLight,exports.SpotLightShadow=ye.SpotLightShadow,exports.Environment=He.Environment,exports.EnvironmentCube=He.EnvironmentCube,exports.EnvironmentMap=He.EnvironmentMap,exports.EnvironmentPortal=He.EnvironmentPortal,exports.Lightformer=Ve.Lightformer,exports.Sky=We.Sky,exports.calcPosFromAngles=We.calcPosFromAngles,exports.Stars=Ke.Stars,exports.Cloud=Qe.Cloud,exports.CloudInstance=Qe.CloudInstance,exports.Clouds=Qe.Clouds,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.MatcapTexture=Xe.MatcapTexture,exports.useMatcapTexture=Xe.useMatcapTexture,exports.NormalTexture=_e.NormalTexture,exports.useNormalTexture=_e.useNormalTexture,exports.Wireframe=Je.Wireframe,exports.ShadowAlpha=Ye.ShadowAlpha,exports.Point=Ze.Point,exports.Points=Ze.Points,exports.PointsBuffer=Ze.PointsBuffer,exports.PositionPoint=Ze.PositionPoint,exports.Instance=$e.Instance,exports.InstancedAttribute=$e.InstancedAttribute,exports.Instances=$e.Instances,exports.Merged=$e.Merged,exports.PositionMesh=$e.PositionMesh,exports.createInstances=$e.createInstances,exports.Segment=er.Segment,exports.SegmentObject=er.SegmentObject,exports.Segments=er.Segments,exports.Detailed=rr.Detailed,exports.Preload=sr.Preload,exports.BakeShadows=tr.BakeShadows,exports.meshBounds=or.meshBounds,exports.AdaptiveDpr=ir.AdaptiveDpr,exports.AdaptiveEvents=ar.AdaptiveEvents,exports.PerformanceMonitor=ur.PerformanceMonitor,exports.usePerformanceMonitor=ur.usePerformanceMonitor,exports.RenderTexture=cr.RenderTexture,exports.RenderCubeTexture=nr.RenderCubeTexture,exports.Mask=pr.Mask,exports.useMask=pr.useMask,exports.Hud=jr.Hud,exports.Fisheye=xr.Fisheye,exports.MeshPortalMaterial=lr.MeshPortalMaterial,exports.calculateScaleFactor=dr.calculateScaleFactor;
|
package/core/index.js
CHANGED
|
@@ -48,7 +48,7 @@ export { Progress, useProgress } from './Progress.js';
|
|
|
48
48
|
export { IsObject, Texture, useTexture } from './Texture.js';
|
|
49
49
|
export { VideoTexture, useVideoTexture } from './VideoTexture.js';
|
|
50
50
|
export { useFont } from './useFont.js';
|
|
51
|
-
export {
|
|
51
|
+
export { checkIfFrameIsEmpty, getFirstFrame, useSpriteLoader } from './useSpriteLoader.js';
|
|
52
52
|
export { Helper, useHelper } from './Helper.js';
|
|
53
53
|
export { Stats } from './Stats.js';
|
|
54
54
|
export { StatsGl } from './StatsGl.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");function a(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n=a(e),s=a(t);const o=(e,r)=>{if(Array.isArray(e))return e[0];return e[null!=r?r:Object.keys(e)[0]][0]},u=e=>{for(let r=3;r<e.length;r+=4)if(0!==e[r])return!1;return!0};function c(a,c,i,f,l,m){const h=s.useRef(r.useThree((e=>e.viewport))),d=s.useRef(null),w=s.useRef(0),p=s.useRef(a),y=s.useRef(c),g=s.useRef(i),[b,x]=t.useState(null),[A,S]=s.useState(new n.Texture),L=s.useMemo((()=>new n.TextureLoader),[]),[C,O]=t.useState(null),j=s.useCallback(((e,r,t)=>{const a=r*(h.current.aspect>e/r?h.current.width/e:h.current.height/r),s=e*(h.current.aspect>e/r?h.current.width/e:h.current.height/r)*t,o=a*t;let u=Math.min(1,s),c=Math.min(1,o);return s>1&&(u=1,c=o/s*1),new n.Vector3(u,c,1)}),[]),k=s.useCallback(((e,r)=>{if(e.image){const t=document.createElement("canvas"),a=t.getContext("2d",m);if(!a)throw new Error("Failed to get 2d context");t.width=e.image.width,t.height=e.image.height,a.drawImage(e.image,0,0);const n=e.image.width,s=e.image.height,o=Math.round(Math.sqrt(r*(n/s))),c=Math.round(r/o),i=n/o,f=s/c,l=[];for(let e=0;e<c;e++)for(let t=0;t<o;t++){if(e*o+t>=r){l.push({row:e,col:t});continue}const n=a.getImageData(t*i,e*f,i,f).data;u(n)&&l.push({row:e,col:t})}return{rows:c,columns:o,frameWidth:i,frameHeight:f,emptyFrames:l}}return{rows:0,columns:0,frameWidth:0,frameHeight:0,emptyFrames:[]}}),[m]),v=s.useCallback((e=>{const r=e=>{let r=null;for(const t of e){const{w:e,h:a}=t.frame,n=e*a;(!r||n>r.area)&&(r={w:e,h:a,area:n})}return e.map((e=>{const{w:t,h:a}=e.frame,n=t*a,s=r?n===r.area?1:Math.sqrt(n/r.area):1;return{...e,scaleRatio:s}}))};if(Array.isArray(e))return r(e);{const t={};for(const a in e)t[a]=r(e[a]);return t}}),[]),z=s.useCallback((()=>{const e={},r=d.current,t=g.current;if(r){if(t&&Array.isArray(r.frames)){for(let a=0;a<t.length;a++){e[t[a]]=[];for(const n of r.frames){const r=n.frame,s=n.sourceSize.w,o=n.sourceSize.h;"string"==typeof n.filename&&-1!==n.filename.toLowerCase().indexOf(t[a].toLowerCase())&&e[t[a]].push({...n,frame:r,sourceSize:{w:s,h:o}})}}for(const r in e){const t=v(e[r]);Array.isArray(t)&&(e[r]=t)}return e}if(t&&"object"==typeof r.frames){for(let a=0;a<t.length;a++){e[t[a]]=[];for(const n in r.frames){const s=r.frames[n],o=s.frame,u=s.sourceSize.w,c=s.sourceSize.h;"string"==typeof n&&-1!==n.toLowerCase().indexOf(t[a].toLowerCase())&&e[t[a]].push({...s,frame:o,sourceSize:{w:u,h:c}})}}for(const r in e){const t=v(e[r]);Array.isArray(t)&&(e[r]=t)}return e}{let e=[];return null!=r&&r.frames&&(e=Array.isArray(r.frames)?r.frames.map((e=>({...e,x:e.frame.x,y:e.frame.y,w:e.frame.w,h:e.frame.h}))):Object.values(r.frames).flat().map((e=>({...e,x:e.frame.x,y:e.frame.y,w:e.frame.w,h:e.frame.h})))),v(e)}}return[]}),[v,d]),R=s.useCallback(((e,r)=>{let t=new n.Vector3(1,1,1);if(null===e){if(r&&f){const e=r.image.width,a=r.image.height;w.current=f;const{rows:n,columns:s,frameWidth:o,frameHeight:u,emptyFrames:c}=k(r,f),i={frames:[],meta:{version:"1.0",size:{w:e,h:a},rows:n,columns:s,frameWidth:o,frameHeight:u,scale:"1"}};for(let e=0;e<n;e++)for(let r=0;r<s;r++){(null!=c?c:[]).some((t=>t.row===e&&t.col===r))||Array.isArray(i.frames)&&i.frames.push({frame:{x:r*o,y:e*u,w:o,h:u},scaleRatio:1,rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:o,h:u},sourceSize:{w:o,h:u}})}t=j(o,u,.1),d.current=i}d.current&&d.current.frames&&(d.current.frames=v(d.current.frames))}else if(r){d.current=e,d.current.frames=z(),w.current=Array.isArray(e.frames)?e.frames.length:Object.keys(e.frames).length;const{w:r,h:a}=o(e.frames).sourceSize;t=j(r,a,.1)}x(d.current),"encoding"in r?r.encoding=3001:"colorSpace"in r&&(r.colorSpace=n.SRGBColorSpace),S(r),O({spriteTexture:r,spriteData:d.current,aspect:t})}),[k,f,z,j,v]),E=s.useCallback(((e,r,t)=>{const a=fetch(e).then((e=>e.json())),n=new Promise((e=>{L.load(r,e)}));Promise.all([a,n]).then((e=>{t(e[0],e[1])}))}),[L]),M=s.useCallback((e=>{if(!e&&!p.current)throw new Error("Either textureUrl or input must be provided");const r=null!=e?e:p.current;if(!r)throw new Error("A valid texture URL must be provided");L.load(r,(e=>R(null,e)))}),[L,R]),T=s.useCallback(((e,r)=>{r&&e?E(r,e,R):M(e)}),[E,M,R]);return s.useLayoutEffect((()=>{y.current&&p.current?E(y.current,p.current,R):p.current&&M();const t=p.current;return()=>{t&&r.useLoader.clear(e.TextureLoader,t)}}),[E,M,R]),s.useLayoutEffect((()=>{null==l||l(A,null!=b?b:null)}),[A,b,l]),{spriteObj:C,loadJsonAndTexture:T}}c.preload=t=>r.useLoader.preload(e.TextureLoader,t),c.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.checkIfFrameIsEmpty=u,exports.getFirstFrame=o,exports.useSpriteLoader=c;
|