control/ruler/Ruler.tstypescript
import { Control } from "../Control";
import type { IControlParams } from "../Control";
import { RulerScene } from "./RulerScene";

export interface IRulerParams extends IControlParams {
    ignoreTerrain?: boolean;
}

export class Ruler extends Control {
    protected _rulerScene: RulerScene;

    constructor(options: IRulerParams = {}) {
        super(options);

        this._rulerScene = new RulerScene({
            name: `rulerScene:${this.__id}`,
            ignoreTerrain: options.ignoreTerrain
        });
    }

    public set ignoreTerrain(v: boolean) {
        this._rulerScene.ignoreTerrain = v;
    }

    public override oninit() {
        this._rulerScene.bindPlanet(this.planet!);
    }

    public override onactivate() {
        this.renderer && this.renderer.addScene(this._rulerScene);
    }

    public override ondeactivate() {
        this.renderer && this.renderer.removeNode(this._rulerScene);
    }
}