Sfoglia il codice sorgente

Add constructor params and type for generators in plugin-geometry-generator

master
Palash Bansal 1 anno fa
parent
commit
c91754d1f6
Nessun account collegato all'indirizzo email del committer

+ 2
- 2
plugins/geometry-generator/package-lock.json Vedi File

@@ -1,12 +1,12 @@
{
"name": "@threepipe/plugin-geometry-generator",
"version": "0.3.2",
"version": "0.3.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@threepipe/plugin-geometry-generator",
"version": "0.3.2",
"version": "0.3.3",
"license": "Apache-2.0",
"dependencies": {
"threepipe": "file:./../../src/"

+ 2
- 2
plugins/geometry-generator/package.json Vedi File

@@ -1,7 +1,7 @@
{
"name": "@threepipe/plugin-geometry-generator",
"description": "Geometry generator plugin to create updatable parametric objects/geometries.",
"version": "0.3.2",
"version": "0.3.3",
"devDependencies": {
},
"dependencies": {
@@ -27,7 +27,7 @@
"replace": {
"dependencies": {},
"peerDependencies": {
"threepipe": "^0.0.39"
"threepipe": "^0.0.40"
}
}
},

+ 6
- 5
plugins/geometry-generator/src/AGeometryGenerator.ts Vedi File

@@ -23,7 +23,7 @@ export interface GeometryGenerator<T=any>{
createUiConfig?(geometry: IGeometry): UiObjectConfig[]
}

function updateAttribute<T extends BufferAttribute=Float32BufferAttribute>(geometry: BufferGeometry, attribute: string, itemSize: number, array: any[], cls?: Class<T>) {
function updateAttribute<T extends BufferAttribute=Float32BufferAttribute>(geometry: BufferGeometry, attribute: string, itemSize: number, array: number[], cls?: Class<T>) {
const attr = geometry.getAttribute(attribute) as T
const count = array.length / itemSize
if (attr && attr.count === count) {
@@ -35,7 +35,7 @@ function updateAttribute<T extends BufferAttribute=Float32BufferAttribute>(geome
return attr
}

function updateIndices(geometry: BufferGeometry, indices: any[]) {
function updateIndices(geometry: BufferGeometry, indices: number[]) {
const index = geometry.index
if (index && index.count === indices.length) {
index.set(indices)
@@ -83,16 +83,17 @@ export abstract class AGeometryGenerator<Tp extends object=any> implements Geome

generate(g?: IGeometry, parameters: Partial<Tp> = {}): IGeometry|BufferGeometry2 {
const geometry: IGeometry = g ?? new BufferGeometry2()
if (!geometry.userData.generationParams) geometry.userData.generationParams = {type: this.type}
geometry.userData.generationParams.type = this.type
if ((parameters as any).type) {
if ((parameters as any).type && (parameters as any).type !== this.type) {
console.error('Cannot change type of generated geometry here, use the plugin instead')
return geometry
}
if (!geometry.userData.generationParams) geometry.userData.generationParams = {type: this.type}
geometry.userData.generationParams.type = this.type
const params = {
...this.defaultParams,
...geometry.userData.generationParams,
...parameters,
type: this.type,
} as Tp

const {indices, vertices, normals, uvs, groups} = this._generateData(params)

+ 6
- 1
plugins/geometry-generator/src/primitives/BoxGeometryGenerator.ts Vedi File

@@ -13,7 +13,12 @@ export interface BoxGeometryGeneratorParams {

export class BoxGeometryGenerator extends AGeometryGenerator<BoxGeometryGeneratorParams> {

defaultParams = {
constructor(type = 'box', defaultParams?: BoxGeometryGeneratorParams) {
super(type)
if (defaultParams) Object.assign(this.defaultParams, defaultParams)
}

defaultParams: BoxGeometryGeneratorParams = {
width: 1,
height: 1,
depth: 1,

+ 6
- 1
plugins/geometry-generator/src/primitives/CircleGeometryGenerator.ts Vedi File

@@ -11,7 +11,12 @@ export interface CircleGeometryGeneratorParams {

export class CircleGeometryGenerator extends AGeometryGenerator<CircleGeometryGeneratorParams> {

defaultParams = {
constructor(type = 'circle', defaultParams?: CircleGeometryGeneratorParams) {
super(type)
if (defaultParams) Object.assign(this.defaultParams, defaultParams)
}

defaultParams: CircleGeometryGeneratorParams = {
radius: 1,
segments: 32,
thetaStart: 0,

+ 6
- 1
plugins/geometry-generator/src/primitives/CylinderGeometryGenerator.ts Vedi File

@@ -15,7 +15,12 @@ export interface CylinderGeometryGeneratorParams {

export class CylinderGeometryGenerator extends AGeometryGenerator<CylinderGeometryGeneratorParams> {

defaultParams = {
constructor(type = 'cylinder', defaultParams?: CylinderGeometryGeneratorParams) {
super(type)
if (defaultParams) Object.assign(this.defaultParams, defaultParams)
}

defaultParams: CylinderGeometryGeneratorParams = {
radiusTop: 1,
radiusBottom: 1,
height: 1,

+ 6
- 1
plugins/geometry-generator/src/primitives/PlaneGeometryGenerator.ts Vedi File

@@ -10,7 +10,12 @@ export interface PlaneGeometryGeneratorParams {

export class PlaneGeometryGenerator extends AGeometryGenerator<PlaneGeometryGeneratorParams> {

defaultParams = {
constructor(type = 'plane', defaultParams?: PlaneGeometryGeneratorParams) {
super(type)
if (defaultParams) Object.assign(this.defaultParams, defaultParams)
}

defaultParams: PlaneGeometryGeneratorParams = {
width: 1,
height: 1,
widthSegments: 2,

+ 6
- 1
plugins/geometry-generator/src/primitives/SphereGeometryGenerator.ts Vedi File

@@ -14,7 +14,12 @@ export interface SphereGeometryGeneratorParams {

export class SphereGeometryGenerator extends AGeometryGenerator<SphereGeometryGeneratorParams> {

defaultParams = {
constructor(type = 'sphere', defaultParams?: SphereGeometryGeneratorParams) {
super(type)
if (defaultParams) Object.assign(this.defaultParams, defaultParams)
}

defaultParams: SphereGeometryGeneratorParams = {
radius: 1,
widthSegments: 32,
heightSegments: 16,

+ 6
- 1
plugins/geometry-generator/src/primitives/TorusGeometryGenerator.ts Vedi File

@@ -12,7 +12,12 @@ export interface TorusGeometryGeneratorParams {

export class TorusGeometryGenerator extends AGeometryGenerator<TorusGeometryGeneratorParams> {

defaultParams = {
constructor(type = 'torus', defaultParams?: TorusGeometryGeneratorParams) {
super(type)
if (defaultParams) Object.assign(this.defaultParams, defaultParams)
}

defaultParams: TorusGeometryGeneratorParams = {
radius: 1,
tube: 0.4,
radialSegments: 12,

Loading…
Annulla
Salva