@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
93 lines (89 loc) • 4.16 kB
text/typescript
import {Object3D, Vector2} from 'three';
import {coreObjectClassFactory} from '../geometry/CoreObjectFactory';
export enum ParticlesAttribute {
PARTICLES_NODE_ID = 'particles_nodeId',
MATERIAL_NODE_ID = 'particles_materialNodeId',
DATA_TYPE = 'particles_dataType',
// AUTO_TEXTURE_SIZE = 'particles_autoTexturesSize',
// MAX_TEXTURE_SIZE = 'particles_maxTexturesSize',
// TEXTURE_SIZE = 'particles_texturesSize',
PRE_ROLL_FRAMES_COUNT = 'particles_preRollFramesCount',
}
export class CoreParticlesBaseAttribute {
protected static _setVector2(object: Object3D, attribName: ParticlesAttribute, value: Vector2) {
coreObjectClassFactory(object).addAttribute(object, attribName, value);
}
protected static _getVector2(object: Object3D, attribName: ParticlesAttribute, target: Vector2) {
coreObjectClassFactory(object).attribValue(object, attribName, 0, target);
}
protected static _setNumber(object: Object3D, attribName: ParticlesAttribute, value: number) {
coreObjectClassFactory(object).addAttribute(object, attribName, value);
}
protected static _setBoolean(object: Object3D, attribName: ParticlesAttribute, value: boolean) {
coreObjectClassFactory(object).addAttribute(object, attribName, value);
}
protected static _getNumber(object: Object3D, attribName: ParticlesAttribute, defaultValue: number): number {
const val = coreObjectClassFactory(object).attribValue(object, attribName, 0) as number | undefined;
if (val == null) {
return defaultValue;
}
return val;
}
protected static _getBoolean(object: Object3D, attribName: ParticlesAttribute, defaultValue: boolean): boolean {
const val = coreObjectClassFactory(object).attribValue(object, attribName, 0) as boolean | undefined;
if (val == null) {
return defaultValue;
}
return val;
}
// protected static _setString(object: Object3D, attribName: ParticlesAttribute, value: string) {
// CoreObject.addAttribute(object, attribName, value);
// }
// protected static _getString(object: Object3D, attribName: ParticlesAttribute): string | undefined {
// return CoreObject.attribValue(object, attribName, 0) as string | undefined;
// }
}
export class CoreParticlesAttribute extends CoreParticlesBaseAttribute {
static setParticlesNodeId(object: Object3D, value: number) {
this._setNumber(object, ParticlesAttribute.PARTICLES_NODE_ID, value);
}
static getMaterialNodeId(object: Object3D): number {
return this._getNumber(object, ParticlesAttribute.MATERIAL_NODE_ID, -1) as number;
}
static setMaterialNodeId(object: Object3D, value: number) {
this._setNumber(object, ParticlesAttribute.MATERIAL_NODE_ID, value);
}
static getParticlesNodeId(object: Object3D): number {
return this._getNumber(object, ParticlesAttribute.PARTICLES_NODE_ID, -1) as number;
}
static setDataType(object: Object3D, value: number) {
this._setNumber(object, ParticlesAttribute.DATA_TYPE, value);
}
static getDataType(object: Object3D) {
return this._getNumber(object, ParticlesAttribute.DATA_TYPE, 0);
}
// static setAutoTextureSize(object: Object3D, value: boolean) {
// this._setBoolean(object, ParticlesAttribute.AUTO_TEXTURE_SIZE, value);
// }
// static getAutoTextureSize(object: Object3D) {
// return this._getBoolean(object, ParticlesAttribute.AUTO_TEXTURE_SIZE, true);
// }
// static setMaxTextureSize(object: Object3D, value: Vector2) {
// this._setVector2(object, ParticlesAttribute.MAX_TEXTURE_SIZE, value);
// }
// static getMaxTextureSize(object: Object3D, target: Vector2) {
// return this._getVector2(object, ParticlesAttribute.MAX_TEXTURE_SIZE, target);
// }
// static setTextureSize(object: Object3D, value: Vector2) {
// this._setVector2(object, ParticlesAttribute.TEXTURE_SIZE, value);
// }
// static getTextureSize(object: Object3D, target: Vector2) {
// return this._getVector2(object, ParticlesAttribute.TEXTURE_SIZE, target);
// }
static setPreRollFramesCount(object: Object3D, value: number) {
this._setNumber(object, ParticlesAttribute.PRE_ROLL_FRAMES_COUNT, value);
}
static getPreRollFramesCount(object: Object3D) {
return this._getNumber(object, ParticlesAttribute.PRE_ROLL_FRAMES_COUNT, 0);
}
}