This resource sounds great, but there is a lot of boilerplate code which I’m afraid will clutter up my codebase.
For instance, suppose I want to animate the ImageColor property and Position property of an ImageLabel, with a tool like spr, this will just amount to:
spr.target(DAMPING_RATIO, FREQUENCY, {
ImageColor = Color3.new(1, 0, 0),
Position = UDim2.fromScale(0.5, 0.5)
})
but with Epoxyish, on top of the existing boilerplate code, I’d still have to create an entirely new spring for each property I want to animate.
local ImageLabel = ...
local Value = Epoxyish.Value
local Latch = Epoxyish.Latch
local Spring = Epoxyish.Spring
local imageColorValue = Value(Color3.new(0, 0, 0))
local imageColorSpring = Spring {
Target = imageColorValue,
Speed = 5,
Dampening = 3
}
local positionValue = Value(UDim2.fromScale(-0.5, 0))
local positionSpring = Spring {
Target = positionValue ,
Speed = 5,
Dampening = 3
}
Latch(ImageLabel) {
Position = positionSpring,
ImageColor = imageColorSpring
}
The difference between both approaches are clearly visible. While the first one is easier to understand, read and modify, the latter looks more complicated, confusing, and well… ugly (yes you heard me right).
All in all, this is a great module whose API design might sound good on paper but in practice is a horrible one.