0.7.0 • Published 9 months ago
@vis-three/module-solid-object v0.7.0
@vis-three/module-solid-object
最新版本
license
模块信息
这是一个虚拟公共模块,是其他实体物体模块的基础模块,没有实际的模块对象,只提供相关方法属性。
:::tip
实体物体也就是这个物体既有geometry
又有material
。
:::
模块规则
SolidObjectRule
此规则目前仅作为ts
的声明拓展使用。
import { Rule } from "@vis-three/middleware";
import { SolidObject3D, SolidObjectCompiler } from "./SolidObjectCompiler";
import { SolidObjectConfig } from "./SolidObjectConfig";
export type SolidObjectRule<
E extends SolidObjectCompiler<C, O>,
C extends SolidObjectConfig,
O extends SolidObject3D
> = Rule<E>;
使用
import { ProxyNotice } from "@vis-three/middleware";
import { ObjectRule } from "@vis-three/module-object";
import { SolidObjectRule } from "@vis-three/module-solid-object";
import { Mesh } from "three";
import { MeshCompiler } from "./MeshCompiler";
import { MeshConfig } from "./MeshConfig";
export type MeshRule = SolidObjectRule<MeshCompiler, MeshConfig, Mesh>;
export const MeshRule: MeshRule = function (
notice: ProxyNotice,
compiler: MeshCompiler
) {
ObjectRule(notice, compiler);
};
模块编译器
export abstract class SolidObjectCompiler<
C extends SolidObjectConfig,
O extends SolidObject3D
> extends ObjectCompiler<C, O> {
constructor() {
super();
}
}
使用
import { SolidObjectCompiler } from "@vis-three/module-solid-object";
import { Mesh } from "three";
import { MeshConfig } from "./MeshConfig";
export class MeshCompiler extends SolidObjectCompiler<MeshConfig, Mesh> {
constructor() {
super();
}
}
模块处理器
实体物体命令链-SolidObjectCommands
Ƭ SolidObjectCommands<C
, T
>: ObjectCommands
<C
, T
>
作为公共的实体物体命令链模块使用,也可以使用其中的部分命令。
类型参数
Name | Type |
---|---|
C | extends SolidObjectConfig |
T | extends SolidObject3D |
预览
export const solidObjectCommands: SolidObjectCommands<
SolidObjectConfig,
SolidObject3D
> = {
add: {
material: materialHandler,
...(<SolidObjectCommands<SolidObjectConfig, SolidObject3D>>(
objectCommands.add
)),
},
set: {
geometry: geometryHandler,
material: materialHandler,
...(<SolidObjectCommands<SolidObjectConfig, SolidObject3D>>(
objectCommands.set
)),
},
delete: {
material: materialHandler,
...(<SolidObjectCommands<SolidObjectConfig, SolidObject3D>>(
objectCommands.delete
)),
},
};
使用
import { defineProcessor, EngineSupport } from "@vis-three/middleware";
import {
solidObjectCommands,
SolidObjectCommands,
solidObjectCreate,
solidObjectDispose,
} from "@vis-three/module-solid-object";
import { Mesh } from "three";
import { MeshCompiler } from "../MeshCompiler";
import { getMeshConfig, MeshConfig } from "../MeshConfig";
export default defineProcessor<MeshConfig, Mesh, EngineSupport, MeshCompiler>({
type: "Mesh",
config: getMeshConfig,
commands: <SolidObjectCommands<MeshConfig, Mesh>>(
(<unknown>solidObjectCommands)
),
create(config: MeshConfig, engine: EngineSupport): Mesh {
return solidObjectCreate(new Mesh(), config, {}, engine);
},
dispose: solidObjectDispose,
});
geometryHandler
▸ geometryHandler<C
, O
>(«destructured»
): void
类型参数
Name | Type |
---|---|
C | extends SolidObjectConfig |
O | extends SolidObject3D <O > |
参数
Name | Type |
---|---|
«destructured» | ProcessParams <C , O , EngineSupport , any > |
Returns
void
materialHandler
▸ materialHandler<C
, O
>(«destructured»
): void
类型参数
Name | Type |
---|---|
C | extends SolidObjectConfig |
O | extends SolidObject3D <O > |
参数
Name | Type |
---|---|
«destructured» | ProcessParams <C , O , EngineSupport , any > |
Returns
void
solidObjectCreate
▸ solidObjectCreate<C
, O
>(object
, config
, filter
, engine
): O
类型参数
Name | Type |
---|---|
C | extends SolidObjectConfig |
O | extends SolidObject3D <O > |
参数
Name | Type |
---|---|
object | O |
config | C |
filter | DeepUnion <DeepPartial <DeepRecord <C , boolean >>, boolean > |
engine | EngineSupport |
Returns
O
solidObjectDispose
▸ solidObjectDispose<O
>(target
): void
类型参数
Name | Type |
---|---|
O | extends SolidObject3D <O > |
参数
Name | Type |
---|---|
target | O |
Returns
void
提供配置
实体物体-SolidObject
- 类型:
SolidObject
- 配置类型:
export interface SolidObjectConfig extends ObjectConfig {
material: string | string[];
geometry: string;
}
- 默认配置:
{
material: "",
geometry: "",
}
:::tip 此配置供其他物体模块使用。 :::