UNPKG

react-native-filament

Version:

A real-time physically based 3D rendering engine for React Native

36 lines (34 loc) 1.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAnimator = useAnimator; var _react = require("react"); var _useFilamentContext = require("./useFilamentContext"); function isFilamentModel(asset) { // @ts-expect-error Because asset is a HostObject and using "in" check is a) expensive and b) somehow broken return asset.state != null; } /** * Creates a animator for the given {@linkcode FilamentAsset} or {@linkcode FilamentInstance}. * * @note For each asset/instance you should only have one animator. */ function useAnimator(modelOrAsset) { const { nameComponentManager } = (0, _useFilamentContext.useFilamentContext)(); const animator = (0, _react.useMemo)(() => { if (modelOrAsset == null) return undefined; if (isFilamentModel(modelOrAsset)) { if (modelOrAsset.state === 'loading') return undefined; const { asset } = modelOrAsset; return asset.createAnimator(nameComponentManager); } return modelOrAsset.createAnimator(nameComponentManager); }, [modelOrAsset, nameComponentManager]); return animator; } //# sourceMappingURL=useAnimator.js.map