import { Object3D } from "three";

import { serializable } from "../engine/engine_serialization_decorator.js";
import { Behaviour } from "./Component.js";

/**
 * A LookAtConstraint is used by OrbitControls to make the camera look at a target.
 */
export class LookAtConstraint extends Behaviour {

    /**
     * When true the constraint is active.
     */
    @serializable()
    constraintActive: boolean = true;
    /**
     * When true the look at is locked to the position of the assigned sources.
     */
    @serializable()
    locked: boolean = false;
    /**
     * The sources to look at.
     */
    @serializable(Object3D)
    sources: Object3D[] = [];
}