@playcanvas/react
Version:
A React renderer for PlayCanvas – build interactive 3D applications using React's declarative paradigm.
27 lines • 1.25 kB
JavaScript
"use client";
import { useComponent } from "../hooks/index.js";
import { Asset, Entity } from "playcanvas";
import { validatePropsWithDefaults, createComponentDefinition, getStaticNullApplication } from "../utils/validation.js";
/**
* The GSplat component allows an entity to render a Gaussian Splat.
* @param {GSplatProps} props - The props to pass to the GSplat component.
* @see https://api.playcanvas.com/engine/classes/GSplatComponent.html
* @example
* const { data: splat } = useSplat('./splat.ply')
* <GSplat asset={splat} />
*/
export const GSplat = (props) => {
const safeProps = validatePropsWithDefaults(props, componentDefinition);
useComponent("gsplat", safeProps, componentDefinition.schema);
return null;
};
const componentDefinition = createComponentDefinition("GSplat", () => new Entity("mock-gsplat", getStaticNullApplication()).addComponent('gsplat'), (component) => component.system.destroy(), "GSplatComponent");
componentDefinition.schema = {
...componentDefinition.schema,
asset: {
validate: (val) => val instanceof Asset,
errorMsg: (val) => `Invalid value for prop "asset": "${JSON.stringify(val)}". Expected an Asset.`,
default: null
}
};
//# sourceMappingURL=GSplat.js.map