@react-three/drei 9.45.1 → 9.46.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -77,6 +77,7 @@ The `native` route of the library **does not** export `Html` or `Loader`. The de
77
77
  <li><a href="#marchingcubes">MarchingCubes</a></li>
78
78
  <li><a href="#decal">Decal</a></li>
79
79
  <li><a href="#svg">Svg</a></li>
80
+ <li><a href="#asciirenderer">AsciiRenderer</a></li>
80
81
  </ul>
81
82
  <li><a href="#shaders">Shaders</a></li>
82
83
  <ul>
@@ -1249,6 +1250,38 @@ Accepts an SVG url or svg raw data.
1249
1250
  <Svg src={urlOrRawSvgString} />
1250
1251
  ```
1251
1252
 
1253
+ #### AsciiRenderer
1254
+
1255
+ <p>
1256
+ <a href="https://codesandbox.io/s/vq9wsl"><img width="20%" src="https://codesandbox.io/api/v1/sandboxes/vq9wsl/screenshot.png" alt="Demo"/></a>
1257
+ </p>
1258
+
1259
+ Abstraction of three's [AsciiEffect](https://threejs.org/examples/?q=as#webgl_effects_ascii). It creates a DOM layer on top of the canvas and renders the scene as ascii characters.
1260
+
1261
+ ```tsx
1262
+ type AsciiRendererProps = {
1263
+ /** Render index, default: 1 */
1264
+ renderIndex?: number
1265
+ /** CSS background color (can be "transparent"), default: black */
1266
+ bgColor?: string
1267
+ /** CSS character color, default: white */
1268
+ fgColor?: string
1269
+ /** Characters, default: ' .:-+*=%@#' */
1270
+ characters?: string
1271
+ /** Invert character, default: true */
1272
+ invert?: boolean
1273
+ /** Colorize output (very expensive!), default: false */
1274
+ color?: boolean
1275
+ /** Level of detail, default: 0.15 */
1276
+ resolution?: number
1277
+ }
1278
+ ```
1279
+
1280
+ ```jsx
1281
+ <Canvas>
1282
+ <AsciiRenderer />
1283
+ ```
1284
+
1252
1285
  # Shaders
1253
1286
 
1254
1287
  #### MeshReflectorMaterial
@@ -2744,20 +2777,6 @@ This component makes its contents float or hover.
2744
2777
  Creates a "stage" with proper studio lighting, 0/0/0 top-centred, model-shadows, ground-shadows and optional zoom to fit. Make sure to set `makeDefault` on your controls when `adjustCamera` is true!
2745
2778
 
2746
2779
  ```tsx
2747
- type StageShadows = Partial<AccumulativeShadowsProps> &
2748
- Partial<RandomizedLightProps> &
2749
- Partial<ContactShadowsProps> & {
2750
- type: 'contact' | 'accumulative'
2751
- /** Shadow plane offset, default: 0 */
2752
- offset?: number
2753
- /** Shadow bias, default: -0.0001 */
2754
- bias?: number
2755
- /** Shadow normal bias, default: 0 */
2756
- normalBias?: number
2757
- /** Shadow map size, default: 1024 */
2758
- size?: number
2759
- }
2760
-
2761
2780
  type StageProps = {
2762
2781
  /** Lighting setup, default: "rembrandt" */
2763
2782
  preset?:
@@ -2774,7 +2793,23 @@ type StageProps = {
2774
2793
  environment?: PresetsType | Partial<EnvironmentProps>
2775
2794
  /** The lighting intensity, default: 0.5 */
2776
2795
  intensity?: number
2796
+ /** To adjust centering, default: undefined */
2797
+ center?: Partial<CenterProps>
2777
2798
  }
2799
+
2800
+ type StageShadows = Partial<AccumulativeShadowsProps> &
2801
+ Partial<RandomizedLightProps> &
2802
+ Partial<ContactShadowsProps> & {
2803
+ type: 'contact' | 'accumulative'
2804
+ /** Shadow plane offset, default: 0 */
2805
+ offset?: number
2806
+ /** Shadow bias, default: -0.0001 */
2807
+ bias?: number
2808
+ /** Shadow normal bias, default: 0 */
2809
+ normalBias?: number
2810
+ /** Shadow map size, default: 1024 */
2811
+ size?: number
2812
+ }
2778
2813
  ```
2779
2814
 
2780
2815
  By default it gives you contact shadows and auto-centering.
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber"),r=require("three-stdlib");function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=o(e);exports.AsciiRenderer=function({renderIndex:e=1,bgColor:o="black",fgColor:l="white",characters:s=" .:-+*=%@#",invert:c=!0,color:i=!1,resolution:d=.15}){const{size:u,gl:m,scene:a,camera:f}=t.useThree(),E=n.useMemo((()=>{const e=new r.AsciiEffect(m,s,{invert:c,color:i,resolution:d});return e.domElement.style.position="absolute",e.domElement.style.top="0px",e.domElement.style.left="0px",e.domElement.style.pointerEvents="none",e}),[s,c,i,d]);n.useLayoutEffect((()=>{E.domElement.style.color=l,E.domElement.style.backgroundColor=o}),[l,o]),n.useEffect((()=>(m.domElement.style.opacity="0",m.domElement.parentNode.appendChild(E.domElement),()=>{m.domElement.style.opacity="1",m.domElement.parentNode.removeChild(E.domElement)})),[E]),n.useEffect((()=>{E.setSize(u.width,u.height)}),[E,u]),t.useFrame((e=>{E.render(a,f)}),e)};
@@ -0,0 +1,11 @@
1
+ declare type AsciiRendererProps = {
2
+ renderIndex?: number;
3
+ bgColor?: string;
4
+ fgColor?: string;
5
+ characters?: string;
6
+ invert?: boolean;
7
+ color?: boolean;
8
+ resolution?: number;
9
+ };
10
+ export declare function AsciiRenderer({ renderIndex, bgColor, fgColor, characters, invert, color, resolution, }: AsciiRendererProps): void;
11
+ export {};
@@ -0,0 +1,58 @@
1
+ import * as React from 'react';
2
+ import { useThree, useFrame } from '@react-three/fiber';
3
+ import { AsciiEffect } from 'three-stdlib';
4
+
5
+ function AsciiRenderer({
6
+ renderIndex = 1,
7
+ bgColor = 'black',
8
+ fgColor = 'white',
9
+ characters = ' .:-+*=%@#',
10
+ invert = true,
11
+ color = false,
12
+ resolution = 0.15
13
+ }) {
14
+ // Reactive state
15
+ const {
16
+ size,
17
+ gl,
18
+ scene,
19
+ camera
20
+ } = useThree(); // Create effect
21
+
22
+ const effect = React.useMemo(() => {
23
+ const effect = new AsciiEffect(gl, characters, {
24
+ invert,
25
+ color,
26
+ resolution
27
+ });
28
+ effect.domElement.style.position = 'absolute';
29
+ effect.domElement.style.top = '0px';
30
+ effect.domElement.style.left = '0px';
31
+ effect.domElement.style.pointerEvents = 'none';
32
+ return effect;
33
+ }, [characters, invert, color, resolution]); // Styling
34
+
35
+ React.useLayoutEffect(() => {
36
+ effect.domElement.style.color = fgColor;
37
+ effect.domElement.style.backgroundColor = bgColor;
38
+ }, [fgColor, bgColor]); // Append on mount, remove on unmount
39
+
40
+ React.useEffect(() => {
41
+ gl.domElement.style.opacity = '0';
42
+ gl.domElement.parentNode.appendChild(effect.domElement);
43
+ return () => {
44
+ gl.domElement.style.opacity = '1';
45
+ gl.domElement.parentNode.removeChild(effect.domElement);
46
+ };
47
+ }, [effect]); // Set size
48
+
49
+ React.useEffect(() => {
50
+ effect.setSize(size.width, size.height);
51
+ }, [effect, size]); // Take over render-loop (that is what the index is for)
52
+
53
+ useFrame(state => {
54
+ effect.render(scene, camera);
55
+ }, renderIndex); // This component returns nothing, it is a purely logical
56
+ }
57
+
58
+ export { AsciiRenderer };
package/core/Center.d.ts CHANGED
@@ -13,7 +13,7 @@ export declare type OnCenterCallbackProps = {
13
13
  horizontalAlignment: number;
14
14
  depthAlignment: number;
15
15
  };
16
- declare type CenterProps = JSX.IntrinsicElements['group'] & {
16
+ export declare type CenterProps = {
17
17
  top?: boolean;
18
18
  right?: boolean;
19
19
  bottom?: boolean;
@@ -26,5 +26,22 @@ declare type CenterProps = JSX.IntrinsicElements['group'] & {
26
26
  precise?: boolean;
27
27
  onCentered?: (props: OnCenterCallbackProps) => void;
28
28
  };
29
- export declare const Center: React.ForwardRefExoticComponent<Pick<CenterProps, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "left" | "right" | "bottom" | "top" | "disableX" | "disableY" | "disableZ" | "front" | "back" | "onCentered" | "precise"> & React.RefAttributes<Group>>;
30
- export {};
29
+ export declare const Center: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<Group>, import("@react-three/fiber").NodeProps<Group, typeof Group>>>, import("@react-three/fiber").NonFunctionKeys<{
30
+ position?: import("@react-three/fiber").Vector3 | undefined;
31
+ up?: import("@react-three/fiber").Vector3 | undefined;
32
+ scale?: import("@react-three/fiber").Vector3 | undefined;
33
+ rotation?: import("@react-three/fiber").Euler | undefined;
34
+ matrix?: import("@react-three/fiber").Matrix4 | undefined;
35
+ quaternion?: import("@react-three/fiber").Quaternion | undefined;
36
+ layers?: import("@react-three/fiber").Layers | undefined;
37
+ dispose?: (() => void) | null | undefined;
38
+ }>> & {
39
+ position?: import("@react-three/fiber").Vector3 | undefined;
40
+ up?: import("@react-three/fiber").Vector3 | undefined;
41
+ scale?: import("@react-three/fiber").Vector3 | undefined;
42
+ rotation?: import("@react-three/fiber").Euler | undefined;
43
+ matrix?: import("@react-three/fiber").Matrix4 | undefined;
44
+ quaternion?: import("@react-three/fiber").Quaternion | undefined;
45
+ layers?: import("@react-three/fiber").Layers | undefined;
46
+ dispose?: (() => void) | null | undefined;
47
+ } & import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers & CenterProps, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | keyof CenterProps> & React.RefAttributes<Group>>;
package/core/Stage.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),i=require("./Environment.cjs.js"),n=require("./ContactShadows.cjs.js"),r=require("./Center.cjs.js"),a=require("./AccumulativeShadows.cjs.js"),l=require("./Bounds.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("three"),require("three-stdlib"),require("../helpers/environment-assets.cjs.js"),require("./shaderMaterial.cjs.js");var o=s(e),c=u(t);const d={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};function m({radius:e,adjustCamera:t}){const i=l.useBounds();return c.useEffect((()=>{t&&i.refresh().clip().fit()}),[e,t]),null}exports.Stage=function({children:e,adjustCamera:t=!0,intensity:s=.5,shadows:u="contact",environment:f="city",preset:p="rembrandt",...h}){var v,b,j,g,y,E,w,q;const S="string"==typeof p?d[p]:p,[{radius:C,height:O},z]=c.useState({radius:0,width:0,height:0,depth:0}),B=null!==(v=null==u?void 0:u.bias)&&void 0!==v?v:-1e-4,L=null!==(b=null==u?void 0:u.normalBias)&&void 0!==b?b:0,M=null!==(j=null==u?void 0:u.size)&&void 0!==j?j:1024,_=null!==(g=null==u?void 0:u.offset)&&void 0!==g?g:0,x="contact"===u||"contact"===(null==u?void 0:u.type),P="accumulative"===u||"accumulative"===(null==u?void 0:u.type),A={..."object"==typeof u?u:{}},k=f?"string"==typeof f?{preset:f}:f:null;return c.createElement(c.Fragment,null,c.createElement("ambientLight",{intensity:s/3}),c.createElement("spotLight",{penumbra:1,position:[S.main[0]*C,S.main[1]*C,S.main[2]*C],intensity:2*s,castShadow:!!u,"shadow-bias":B,"shadow-normalBias":L,"shadow-mapSize":M}),c.createElement("pointLight",{position:[S.fill[0]*C,S.fill[1]*C,S.fill[2]*C],intensity:s}),c.createElement(l.Bounds,o.default({fit:!!t,clip:!!t,margin:Number(t),observe:!0},h),c.createElement(m,{radius:C,adjustCamera:t}),c.createElement(r.Center,{position:[0,_/2,0],onCentered:({width:e,height:t,depth:i,boundingSphere:n,...r})=>z({radius:n.radius,width:e,height:t,depth:i})},e)),c.createElement("group",{position:[0,-O/2-_/2,0]},x&&c.createElement(n.ContactShadows,o.default({scale:4*C,far:C,blur:2},A)),P&&c.createElement(a.AccumulativeShadows,o.default({temporal:!0,frames:100,alphaTest:.9,toneMapped:!0,scale:4*C},A),c.createElement(a.RandomizedLight,{amount:null!==(y=A.amount)&&void 0!==y?y:8,radius:null!==(E=A.radius)&&void 0!==E?E:C,ambient:null!==(w=A.ambient)&&void 0!==w?w:.5,intensity:null!==(q=A.intensity)&&void 0!==q?q:1,position:[S.main[0]*C,S.main[1]*C,S.main[2]*C],size:4*C,bias:-B,mapSize:M}))),f&&c.createElement(i.Environment,k))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),n=require("./Environment.cjs.js"),i=require("./ContactShadows.cjs.js"),r=require("./Center.cjs.js"),a=require("./AccumulativeShadows.cjs.js"),l=require("./Bounds.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("three"),require("three-stdlib"),require("../helpers/environment-assets.cjs.js"),require("./shaderMaterial.cjs.js");var o=s(e),c=u(t);const d={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};function m({radius:e,adjustCamera:t}){const n=l.useBounds();return c.useEffect((()=>{t&&n.refresh().clip().fit()}),[e,t]),null}exports.Stage=function({children:e,center:t,adjustCamera:s=!0,intensity:u=.5,shadows:f="contact",environment:p="city",preset:h="rembrandt",...v}){var b,j,g,y,E,w,q,C;const S="string"==typeof h?d[h]:h,[{radius:O,height:z},B]=c.useState({radius:0,width:0,height:0,depth:0}),L=null!==(b=null==f?void 0:f.bias)&&void 0!==b?b:-1e-4,M=null!==(j=null==f?void 0:f.normalBias)&&void 0!==j?j:0,_=null!==(g=null==f?void 0:f.size)&&void 0!==g?g:1024,x=null!==(y=null==f?void 0:f.offset)&&void 0!==y?y:0,P="contact"===f||"contact"===(null==f?void 0:f.type),A="accumulative"===f||"accumulative"===(null==f?void 0:f.type),k={..."object"==typeof f?f:{}},D=p?"string"==typeof p?{preset:p}:p:null;return c.createElement(c.Fragment,null,c.createElement("ambientLight",{intensity:u/3}),c.createElement("spotLight",{penumbra:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],intensity:2*u,castShadow:!!f,"shadow-bias":L,"shadow-normalBias":M,"shadow-mapSize":_}),c.createElement("pointLight",{position:[S.fill[0]*O,S.fill[1]*O,S.fill[2]*O],intensity:u}),c.createElement(l.Bounds,o.default({fit:!!s,clip:!!s,margin:Number(s),observe:!0},v),c.createElement(m,{radius:O,adjustCamera:s}),c.createElement(r.Center,o.default({},t,{position:[0,x/2,0],onCentered:e=>{const{width:n,height:i,depth:r,boundingSphere:a}=e;B({radius:a.radius,width:n,height:i,depth:r}),null!=t&&t.onCentered&&t.onCentered(e)}}),e)),c.createElement("group",{position:[0,-z/2-x/2,0]},P&&c.createElement(i.ContactShadows,o.default({scale:4*O,far:O,blur:2},k)),A&&c.createElement(a.AccumulativeShadows,o.default({temporal:!0,frames:100,alphaTest:.9,toneMapped:!0,scale:4*O},k),c.createElement(a.RandomizedLight,{amount:null!==(E=k.amount)&&void 0!==E?E:8,radius:null!==(w=k.radius)&&void 0!==w?w:O,ambient:null!==(q=k.ambient)&&void 0!==q?q:.5,intensity:null!==(C=k.intensity)&&void 0!==C?C:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],size:4*O,bias:-L,mapSize:_}))),p&&c.createElement(n.Environment,D))};
package/core/Stage.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { EnvironmentProps } from './Environment';
3
3
  import { ContactShadowsProps } from './ContactShadows';
4
+ import { CenterProps } from './Center';
4
5
  import { AccumulativeShadowsProps, RandomizedLightProps } from './AccumulativeShadows';
5
6
  import { PresetsType } from '../helpers/environment-assets';
6
7
  declare type StageShadows = Partial<AccumulativeShadowsProps> & Partial<RandomizedLightProps> & Partial<ContactShadowsProps> & {
@@ -19,6 +20,7 @@ declare type StageProps = {
19
20
  adjustCamera?: boolean | number;
20
21
  environment?: PresetsType | Partial<EnvironmentProps>;
21
22
  intensity?: number;
23
+ center?: Partial<CenterProps>;
22
24
  };
23
- export declare function Stage({ children, adjustCamera, intensity, shadows, environment, preset, ...props }: JSX.IntrinsicElements['group'] & StageProps): JSX.Element;
25
+ export declare function Stage({ children, center, adjustCamera, intensity, shadows, environment, preset, ...props }: JSX.IntrinsicElements['group'] & StageProps): JSX.Element;
24
26
  export {};
package/core/Stage.js CHANGED
@@ -38,6 +38,7 @@ function Refit({
38
38
 
39
39
  function Stage({
40
40
  children,
41
+ center,
41
42
  adjustCamera = true,
42
43
  intensity = 0.5,
43
44
  shadows = 'contact',
@@ -89,21 +90,24 @@ function Stage({
89
90
  }, props), /*#__PURE__*/React.createElement(Refit, {
90
91
  radius: radius,
91
92
  adjustCamera: adjustCamera
92
- }), /*#__PURE__*/React.createElement(Center, {
93
+ }), /*#__PURE__*/React.createElement(Center, _extends({}, center, {
93
94
  position: [0, shadowOffset / 2, 0],
94
- onCentered: ({
95
- width,
96
- height,
97
- depth,
98
- boundingSphere,
99
- ...data
100
- }) => set({
101
- radius: boundingSphere.radius,
102
- width,
103
- height,
104
- depth
105
- })
106
- }, children)), /*#__PURE__*/React.createElement("group", {
95
+ onCentered: props => {
96
+ const {
97
+ width,
98
+ height,
99
+ depth,
100
+ boundingSphere
101
+ } = props;
102
+ set({
103
+ radius: boundingSphere.radius,
104
+ width,
105
+ height,
106
+ depth
107
+ });
108
+ if (center != null && center.onCentered) center.onCentered(props);
109
+ }
110
+ }), children)), /*#__PURE__*/React.createElement("group", {
107
111
  position: [0, -height / 2 - shadowOffset / 2, 0]
108
112
  }, contactShadow && /*#__PURE__*/React.createElement(ContactShadows, _extends({
109
113
  scale: radius * 4,
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("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),u=require("./PositionalAudio.cjs.js"),a=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),l=require("./Trail.cjs.js"),d=require("./Sampler.cjs.js"),q=require("./ComputedAttribute.cjs.js"),m=require("./Clone.cjs.js"),h=require("./MarchingCubes.cjs.js"),C=require("./Decal.cjs.js"),S=require("./Svg.cjs.js"),M=require("./OrthographicCamera.cjs.js"),T=require("./PerspectiveCamera.cjs.js"),P=require("./CubeCamera.cjs.js"),b=require("./DeviceOrientationControls.cjs.js"),B=require("./FlyControls.cjs.js"),g=require("./MapControls.cjs.js"),f=require("./OrbitControls.cjs.js"),v=require("./TrackballControls.cjs.js"),L=require("./ArcballControls.cjs.js"),A=require("./TransformControls.cjs.js"),k=require("./PointerLockControls.cjs.js"),D=require("./FirstPersonControls.cjs.js"),E=require("./GizmoHelper.cjs.js"),R=require("./GizmoViewcube.cjs.js"),w=require("./GizmoViewport.cjs.js"),G=require("./useCubeTexture.cjs.js"),z=require("./useFBX.cjs.js"),F=require("./useGLTF.cjs.js"),O=require("./useKTX2.cjs.js"),I=require("./useProgress.cjs.js"),H=require("./useTexture.cjs.js"),V=require("./useVideoTexture.cjs.js"),y=require("./Stats.cjs.js"),Q=require("./useDepthBuffer.cjs.js"),X=require("./useAspect.cjs.js"),K=require("./useCamera.cjs.js"),W=require("./useDetectGPU.cjs.js"),N=require("./useHelper.cjs.js"),U=require("./useBVH.cjs.js"),_=require("./useContextBridge.cjs.js"),J=require("./useAnimations.cjs.js"),Y=require("./useFBO.cjs.js"),Z=require("./useIntersect.cjs.js"),$=require("./useBoxProjectedEnv.cjs.js"),ee=require("./BBAnchor.cjs.js"),re=require("./useTrailTexture.cjs.js"),se=require("./CurveModifier.cjs.js"),te=require("./MeshDistortMaterial.cjs.js"),oe=require("./MeshWobbleMaterial.cjs.js"),ie=require("./MeshReflectorMaterial.cjs.js"),ue=require("./MeshRefractionMaterial.cjs.js"),ae=require("./PointMaterial.cjs.js"),ce=require("./shaderMaterial.cjs.js"),ne=require("./softShadows.cjs.js"),je=require("./shapes.cjs.js"),pe=require("./RoundedBox.cjs.js"),xe=require("./ScreenQuad.cjs.js"),le=require("./Center.cjs.js"),de=require("./Bounds.cjs.js"),qe=require("./CameraShake.cjs.js"),me=require("./Float.cjs.js"),he=require("./Stage.cjs.js"),Ce=require("./Backdrop.cjs.js"),Se=require("./Shadow.cjs.js"),Me=require("./ContactShadows.cjs.js"),Te=require("./AccumulativeShadows.cjs.js"),Pe=require("./Reflector.cjs.js"),be=require("./SpotLight.cjs.js"),Be=require("./Environment.cjs.js"),ge=require("./Lightformer.cjs.js"),fe=require("./Sky.cjs.js"),ve=require("./Stars.cjs.js"),Le=require("./Cloud.cjs.js"),Ae=require("./Sparkles.cjs.js"),ke=require("./useMatcapTexture.cjs.js"),De=require("./useNormalTexture.cjs.js"),Ee=require("./Points.cjs.js"),Re=require("./Instances.cjs.js"),we=require("./Segments.cjs.js"),Ge=require("./Detailed.cjs.js"),ze=require("./Preload.cjs.js"),Fe=require("./BakeShadows.cjs.js"),Oe=require("./meshBounds.cjs.js"),Ie=require("./AdaptiveDpr.cjs.js"),He=require("./AdaptiveEvents.cjs.js"),Ve=require("./PerformanceMonitor.cjs.js"),ye=require("./RenderTexture.cjs.js"),Qe=require("./Mask.cjs.js"),Xe=require("./Hud.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=u.PositionalAudio,exports.Text=a.Text,exports.Text3D=c.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=p.Image,exports.Edges=x.Edges,exports.Trail=l.Trail,exports.useTrail=l.useTrail,exports.Sampler=d.Sampler,exports.useSurfaceSampler=d.useSurfaceSampler,exports.ComputedAttribute=q.ComputedAttribute,exports.Clone=m.Clone,exports.MarchingCube=h.MarchingCube,exports.MarchingCubes=h.MarchingCubes,exports.MarchingPlane=h.MarchingPlane,exports.Decal=C.Decal,exports.Svg=S.Svg,exports.OrthographicCamera=M.OrthographicCamera,exports.PerspectiveCamera=T.PerspectiveCamera,exports.CubeCamera=P.CubeCamera,exports.DeviceOrientationControls=b.DeviceOrientationControls,exports.FlyControls=B.FlyControls,exports.MapControls=g.MapControls,exports.OrbitControls=f.OrbitControls,exports.TrackballControls=v.TrackballControls,exports.ArcballControls=L.ArcballControls,exports.TransformControls=A.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=D.FirstPersonControls,exports.GizmoHelper=E.GizmoHelper,exports.useGizmoContext=E.useGizmoContext,exports.GizmoViewcube=R.GizmoViewcube,exports.GizmoViewport=w.GizmoViewport,exports.useCubeTexture=G.useCubeTexture,exports.useFBX=z.useFBX,exports.useGLTF=F.useGLTF,exports.useKTX2=O.useKTX2,exports.useProgress=I.useProgress,exports.IsObject=H.IsObject,exports.useTexture=H.useTexture,exports.useVideoTexture=V.useVideoTexture,exports.Stats=y.Stats,exports.useDepthBuffer=Q.useDepthBuffer,exports.useAspect=X.useAspect,exports.useCamera=K.useCamera,exports.useDetectGPU=W.useDetectGPU,exports.useHelper=N.useHelper,exports.useBVH=U.useBVH,exports.useContextBridge=_.useContextBridge,exports.useAnimations=J.useAnimations,exports.useFBO=Y.useFBO,exports.useIntersect=Z.useIntersect,exports.useBoxProjectedEnv=$.useBoxProjectedEnv,exports.BBAnchor=ee.BBAnchor,exports.useTrailTexture=re.useTrailTexture,exports.CurveModifier=se.CurveModifier,exports.MeshDistortMaterial=te.MeshDistortMaterial,exports.MeshWobbleMaterial=oe.MeshWobbleMaterial,exports.MeshReflectorMaterial=ie.MeshReflectorMaterial,exports.MeshRefractionMaterial=ue.MeshRefractionMaterial,exports.PointMaterial=ae.PointMaterial,exports.PointMaterialImpl=ae.PointMaterialImpl,exports.shaderMaterial=ce.shaderMaterial,exports.softShadows=ne.softShadows,exports.Box=je.Box,exports.Capsule=je.Capsule,exports.Circle=je.Circle,exports.Cone=je.Cone,exports.Cylinder=je.Cylinder,exports.Dodecahedron=je.Dodecahedron,exports.Extrude=je.Extrude,exports.Icosahedron=je.Icosahedron,exports.Lathe=je.Lathe,exports.Octahedron=je.Octahedron,exports.Plane=je.Plane,exports.Polyhedron=je.Polyhedron,exports.Ring=je.Ring,exports.Sphere=je.Sphere,exports.Tetrahedron=je.Tetrahedron,exports.Torus=je.Torus,exports.TorusKnot=je.TorusKnot,exports.Tube=je.Tube,exports.RoundedBox=pe.RoundedBox,exports.ScreenQuad=xe.ScreenQuad,exports.Center=le.Center,exports.Bounds=de.Bounds,exports.useBounds=de.useBounds,exports.CameraShake=qe.CameraShake,exports.Float=me.Float,exports.Stage=he.Stage,exports.Backdrop=Ce.Backdrop,exports.Shadow=Se.Shadow,exports.ContactShadows=Me.ContactShadows,exports.AccumulativeShadows=Te.AccumulativeShadows,exports.RandomizedLight=Te.RandomizedLight,exports.accumulativeContext=Te.accumulativeContext,exports.Reflector=Pe.Reflector,exports.SpotLight=be.SpotLight,exports.SpotLightShadow=be.SpotLightShadow,exports.Environment=Be.Environment,exports.EnvironmentCube=Be.EnvironmentCube,exports.EnvironmentMap=Be.EnvironmentMap,exports.EnvironmentPortal=Be.EnvironmentPortal,exports.useEnvironment=Be.useEnvironment,exports.Lightformer=ge.Lightformer,exports.Sky=fe.Sky,exports.calcPosFromAngles=fe.calcPosFromAngles,exports.Stars=ve.Stars,exports.Cloud=Le.Cloud,exports.Sparkles=Ae.Sparkles,exports.useMatcapTexture=ke.useMatcapTexture,exports.useNormalTexture=De.useNormalTexture,exports.Point=Ee.Point,exports.Points=Ee.Points,exports.PointsBuffer=Ee.PointsBuffer,exports.PositionPoint=Ee.PositionPoint,exports.Instance=Re.Instance,exports.Instances=Re.Instances,exports.Merged=Re.Merged,exports.Segment=we.Segment,exports.SegmentObject=we.SegmentObject,exports.Segments=we.Segments,exports.Detailed=Ge.Detailed,exports.Preload=ze.Preload,exports.BakeShadows=Fe.BakeShadows,exports.meshBounds=Oe.meshBounds,exports.AdaptiveDpr=Ie.AdaptiveDpr,exports.AdaptiveEvents=He.AdaptiveEvents,exports.PerformanceMonitor=Ve.PerformanceMonitor,exports.usePerformanceMonitor=Ve.usePerformanceMonitor,exports.RenderTexture=ye.RenderTexture,exports.Mask=Qe.Mask,exports.useMask=Qe.useMask,exports.Hud=Xe.Hud;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),u=require("./PositionalAudio.cjs.js"),a=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),l=require("./Trail.cjs.js"),d=require("./Sampler.cjs.js"),q=require("./ComputedAttribute.cjs.js"),m=require("./Clone.cjs.js"),h=require("./MarchingCubes.cjs.js"),C=require("./Decal.cjs.js"),S=require("./Svg.cjs.js"),M=require("./AsciiRenderer.cjs.js"),T=require("./OrthographicCamera.cjs.js"),P=require("./PerspectiveCamera.cjs.js"),b=require("./CubeCamera.cjs.js"),B=require("./DeviceOrientationControls.cjs.js"),g=require("./FlyControls.cjs.js"),f=require("./MapControls.cjs.js"),v=require("./OrbitControls.cjs.js"),A=require("./TrackballControls.cjs.js"),L=require("./ArcballControls.cjs.js"),k=require("./TransformControls.cjs.js"),R=require("./PointerLockControls.cjs.js"),D=require("./FirstPersonControls.cjs.js"),E=require("./GizmoHelper.cjs.js"),w=require("./GizmoViewcube.cjs.js"),G=require("./GizmoViewport.cjs.js"),z=require("./useCubeTexture.cjs.js"),F=require("./useFBX.cjs.js"),O=require("./useGLTF.cjs.js"),I=require("./useKTX2.cjs.js"),H=require("./useProgress.cjs.js"),V=require("./useTexture.cjs.js"),y=require("./useVideoTexture.cjs.js"),Q=require("./Stats.cjs.js"),X=require("./useDepthBuffer.cjs.js"),K=require("./useAspect.cjs.js"),W=require("./useCamera.cjs.js"),N=require("./useDetectGPU.cjs.js"),U=require("./useHelper.cjs.js"),_=require("./useBVH.cjs.js"),J=require("./useContextBridge.cjs.js"),Y=require("./useAnimations.cjs.js"),Z=require("./useFBO.cjs.js"),$=require("./useIntersect.cjs.js"),ee=require("./useBoxProjectedEnv.cjs.js"),re=require("./BBAnchor.cjs.js"),se=require("./useTrailTexture.cjs.js"),te=require("./CurveModifier.cjs.js"),oe=require("./MeshDistortMaterial.cjs.js"),ie=require("./MeshWobbleMaterial.cjs.js"),ue=require("./MeshReflectorMaterial.cjs.js"),ae=require("./MeshRefractionMaterial.cjs.js"),ce=require("./PointMaterial.cjs.js"),ne=require("./shaderMaterial.cjs.js"),je=require("./softShadows.cjs.js"),pe=require("./shapes.cjs.js"),xe=require("./RoundedBox.cjs.js"),le=require("./ScreenQuad.cjs.js"),de=require("./Center.cjs.js"),qe=require("./Bounds.cjs.js"),me=require("./CameraShake.cjs.js"),he=require("./Float.cjs.js"),Ce=require("./Stage.cjs.js"),Se=require("./Backdrop.cjs.js"),Me=require("./Shadow.cjs.js"),Te=require("./ContactShadows.cjs.js"),Pe=require("./AccumulativeShadows.cjs.js"),be=require("./Reflector.cjs.js"),Be=require("./SpotLight.cjs.js"),ge=require("./Environment.cjs.js"),fe=require("./Lightformer.cjs.js"),ve=require("./Sky.cjs.js"),Ae=require("./Stars.cjs.js"),Le=require("./Cloud.cjs.js"),ke=require("./Sparkles.cjs.js"),Re=require("./useMatcapTexture.cjs.js"),De=require("./useNormalTexture.cjs.js"),Ee=require("./Points.cjs.js"),we=require("./Instances.cjs.js"),Ge=require("./Segments.cjs.js"),ze=require("./Detailed.cjs.js"),Fe=require("./Preload.cjs.js"),Oe=require("./BakeShadows.cjs.js"),Ie=require("./meshBounds.cjs.js"),He=require("./AdaptiveDpr.cjs.js"),Ve=require("./AdaptiveEvents.cjs.js"),ye=require("./PerformanceMonitor.cjs.js"),Qe=require("./RenderTexture.cjs.js"),Xe=require("./Mask.cjs.js"),Ke=require("./Hud.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=u.PositionalAudio,exports.Text=a.Text,exports.Text3D=c.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=p.Image,exports.Edges=x.Edges,exports.Trail=l.Trail,exports.useTrail=l.useTrail,exports.Sampler=d.Sampler,exports.useSurfaceSampler=d.useSurfaceSampler,exports.ComputedAttribute=q.ComputedAttribute,exports.Clone=m.Clone,exports.MarchingCube=h.MarchingCube,exports.MarchingCubes=h.MarchingCubes,exports.MarchingPlane=h.MarchingPlane,exports.Decal=C.Decal,exports.Svg=S.Svg,exports.AsciiRenderer=M.AsciiRenderer,exports.OrthographicCamera=T.OrthographicCamera,exports.PerspectiveCamera=P.PerspectiveCamera,exports.CubeCamera=b.CubeCamera,exports.DeviceOrientationControls=B.DeviceOrientationControls,exports.FlyControls=g.FlyControls,exports.MapControls=f.MapControls,exports.OrbitControls=v.OrbitControls,exports.TrackballControls=A.TrackballControls,exports.ArcballControls=L.ArcballControls,exports.TransformControls=k.TransformControls,exports.PointerLockControls=R.PointerLockControls,exports.FirstPersonControls=D.FirstPersonControls,exports.GizmoHelper=E.GizmoHelper,exports.useGizmoContext=E.useGizmoContext,exports.GizmoViewcube=w.GizmoViewcube,exports.GizmoViewport=G.GizmoViewport,exports.useCubeTexture=z.useCubeTexture,exports.useFBX=F.useFBX,exports.useGLTF=O.useGLTF,exports.useKTX2=I.useKTX2,exports.useProgress=H.useProgress,exports.IsObject=V.IsObject,exports.useTexture=V.useTexture,exports.useVideoTexture=y.useVideoTexture,exports.Stats=Q.Stats,exports.useDepthBuffer=X.useDepthBuffer,exports.useAspect=K.useAspect,exports.useCamera=W.useCamera,exports.useDetectGPU=N.useDetectGPU,exports.useHelper=U.useHelper,exports.useBVH=_.useBVH,exports.useContextBridge=J.useContextBridge,exports.useAnimations=Y.useAnimations,exports.useFBO=Z.useFBO,exports.useIntersect=$.useIntersect,exports.useBoxProjectedEnv=ee.useBoxProjectedEnv,exports.BBAnchor=re.BBAnchor,exports.useTrailTexture=se.useTrailTexture,exports.CurveModifier=te.CurveModifier,exports.MeshDistortMaterial=oe.MeshDistortMaterial,exports.MeshWobbleMaterial=ie.MeshWobbleMaterial,exports.MeshReflectorMaterial=ue.MeshReflectorMaterial,exports.MeshRefractionMaterial=ae.MeshRefractionMaterial,exports.PointMaterial=ce.PointMaterial,exports.PointMaterialImpl=ce.PointMaterialImpl,exports.shaderMaterial=ne.shaderMaterial,exports.softShadows=je.softShadows,exports.Box=pe.Box,exports.Capsule=pe.Capsule,exports.Circle=pe.Circle,exports.Cone=pe.Cone,exports.Cylinder=pe.Cylinder,exports.Dodecahedron=pe.Dodecahedron,exports.Extrude=pe.Extrude,exports.Icosahedron=pe.Icosahedron,exports.Lathe=pe.Lathe,exports.Octahedron=pe.Octahedron,exports.Plane=pe.Plane,exports.Polyhedron=pe.Polyhedron,exports.Ring=pe.Ring,exports.Sphere=pe.Sphere,exports.Tetrahedron=pe.Tetrahedron,exports.Torus=pe.Torus,exports.TorusKnot=pe.TorusKnot,exports.Tube=pe.Tube,exports.RoundedBox=xe.RoundedBox,exports.ScreenQuad=le.ScreenQuad,exports.Center=de.Center,exports.Bounds=qe.Bounds,exports.useBounds=qe.useBounds,exports.CameraShake=me.CameraShake,exports.Float=he.Float,exports.Stage=Ce.Stage,exports.Backdrop=Se.Backdrop,exports.Shadow=Me.Shadow,exports.ContactShadows=Te.ContactShadows,exports.AccumulativeShadows=Pe.AccumulativeShadows,exports.RandomizedLight=Pe.RandomizedLight,exports.accumulativeContext=Pe.accumulativeContext,exports.Reflector=be.Reflector,exports.SpotLight=Be.SpotLight,exports.SpotLightShadow=Be.SpotLightShadow,exports.Environment=ge.Environment,exports.EnvironmentCube=ge.EnvironmentCube,exports.EnvironmentMap=ge.EnvironmentMap,exports.EnvironmentPortal=ge.EnvironmentPortal,exports.useEnvironment=ge.useEnvironment,exports.Lightformer=fe.Lightformer,exports.Sky=ve.Sky,exports.calcPosFromAngles=ve.calcPosFromAngles,exports.Stars=Ae.Stars,exports.Cloud=Le.Cloud,exports.Sparkles=ke.Sparkles,exports.useMatcapTexture=Re.useMatcapTexture,exports.useNormalTexture=De.useNormalTexture,exports.Point=Ee.Point,exports.Points=Ee.Points,exports.PointsBuffer=Ee.PointsBuffer,exports.PositionPoint=Ee.PositionPoint,exports.Instance=we.Instance,exports.Instances=we.Instances,exports.Merged=we.Merged,exports.Segment=Ge.Segment,exports.SegmentObject=Ge.SegmentObject,exports.Segments=Ge.Segments,exports.Detailed=ze.Detailed,exports.Preload=Fe.Preload,exports.BakeShadows=Oe.BakeShadows,exports.meshBounds=Ie.meshBounds,exports.AdaptiveDpr=He.AdaptiveDpr,exports.AdaptiveEvents=Ve.AdaptiveEvents,exports.PerformanceMonitor=ye.PerformanceMonitor,exports.usePerformanceMonitor=ye.usePerformanceMonitor,exports.RenderTexture=Qe.RenderTexture,exports.Mask=Xe.Mask,exports.useMask=Xe.useMask,exports.Hud=Ke.Hud;
package/core/index.d.ts CHANGED
@@ -18,6 +18,7 @@ export * from './Clone';
18
18
  export * from './MarchingCubes';
19
19
  export * from './Decal';
20
20
  export * from './Svg';
21
+ export * from './AsciiRenderer';
21
22
  export * from './OrthographicCamera';
22
23
  export * from './PerspectiveCamera';
23
24
  export * from './CubeCamera';
package/core/index.js CHANGED
@@ -18,6 +18,7 @@ export { Clone } from './Clone.js';
18
18
  export { MarchingCube, MarchingCubes, MarchingPlane } from './MarchingCubes.js';
19
19
  export { Decal } from './Decal.js';
20
20
  export { Svg } from './Svg.js';
21
+ export { AsciiRenderer } from './AsciiRenderer.js';
21
22
  export { OrthographicCamera } from './OrthographicCamera.js';
22
23
  export { PerspectiveCamera } from './PerspectiveCamera.js';
23
24
  export { CubeCamera } from './CubeCamera.js';