UNPKG

@playcanvas/react

Version:

A React renderer for PlayCanvas – build interactive 3D applications using React's declarative paradigm.

83 lines (82 loc) 2.05 kB
import React, { PropsWithChildren } from 'react'; type Vector3 = { x: number; y: number; z: number; }; /** Common props for an Entity */ export interface EntityProps { name?: string; position?: Vector3; rotation?: Vector3; } /** RigidBody component props (example) */ export interface RigidBodyProps { type?: 'static' | 'dynamic' | 'kinematic'; mass?: number; friction?: number; restitution?: number; } /** Model component props (example) */ export interface ModelProps { type?: string; materialAsset?: number; castShadows?: boolean; receiveShadows?: boolean; } /** Camera component props (example) */ export interface CameraProps { clearColor?: { r: number; g: number; b: number; a: number; }; fov?: number; } /** Light component props (example) */ export interface LightProps { type?: 'directional' | 'point' | 'spot'; color?: { r: number; g: number; b: number; }; intensity?: number; } /** For full coverage, define similarly for each PlayCanvas component: * - Animation * - AudioListener * - Button * - Collision * - Element * - LayoutChild * - LayoutGroup * - Model * - ParticleSystem * - RigidBody * - Screen * - Script * - ScrollView * - Sound * - SoundSlot * - Zone * ... or at least the ones you need */ /**************************************************************** * React Elements * We use TS generics so each component gets typed props ****************************************************************/ export declare const Entity: React.FC<PropsWithChildren<EntityProps>>; export declare const Model: React.FC<ModelProps>; export declare const Camera: React.FC<CameraProps>; export declare const Light: React.FC<LightProps>; export declare const RigidBody: React.FC<RigidBodyProps>; export {}; /** You'd continue with all other possible components: * - <Collision /> * - <Element /> * - <Animation /> * - <ParticleSystem /> * ... etc */