freeblox/packages/engine/src/gameobjects/environment.object.ts

46 lines
1.3 KiB
TypeScript

import { Color, Vector3 } from 'three';
import { GameObject, SerializedObject } from '../types/game-object';
import { environmentDefaults } from '../defaults/environment';
import { EditorProperty, EditorPropertyExclude } from '../decorators/property';
export class Environment extends GameObject {
public objectType = Environment.name;
@EditorPropertyExclude()
public name = 'Environment';
public virtual = true;
@EditorPropertyExclude()
public override visible!: boolean;
@EditorProperty({ type: Color })
sunColor = environmentDefaults.sunColor.clone();
@EditorProperty({ type: Vector3 })
sunPosition = environmentDefaults.sunPosition.clone();
@EditorProperty({ type: Number })
sunStrength = environmentDefaults.sunStrength;
@EditorProperty({ type: Color })
ambientColor = environmentDefaults.ambientColor.clone();
@EditorProperty({ type: Number })
ambientStrength = environmentDefaults.ambientStrength;
@EditorProperty({ type: Color })
clearColor = environmentDefaults.clearColor.clone();
override serialize() {
return super.serialize() as SerializedEnvironment;
}
}
export interface SerializedEnvironment extends SerializedObject {
sunColor: Color;
sunPosition: Vector3;
sunStrength: number;
ambientColor: Color;
ambientStrength: number;
clearColor: Color;
}