@playcanvas/react
Version:
A React renderer for PlayCanvas – build interactive 3D applications using React's declarative paradigm.
83 lines (82 loc) • 2.05 kB
TypeScript
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
*/