46 lines
1.3 KiB
TypeScript
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;
|
|
}
|