@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/Environment.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("react"),t=require("@react-three/fiber"),r=require("three"),o=require("three-stdlib"),u=require("./useEnvironment.cjs.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../helpers/deprecated.cjs.js");var c=a(e),s=i(n);function l(e,n,r,o,u={}){var a,i,c,s,l;u={backgroundBlurriness:null!==(a=u.blur)&&void 0!==a?a:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...u};const d=(e=>{return(n=e).current&&n.current.isScene?e.current:e;var n})(n||r),m=d.background,b=d.environment,g={backgroundBlurriness:d.backgroundBlurriness,backgroundIntensity:d.backgroundIntensity,backgroundRotation:null!==(i=null==(c=d.backgroundRotation)||null==c.clone?void 0:c.clone())&&void 0!==i?i:[0,0,0],environmentIntensity:d.environmentIntensity,environmentRotation:null!==(s=null==(l=d.environmentRotation)||null==l.clone?void 0:l.clone())&&void 0!==s?s:[0,0,0]};return"only"!==e&&(d.environment=o),e&&(d.background=o),t.applyProps(d,u),()=>{"only"!==e&&(d.environment=b),e&&(d.background=m),t.applyProps(d,g)}}function d({scene:e,background:n=!1,map:r,...o}){const u=t.useThree((e=>e.scene));return s.useLayoutEffect((()=>{if(r)return l(n,e,u,r,o)})),null}function m({background:e=!1,scene:n,blur:r,backgroundBlurriness:o,backgroundIntensity:a,backgroundRotation:i,environmentIntensity:c,environmentRotation:d,...m}){const b=u.useEnvironment(m),g=t.useThree((e=>e.scene));return s.useLayoutEffect((()=>l(e,n,g,b,{blur:r,backgroundBlurriness:o,backgroundIntensity:a,backgroundRotation:i,environmentIntensity:c,environmentRotation:d}))),null}function b({children:e,near:n=.1,far:o=1e3,resolution:u=256,frames:a=1,map:i,background:c=!1,blur:b,backgroundBlurriness:g,backgroundIntensity:v,backgroundRotation:f,environmentIntensity:p,environmentRotation:k,scene:y,files:E,path:h,preset:j,extensions:I}){const R=t.useThree((e=>e.gl)),x=t.useThree((e=>e.scene)),P=s.useRef(null),[q]=s.useState((()=>new r.Scene)),C=s.useMemo((()=>{const e=new r.WebGLCubeRenderTarget(u);return e.texture.type=r.HalfFloatType,e}),[u]);s.useLayoutEffect((()=>{if(1===a){const e=R.autoClear;R.autoClear=!0,P.current.update(R,q),R.autoClear=e}return l(c,y,x,C.texture,{blur:b,backgroundBlurriness:g,backgroundIntensity:v,backgroundRotation:f,environmentIntensity:p,environmentRotation:k})}),[e,q,C.texture,y,x,c,a,R]);let B=1;return t.useFrame((()=>{if(a===1/0||B<a){const e=R.autoClear;R.autoClear=!0,P.current.update(R,q),R.autoClear=e,B++}})),s.createElement(s.Fragment,null,t.createPortal(s.createElement(s.Fragment,null,e,s.createElement("cubeCamera",{ref:P,args:[n,o,C]}),E||j?s.createElement(m,{background:!0,files:E,preset:j,path:h,extensions:I}):i?s.createElement(d,{background:!0,map:i,extensions:I}):null),q))}function g(e){var n,r,a,i;const l=u.useEnvironment(e),m=e.map||l;s.useMemo((()=>t.extend({GroundProjectedEnvImpl:o.GroundProjectedEnv})),[]);const b=s.useMemo((()=>[m]),[m]),g=null==(n=e.ground)?void 0:n.height,v=null==(r=e.ground)?void 0:r.radius,f=null!==(a=null==(i=e.ground)?void 0:i.scale)&&void 0!==a?a:1e3;return s.createElement(s.Fragment,null,s.createElement(d,c.default({},e,{map:m})),s.createElement("groundProjectedEnvImpl",{args:b,scale:f,height:g,radius:v}))}exports.Environment=function(e){return e.ground?s.createElement(g,e):e.map?s.createElement(d,e):e.children?s.createElement(b,e):s.createElement(m,e)},exports.EnvironmentCube=m,exports.EnvironmentMap=d,exports.EnvironmentPortal=b;
|
package/core/Environment.js
CHANGED
|
@@ -81,7 +81,7 @@ function EnvironmentCube({
|
|
|
81
81
|
}
|
|
82
82
|
function EnvironmentPortal({
|
|
83
83
|
children,
|
|
84
|
-
near = 1,
|
|
84
|
+
near = 0.1,
|
|
85
85
|
far = 1000,
|
|
86
86
|
resolution = 256,
|
|
87
87
|
frames = 1,
|
|
@@ -109,7 +109,12 @@ function EnvironmentPortal({
|
|
|
109
109
|
return fbo;
|
|
110
110
|
}, [resolution]);
|
|
111
111
|
React.useLayoutEffect(() => {
|
|
112
|
-
if (frames === 1)
|
|
112
|
+
if (frames === 1) {
|
|
113
|
+
const autoClear = gl.autoClear;
|
|
114
|
+
gl.autoClear = true;
|
|
115
|
+
camera.current.update(gl, virtualScene);
|
|
116
|
+
gl.autoClear = autoClear;
|
|
117
|
+
}
|
|
113
118
|
return setEnvProps(background, scene, defaultScene, fbo.texture, {
|
|
114
119
|
blur,
|
|
115
120
|
backgroundBlurriness,
|
|
@@ -122,7 +127,10 @@ function EnvironmentPortal({
|
|
|
122
127
|
let count = 1;
|
|
123
128
|
useFrame(() => {
|
|
124
129
|
if (frames === Infinity || count < frames) {
|
|
130
|
+
const autoClear = gl.autoClear;
|
|
131
|
+
gl.autoClear = true;
|
|
125
132
|
camera.current.update(gl, virtualScene);
|
|
133
|
+
gl.autoClear = autoClear;
|
|
126
134
|
count++;
|
|
127
135
|
}
|
|
128
136
|
});
|
package/core/Lightformer.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("@react-three/fiber"),t=require("react"),a=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("@react-three/fiber"),t=require("react"),a=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(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 c=n(e),l=o(t),i=o(a);const u=l.forwardRef((({light:e,args:t,map:a,toneMapped:n=!1,color:o="white",form:u="rect",intensity:s=1,scale:f=1,target:m=[0,0,0],children:p,...d},y)=>{const g=l.useRef(null);return l.useImperativeHandle(y,(()=>g.current),[]),l.useLayoutEffect((()=>{p||d.material||(r.applyProps(g.current.material,{color:o}),g.current.material.color.multiplyScalar(s))}),[o,s,p,d.material]),l.useLayoutEffect((()=>{d.rotation||g.current.quaternion.identity(),m&&!d.rotation&&("boolean"==typeof m?g.current.lookAt(0,0,0):g.current.lookAt(Array.isArray(m)?new i.Vector3(...m):m))}),[m,d.rotation]),f=Array.isArray(f)&&2===f.length?[f[0],f[1],1]:f,l.createElement("mesh",c.default({ref:g,scale:f},d),"circle"===u?l.createElement("ringGeometry",{args:t||[0,.5,64]}):"ring"===u?l.createElement("ringGeometry",{args:t||[.25,.5,64]}):"rect"===u||"plane"===u?l.createElement("planeGeometry",{args:t||[1,1]}):"box"===u?l.createElement("boxGeometry",{args:t||[1,1,1]}):l.createElement(u,{args:t}),p||l.createElement("meshBasicMaterial",{toneMapped:n,map:a,side:i.DoubleSide}),e&&l.createElement("pointLight",c.default({castShadow:!0},e)))}));exports.Lightformer=u;
|
package/core/Lightformer.d.ts
CHANGED
|
@@ -6,9 +6,10 @@ export type LightProps = JSX.IntrinsicElements['mesh'] & {
|
|
|
6
6
|
map?: THREE.Texture;
|
|
7
7
|
toneMapped?: boolean;
|
|
8
8
|
color?: ReactThreeFiber.Color;
|
|
9
|
-
form?: 'circle' | 'ring' | 'rect' | any;
|
|
9
|
+
form?: 'circle' | 'ring' | 'rect' | 'plane' | 'box' | any;
|
|
10
10
|
scale?: number | [number, number, number] | [number, number];
|
|
11
11
|
intensity?: number;
|
|
12
|
-
target?: [number, number, number] | THREE.Vector3;
|
|
12
|
+
target?: boolean | [number, number, number] | THREE.Vector3;
|
|
13
|
+
light?: Partial<JSX.IntrinsicElements['pointLight']>;
|
|
13
14
|
};
|
|
14
15
|
export declare const Lightformer: ForwardRefComponent<LightProps, THREE.Mesh>;
|
package/core/Lightformer.js
CHANGED
|
@@ -4,6 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import * as THREE from 'three';
|
|
5
5
|
|
|
6
6
|
const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
7
|
+
light,
|
|
7
8
|
args,
|
|
8
9
|
map,
|
|
9
10
|
toneMapped = false,
|
|
@@ -11,7 +12,7 @@ const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
|
11
12
|
form: Form = 'rect',
|
|
12
13
|
intensity = 1,
|
|
13
14
|
scale = 1,
|
|
14
|
-
target,
|
|
15
|
+
target = [0, 0, 0],
|
|
15
16
|
children,
|
|
16
17
|
...props
|
|
17
18
|
}, forwardRef) => {
|
|
@@ -29,8 +30,11 @@ const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
|
29
30
|
|
|
30
31
|
// Target light
|
|
31
32
|
React.useLayoutEffect(() => {
|
|
32
|
-
if (
|
|
33
|
-
|
|
33
|
+
if (!props.rotation) ref.current.quaternion.identity();
|
|
34
|
+
if (target && !props.rotation) {
|
|
35
|
+
'boolean' === typeof target ? ref.current.lookAt(0, 0, 0) : ref.current.lookAt(Array.isArray(target) ? new THREE.Vector3(...target) : target);
|
|
36
|
+
}
|
|
37
|
+
}, [target, props.rotation]);
|
|
34
38
|
|
|
35
39
|
// Fix 2-dimensional scale
|
|
36
40
|
scale = Array.isArray(scale) && scale.length === 2 ? [scale[0], scale[1], 1] : scale;
|
|
@@ -38,16 +42,22 @@ const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
|
38
42
|
ref: ref,
|
|
39
43
|
scale: scale
|
|
40
44
|
}, props), Form === 'circle' ? /*#__PURE__*/React.createElement("ringGeometry", {
|
|
41
|
-
args: [0,
|
|
45
|
+
args: args ? args : [0, 0.5, 64]
|
|
42
46
|
}) : Form === 'ring' ? /*#__PURE__*/React.createElement("ringGeometry", {
|
|
43
|
-
args: [0.
|
|
44
|
-
}) : Form === 'rect' ? /*#__PURE__*/React.createElement("planeGeometry",
|
|
47
|
+
args: args ? args : [0.25, 0.5, 64]
|
|
48
|
+
}) : Form === 'rect' || Form === 'plane' ? /*#__PURE__*/React.createElement("planeGeometry", {
|
|
49
|
+
args: args ? args : [1, 1]
|
|
50
|
+
}) : Form === 'box' ? /*#__PURE__*/React.createElement("boxGeometry", {
|
|
51
|
+
args: args ? args : [1, 1, 1]
|
|
52
|
+
}) : /*#__PURE__*/React.createElement(Form, {
|
|
45
53
|
args: args
|
|
46
|
-
}), children ? children :
|
|
54
|
+
}), children ? children : /*#__PURE__*/React.createElement("meshBasicMaterial", {
|
|
47
55
|
toneMapped: toneMapped,
|
|
48
56
|
map: map,
|
|
49
57
|
side: THREE.DoubleSide
|
|
50
|
-
})
|
|
58
|
+
}), light && /*#__PURE__*/React.createElement("pointLight", _extends({
|
|
59
|
+
castShadow: true
|
|
60
|
+
}, light)));
|
|
51
61
|
});
|
|
52
62
|
|
|
53
63
|
export { Lightformer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber"),n=require("three"),u=require("./Instances.cjs.js"),a=require("./useSpriteLoader.cjs.js");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber"),n=require("three"),u=require("./Instances.cjs.js"),a=require("./Billboard.cjs.js"),c=require("./useSpriteLoader.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("react-composer"),require("../helpers/deprecated.cjs.js");var o=l(e),i=s(r),m=s(n);const f=i.createContext(null);const p=new m.PlaneGeometry(1,1),d=i.forwardRef((({startFrame:e=0,endFrame:r,fps:n=30,frameName:l="",textureDataURL:s,textureImageURL:d,loop:h=!1,numberOfFrames:v=1,autoPlay:y=!0,animationNames:w,onStart:E,onEnd:F,onLoopEnd:b,onFrame:g,play:x,pause:S=!1,flipX:j=!1,alphaTest:R=0,children:A,asSprite:M=!1,offset:N,playBackwards:O=!1,resetOnEnd:q=!1,maxItems:z=1,instanceItems:D=[[0,0,0]],spriteDataset:L,canvasRenderingContext2DSettings:P,roundFramePosition:T=!1,meshProps:I={},...k},B)=>{const C=i.useRef(new m.Group),V=i.useRef(null),_=i.useRef(null),U=i.useRef(null),G=i.useRef(window.performance.now()),H=i.useRef(e),J=i.useRef(l),W=n>0?1e3/n:0,[X,K]=i.useState(new m.Texture),Q=i.useRef(0),[Y,Z]=i.useState(new m.Vector3(1,1,1)),$=j?-1:1,ee=i.useRef(S),re=i.useRef(N),te=i.useRef(!1),{spriteObj:ne,loadJsonAndTexture:ue}=c.useSpriteLoader(null,null,w,v,void 0,P),ae=i.useRef(l),ce=i.useCallback(((e,r)=>{if(null===r)v&&(Q.current=v,O&&(H.current=v-1),V.current=r);else{var t,n;V.current=r,V.current&&Array.isArray(V.current.frames)?Q.current=V.current.frames.length:V.current&&"object"==typeof V.current&&ae.current?Q.current=V.current.frames[ae.current].length:Q.current=0,O&&(H.current=Q.current-1);const{w:u,h:a}=c.getFirstFrame(null!==(t=null==(n=V.current)?void 0:n.frames)&&void 0!==t?t:[],ae.current).sourceSize,l=oe(u,a);Z(l),_.current&&(_.current.map=e)}K(e)}),[v,O]),le=i.useCallback((()=>{if(!V.current)return;const{meta:{size:e},frames:r}=V.current,{w:t,h:n}=Array.isArray(r)?r[0].sourceSize:l&&r[l]?r[l][0].sourceSize:{w:0,h:0};_.current&&_.current.map&&(_.current.map.wrapS=_.current.map.wrapT=m.RepeatWrapping,_.current.map.center.set(0,0),_.current.map.repeat.set(1*$/(e.w/t),1/(e.h/n)));const u=1/((e.h-1)/n);_.current&&_.current.map&&(_.current.map.offset.x=0,_.current.map.offset.y=1-u),E&&E({currentFrameName:null!=l?l:"",currentFrame:H.current})}),[$,l,E]),se=i.useMemo((()=>({current:re.current,offset:re.current,imageUrl:d,hasEnded:!1,ref:B})),[d,B]);i.useImperativeHandle(B,(()=>C.current),[]),i.useLayoutEffect((()=>{re.current=N}),[N]);const oe=(e,r)=>{var t;const n=new m.Vector3,u=r/e;return n.set(1,u,1),null==(t=U.current)||t.scale.copy(n),n};i.useEffect((()=>{var e;L?ce(null==L||null==(e=L.spriteTexture)?void 0:e.clone(),L.spriteData):d&&s&&ue(d,s)}),[ue,L,s,d,ce]),i.useEffect((()=>{var e;ne&&ce(null==ne||null==(e=ne.spriteTexture)?void 0:e.clone(),null==ne?void 0:ne.spriteData)}),[ne,ce]),i.useEffect((()=>{var e;(se.hasEnded=!1,V.current&&!0===O)?H.current=(null!==(e=V.current.frames.length)&&void 0!==e?e:0)-1:H.current=0}),[O,se]),i.useLayoutEffect((()=>{le()}),[X,j,le]),i.useEffect((()=>{y&&(ee.current=!1)}),[y]),i.useLayoutEffect((()=>{if(J.current!==l&&l&&(H.current=0,J.current=l,se.hasEnded=!1,W<=0&&(H.current=r||e||0),V.current)){const{w:e,h:r}=c.getFirstFrame(V.current.frames,l).sourceSize,t=oe(e,r);Z(t)}}),[l,W,se,r,e]);const ie=(e,r,t,n)=>{var u=void 0===N?se.current:N;const a=H.current;let c=0,l=0;oe(e,r);const s=T?Math.round((t.w-1)/e):(t.w-1)/e,o=T?Math.round((t.h-1)/r):(t.h-1)/r;if(!n[a])return;const{frame:{x:i,y:m},sourceSize:{w:f,h:p}}=n[a],d=1/s,h=1/o;if(_.current&&_.current.map&&(c=$>0?d*(i/f):d*(i/f)-_.current.map.repeat.x,l=Math.abs(1-h)-h*(m/p),_.current.map.offset.x=c,_.current.map.offset.y=l),null!=u){let e=Math.floor(u*n.length);e=Math.max(0,Math.min(e,n.length-1)),isNaN(e)&&(e=0),H.current=e}else O?H.current-=1:H.current+=1};return t.useFrame(((t,n)=>{var u,a;null!=(u=V.current)&&u.frames&&null!=(a=_.current)&&a.map&&(ee.current||se.hasEnded||!y&&!x||((()=>{if(null===(t=V.current)||!("meta"in t)||!("frames"in t))return;var t;const{meta:{size:n},frames:u}=V.current,{w:a,h:s}=c.getFirstFrame(u,l).sourceSize,o=Array.isArray(u)?u:l?u[l]:[],i=r||o.length-1;var m=void 0===N?se.current:N;if(W<=0)return H.current=r||e||0,void ie(a,s,n,o);const f=window.performance.now(),p=f-G.current;if(!(p<=W)){var d=O?H.current<0:H.current>i,v=O?H.current===i:0===H.current,y=O?H.current<0:H.current>=i;if(d){if(H.current=h&&null!=e?e:0,O&&(H.current=i),h?null==b||b({currentFrameName:null!=l?l:"",currentFrame:H.current}):(null==F||F({currentFrameName:null!=l?l:"",currentFrame:H.current}),se.hasEnded=!q,q&&(ee.current=!0)),!h)return}else v&&(null==E||E({currentFrameName:null!=l?l:"",currentFrame:H.current}));void 0!==m&&y?!1===te.current&&(null==F||F({currentFrameName:null!=l?l:"",currentFrame:H.current}),te.current=!0):te.current=!1,p<=W||(G.current=f-p%W,ie(a,s,n,o))}})(),null==g||g({currentFrameName:J.current,currentFrame:H.current})))})),i.createElement("group",o.default({},k,{ref:C,scale:function(e=new m.Vector3(1,1,1),r=1){return"number"==typeof r?e.multiplyScalar(r):Array.isArray(r)?e.multiply(new m.Vector3(...r)):r instanceof m.Vector3?e.multiply(r):void 0}(Y,k.scale)}),i.createElement(f.Provider,{value:se},M&&i.createElement(a.Billboard,null,i.createElement("mesh",o.default({ref:U,scale:1,geometry:p},I),i.createElement("meshBasicMaterial",{premultipliedAlpha:!1,toneMapped:!1,side:m.DoubleSide,ref:_,map:X,transparent:!0,alphaTest:null!=R?R:0}))),!M&&i.createElement(u.Instances,o.default({geometry:p,limit:null!=z?z:1},I),i.createElement("meshBasicMaterial",{premultipliedAlpha:!1,toneMapped:!1,side:m.DoubleSide,ref:_,map:X,transparent:!0,alphaTest:null!=R?R:0}),(null!=D?D:[0]).map(((e,r)=>i.createElement(u.Instance,o.default({key:r,ref:1===(null==D?void 0:D.length)?U:null,position:e,scale:1},I))))),A))}));exports.SpriteAnimator=d,exports.useSpriteAnimator=function(){return i.useContext(f)};
|
package/core/SpriteAnimator.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { Vector3 } from '@react-three/fiber';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import { Instances, Instance } from './Instances';
|
|
5
|
+
import { SpriteData } from './useSpriteLoader';
|
|
6
|
+
type AnimationEventData = {
|
|
7
|
+
currentFrameName: string;
|
|
8
|
+
currentFrame: number;
|
|
8
9
|
};
|
|
10
|
+
type CommonProps<T, U, V> = Pick<T & U & V, keyof T & keyof U & keyof V>;
|
|
11
|
+
type CommonMeshProps = CommonProps<React.ComponentProps<'mesh'>, React.ComponentProps<typeof Instance>, React.ComponentProps<typeof Instances>>;
|
|
9
12
|
export type SpriteAnimatorProps = {
|
|
10
13
|
startFrame?: number;
|
|
11
14
|
endFrame?: number;
|
|
@@ -17,32 +20,36 @@ export type SpriteAnimatorProps = {
|
|
|
17
20
|
numberOfFrames?: number;
|
|
18
21
|
autoPlay?: boolean;
|
|
19
22
|
animationNames?: Array<string>;
|
|
20
|
-
onStart?:
|
|
21
|
-
onEnd?:
|
|
22
|
-
onLoopEnd?:
|
|
23
|
-
onFrame?:
|
|
23
|
+
onStart?: (data: AnimationEventData) => void;
|
|
24
|
+
onEnd?: (data: AnimationEventData) => void;
|
|
25
|
+
onLoopEnd?: (data: AnimationEventData) => void;
|
|
26
|
+
onFrame?: (data: AnimationEventData) => void;
|
|
24
27
|
play?: boolean;
|
|
25
28
|
pause?: boolean;
|
|
26
29
|
flipX?: boolean;
|
|
27
|
-
position?: Array<number>;
|
|
28
30
|
alphaTest?: number;
|
|
29
31
|
asSprite?: boolean;
|
|
30
32
|
offset?: number;
|
|
31
33
|
playBackwards?: boolean;
|
|
32
34
|
resetOnEnd?: boolean;
|
|
35
|
+
instanceItems?: Vector3[];
|
|
33
36
|
maxItems?: number;
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
spriteDataset?: {
|
|
38
|
+
spriteTexture: THREE.Texture;
|
|
39
|
+
spriteData: SpriteData | null;
|
|
40
|
+
aspect: Vector3;
|
|
41
|
+
} | null;
|
|
36
42
|
canvasRenderingContext2DSettings?: CanvasRenderingContext2DSettings;
|
|
37
43
|
roundFramePosition?: boolean;
|
|
38
44
|
meshProps?: CommonMeshProps;
|
|
39
45
|
} & JSX.IntrinsicElements['group'];
|
|
40
46
|
type SpriteAnimatorState = {
|
|
41
|
-
current
|
|
42
|
-
offset
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
current?: number;
|
|
48
|
+
offset?: number;
|
|
49
|
+
imageUrl?: string;
|
|
50
|
+
hasEnded: boolean;
|
|
51
|
+
ref: React.Ref<THREE.Group>;
|
|
45
52
|
};
|
|
46
53
|
export declare function useSpriteAnimator(): SpriteAnimatorState | null;
|
|
47
|
-
export declare const SpriteAnimator: React.
|
|
54
|
+
export declare const SpriteAnimator: React.ForwardRefExoticComponent<Omit<SpriteAnimatorProps, "ref"> & React.RefAttributes<THREE.Group>>;
|
|
48
55
|
export {};
|