@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
144 lines • 4.17 kB
TypeScript
/**
* Represents a primitive 3d object, a combination of a material and geometry
* This is roughly equivalent to single draw call, note that his is not a hierarchical data structure, if you want that - you will need to combine multiple entities, each with a `ShadedGeometry` component
*/
export class ShadedGeometry {
/**
*
* @param {THREE.BufferGeometry} geometry
* @param {THREE.Material} material
* @param {DrawMode} [draw_mode]
* @return {ShadedGeometry}
*/
static from(geometry: THREE.BufferGeometry, material: THREE.Material, draw_mode?: DrawMode): ShadedGeometry;
/**
*
* @type {THREE.BufferGeometry|null}
*/
geometry: THREE.BufferGeometry | null;
/**
*
* @type {THREE.Material|null}
*/
material: THREE.Material | null;
/**
* Optional extra material used for shadowmaps
* @type {THREE.Material|null}
*/
depth_material: THREE.Material | null;
__bvh_leaf: BvhClient;
/**
* Transient, assigned in the system
* @type {number}
* @private
*/
private __entity;
/**
* Transient, cached for convenience. Associated transform component from the same entity
* @type {Transform|null}
* @private
*/
private __c_transform;
/**
*
* @type {DrawMode|number}
*/
mode: DrawMode | number;
/**
* Transient property signifying how to render object, such as using INSTANCED draw
* @type {number}
*/
draw_method: number;
/**
*
* @type {number}
*/
flags: number;
/**
*
* @param {number|ShadedGeometryFlags} flag
* @returns {void}
*/
setFlag(flag: number | ShadedGeometryFlags): void;
/**
*
* @param {number|ShadedGeometryFlags} flag
* @returns {void}
*/
clearFlag(flag: number | ShadedGeometryFlags): void;
/**
*
* @param {number|ShadedGeometryFlags} flag
* @param {boolean} value
*/
writeFlag(flag: number | ShadedGeometryFlags, value: boolean): void;
/**
*
* @param {number|ShadedGeometryFlags} flag
* @returns {boolean}
*/
getFlag(flag: number | ShadedGeometryFlags): boolean;
/**
*
* @return {number}
*/
hash(): number;
/**
*
* @param {ShadedGeometry} other
* @returns {boolean}
*/
equals(other: ShadedGeometry): boolean;
/**
*
* @param {ShadedGeometry} other
*/
copy(other: ShadedGeometry): void;
/**
*
* @returns {ShadedGeometry}
*/
clone(): ShadedGeometry;
/**
* Current cached entity that this component is attached to
* @return {number}
*/
get entity(): number;
/**
* Global transform matrix
* 4x4 matrix
* @return {null|number[]}
*/
get transform(): number[];
/**
*
* @param {AABB3} destination
*/
getBoundingBox(destination: AABB3): void;
/**
*
* @param {THREE.BufferGeometry} geometry
* @param {THREE.Material} material
* @param {DrawMode} [draw_mode]
*/
from(geometry: THREE.BufferGeometry, material: THREE.Material, draw_mode?: DrawMode): void;
updateTransform(): void;
update_bounds(): void;
/**
*
* @param {SurfacePoint3} contact if found, contact is written here
* @param {ArrayLike<number>|number[]|Float32Array} ray 6-tuple: [origin_x, origin_y, origin_z, direction_x, direction_y, direction_z]
* @param {ArrayLike<number>|number[]|Float32Array} transform_matrix4 transform applied to the geometry
* @returns {boolean}
*/
query_raycast_nearest(contact: SurfacePoint3, ray: ArrayLike<number> | number[] | Float32Array, transform_matrix4: ArrayLike<number> | number[] | Float32Array): boolean;
}
export namespace ShadedGeometry {
let typeName: string;
let serializable: boolean;
}
import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
import { DrawMode } from "./DrawMode.js";
import { ShadedGeometryFlags } from "./ShadedGeometryFlags.js";
import { AABB3 } from "../../../../core/geom/3d/aabb/AABB3.js";
//# sourceMappingURL=ShadedGeometry.d.ts.map