avocado-old/packages/math/vector/mixin.coffee
2019-03-17 23:45:48 -05:00

33 lines
631 B
CoffeeScript

import {Mixin, Property} from '@avocado/composition'
import {Vector as Vector_} from '@avocado/math'
import {setterName} from '@avocado/string'
export VectorMixin = (
vector = 'vector', x = 'x', y = 'y', meta = {}
) -> (Superclass) ->
setX = setterName x
setY = setterName y
Base = Mixin(Superclass).with(
Property x, meta[x] ? {}
Property y, meta[y] ? {}
Property vector, Object.assign {
set: (vector) ->
this[setX] vector[0]
this[setY] vector[1]
return
get: -> [@[x](), @[y]()]
eq: (l, r) -> Vector_.equals l, r
}, meta
)
class Vector extends Base