adds hit testing for hovers
This commit is contained in:
parent
b8d3b35b07
commit
afa8f53dff
25 changed files with 1034 additions and 83 deletions
54
lib/code/index.ts
Normal file
54
lib/code/index.ts
Normal file
|
@ -0,0 +1,54 @@
|
|||
import { Shape } from "types"
|
||||
import * as vec from "utils/vec"
|
||||
import { getShapeUtils } from "lib/shapes"
|
||||
|
||||
export default class CodeShape<T extends Shape> {
|
||||
private _shape: T
|
||||
|
||||
constructor(props: T) {
|
||||
this._shape = props
|
||||
shapeMap.add(this)
|
||||
}
|
||||
|
||||
destroy() {
|
||||
shapeMap.delete(this)
|
||||
}
|
||||
|
||||
moveTo(point: number[]) {
|
||||
this.shape.point = point
|
||||
}
|
||||
|
||||
translate(delta: number[]) {
|
||||
this.shape.point = vec.add(this._shape.point, delta)
|
||||
}
|
||||
|
||||
rotate(rotation: number) {
|
||||
this.shape.rotation = rotation
|
||||
}
|
||||
|
||||
scale(scale: number) {
|
||||
return getShapeUtils(this.shape).scale(this.shape, scale)
|
||||
}
|
||||
|
||||
getBounds() {
|
||||
return getShapeUtils(this.shape).getBounds(this.shape)
|
||||
}
|
||||
|
||||
hitTest(point: number[]) {
|
||||
return getShapeUtils(this.shape).hitTest(this.shape, point)
|
||||
}
|
||||
|
||||
get shape() {
|
||||
return this._shape
|
||||
}
|
||||
|
||||
get point() {
|
||||
return [...this.shape.point]
|
||||
}
|
||||
|
||||
get rotation() {
|
||||
return this.shape.rotation
|
||||
}
|
||||
}
|
||||
|
||||
export const shapeMap = new Set<CodeShape<Shape>>([])
|
Loading…
Add table
Add a link
Reference in a new issue