lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
46 lines • 1.46 kB
JavaScript
import { circleDefaults, circleSchema } from "../../interface/ICircle";
import { PI2 } from "../../globals";
import { releaseCircleGeometry, requestCircleGeometry } from "../../pools/circleGeometryPool";
import { deg2Rad } from "@lincode/math";
import PooledPrimitve from "../core/PooledPrimitive";
import toFixed from "../../api/serializer/toFixed";
import { refreshPooledPrimitiveSystem } from "../../systems/configSystems/refreshPooledPrimitiveSystem";
const geometry = requestCircleGeometry([0.5, 32, 0, PI2]);
class Circle extends PooledPrimitve {
static componentName = "circle";
static defaults = circleDefaults;
static schema = circleSchema;
constructor() {
super(geometry, releaseCircleGeometry, requestCircleGeometry);
this.object3d.scale.z = Number.EPSILON;
}
$getParams() {
return [0.5, this.segments, 0, this.theta * deg2Rad];
}
_theta;
get theta() {
return this._theta ?? 360;
}
set theta(val) {
this._theta = toFixed(val);
refreshPooledPrimitiveSystem.add(this);
}
_segments;
get segments() {
return this._segments ?? 32;
}
set segments(val) {
this._segments = toFixed(val);
refreshPooledPrimitiveSystem.add(this);
}
get depth() {
return 0;
}
set depth(_) { }
get scaleZ() {
return 0;
}
set scaleZ(_) { }
}
export default Circle;
//# sourceMappingURL=Circle.js.map