48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import {Node3D} from "./Node3D";
|
|
import {Vector3D} from "./Vector3D";
|
|
|
|
export class GeometryItem extends Node3D {
|
|
private _id: string;
|
|
private _radius: number;
|
|
private _normal: Vector3D;
|
|
private _isDoubleSided: boolean;
|
|
private _isDynamic: boolean;
|
|
|
|
constructor(k: any, _arg_2: boolean = false) {
|
|
super(parseFloat(k.x), parseFloat(k.y), parseFloat(k.z));
|
|
|
|
this._id = k.id;
|
|
this._radius = parseFloat(k.radius);
|
|
this._normal = new Vector3D(parseFloat(k.nx), parseFloat(k.ny), parseFloat(k.nz));
|
|
this._isDoubleSided = k.double || false;
|
|
this._isDynamic = _arg_2;
|
|
}
|
|
|
|
public getDistance(k: Vector3D): number {
|
|
const _local_2 = Math.abs(k.z - this.transformedLocation.z - this._radius);
|
|
const _local_3 = Math.abs(k.z - this.transformedLocation.z + this._radius);
|
|
|
|
return Math.min(_local_2, _local_3);
|
|
}
|
|
|
|
public get id(): string {
|
|
return this._id;
|
|
}
|
|
|
|
public get normal(): Vector3D {
|
|
return this._normal;
|
|
}
|
|
|
|
public get isDoubleSided(): boolean {
|
|
return this._isDoubleSided;
|
|
}
|
|
|
|
public override toString(): string {
|
|
return this._id + ": " + this.location + " - " + this.transformedLocation;
|
|
}
|
|
|
|
public get isDynamic(): boolean {
|
|
return this._isDynamic;
|
|
}
|
|
}
|