[+] Encapsulate cursor

This commit is contained in:
Hykilpikonna
2021-12-10 14:27:18 -05:00
parent 3d63da24dd
commit 9f59e2cabb
2 changed files with 21 additions and 5 deletions
+1 -3
View File
@@ -26,9 +26,7 @@ function init(): void
}))
lineSegments.computeLineDistances()
const cursor = objects.cursor = new Cursor(config.cursor, camera)
scene.add(cursor)
updatable.push(cursor)
updatable.push(new Cursor(scene, config.cursor, camera))
objects.box = lineSegments
scene.add(lineSegments)
+20 -2
View File
@@ -4,11 +4,29 @@ import {MeshLine, MeshLineMaterial} from 'meshline';
import IUpdatable from "@/animation/components/IUpdatable";
import {moused} from "@/animation/Trackers";
export default class Cursor extends THREE.Mesh implements IUpdatable
type CursorConfig = {radius: number, color: Color, width: number}
export default class Cursor implements IUpdatable
{
circle: CursorCircle
constructor(scene: THREE.Scene, conf: CursorConfig, camera: THREE.Camera)
{
this.circle = new CursorCircle(conf, camera)
scene.add(this.circle)
}
update(dt: number): void
{
this.circle.update(dt)
}
}
export class CursorCircle extends THREE.Mesh implements IUpdatable
{
camera: THREE.Camera
constructor(conf: {radius: number, color: Color, width: number}, camera: THREE.Camera)
constructor(conf: CursorConfig, camera: THREE.Camera)
{
// https://discourse.threejs.org/t/shift-vertices-of-circle-geometry-not-working/26664
const pts = new THREE.Path().absarc(0, 0, conf.radius, 0, Math.PI * 2, true).getPoints(90)