Skip to content

Commit 8b9df06

Browse files
committed
Switched demo over to ua Animations
1 parent 1e1f188 commit 8b9df06

File tree

9 files changed

+109
-155
lines changed

9 files changed

+109
-155
lines changed

cmd/cube/main.go

Lines changed: 15 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/axe/axe-go/pkg/impl/opengl"
1717
"github.com/axe/axe-go/pkg/input"
1818
"github.com/axe/axe-go/pkg/ui"
19+
"github.com/axe/axe-go/pkg/ui/ua"
1920
"github.com/axe/axe-go/pkg/util"
2021
)
2122

@@ -168,7 +169,7 @@ func main() {
168169
})
169170

170171
// Global Animations
171-
userInterface.Theme.Animations.ForEvent.Set(ui.AnimationEventEnabled, WiggleAnimation)
172+
userInterface.Theme.Animations.ForEvent.Set(ui.AnimationEventEnabled, ua.Wiggle)
172173

173174
// Cursors
174175
cursors := ui.TileGrid(10, 8, 56, 56, 559, 449, 0, 0, "cursors")
@@ -306,8 +307,8 @@ func main() {
306307
Easing: ease.TinyBounce,
307308
Save: true,
308309
Frames: []ui.BasicAnimationFrame{
309-
{Rotate: 360, Time: 0, Origin: ui.NewAmountPointUnit(0.5, 0.5, ui.UnitParent)},
310-
{Rotate: 0, Time: 1, Origin: ui.NewAmountPointUnit(0.5, 0.5, ui.UnitParent)},
310+
{Rotate: 360, Time: 0, Origin: ui.NewAmountPointParent(0.5, 0.5)},
311+
{Rotate: 0, Time: 1, Origin: ui.NewAmountPointParent(0.5, 0.5)},
311312
},
312313
})
313314
}),
@@ -548,8 +549,8 @@ func main() {
548549
newButton(ui.Placement{}, "Hide & Show Animation", false, nil).Edit(func(b *ui.Base) {
549550
b.Colors.Set(BackgroundColor, ui.ColorOrange)
550551
b.Colors.Set(TextColor, ui.ColorBlack)
551-
b.Animations.ForEvent.Set(ui.AnimationEventShow, FadeInAnimation)
552-
b.Animations.ForEvent.Set(ui.AnimationEventHide, FadeOutAnimation)
552+
b.Animations.ForEvent.Set(ui.AnimationEventShow, ua.FadeIn)
553+
b.Animations.ForEvent.Set(ui.AnimationEventHide, ua.FadeOut)
553554
b.Events.OnPointer.Add(func(ev *ui.PointerEvent) {
554555
if !ev.Capture && ev.Type == ui.PointerEventDown {
555556
b.Hide()
@@ -568,7 +569,7 @@ func main() {
568569
}, false)
569570
}),
570571
newButton(ui.Placement{}, "Remove Animating", false, nil).Edit(func(b *ui.Base) {
571-
b.Animations.ForEvent.Set(ui.AnimationEventRemove, ExplodeAnimation)
572+
b.Animations.ForEvent.Set(ui.AnimationEventRemove, ua.Explode.WithDuration(0.2))
572573
b.Events.OnPointer.Add(func(ev *ui.PointerEvent) {
573574
if !ev.Capture && ev.Type == ui.PointerEventDown {
574575
b.Remove()
@@ -704,102 +705,6 @@ const (
704705
TextColor
705706
)
706707

707-
// Animations
708-
709-
var OriginCenter = ui.NewAmountPointUnit(0.5, 0.5, ui.UnitParent)
710-
711-
var WiggleAnimation = ui.BasicAnimation{
712-
Save: true, // save on component so the pointer is inverse transformed against it
713-
Duration: 1.0,
714-
Frames: []ui.BasicAnimationFrame{
715-
{Time: 0, Rotate: 0, Origin: OriginCenter},
716-
{Time: .125, Rotate: -45, Origin: OriginCenter},
717-
{Time: .375, Rotate: 45, Origin: OriginCenter},
718-
{Time: .583, Rotate: -30, Origin: OriginCenter},
719-
{Time: .75, Rotate: 30, Origin: OriginCenter},
720-
{Time: .875, Rotate: -15, Origin: OriginCenter},
721-
{Time: .9583, Rotate: 15, Origin: OriginCenter},
722-
{Time: 1, Rotate: 0, Origin: OriginCenter},
723-
},
724-
}
725-
726-
var RevealAnimation = ui.BasicAnimation{
727-
Duration: 1.0,
728-
Frames: []ui.BasicAnimationFrame{
729-
{Time: 0, Scale: &ui.Coord{X: 1}, Origin: OriginCenter},
730-
{Time: 1, Scale: &ui.Coord{X: 1, Y: 1}, Origin: OriginCenter},
731-
},
732-
}
733-
734-
var FadeInAnimation = ui.BasicAnimation{
735-
Save: true,
736-
Duration: 0.5,
737-
Frames: []ui.BasicAnimationFrame{
738-
{Time: 0, Transparency: 1},
739-
{Time: 1, Transparency: 0},
740-
},
741-
}
742-
743-
var FadeOutAnimation = ui.BasicAnimation{
744-
Save: true,
745-
Duration: 0.5,
746-
Frames: []ui.BasicAnimationFrame{
747-
{Time: 0, Transparency: 0},
748-
{Time: 1, Transparency: 1},
749-
},
750-
}
751-
752-
var FadeOutSlideUpAnimation = ui.BasicAnimation{
753-
Save: true,
754-
Duration: 0.7,
755-
Frames: []ui.BasicAnimationFrame{
756-
{Time: 0, Origin: OriginCenter},
757-
{Time: 1, Translate: ui.AmountPoint{Y: ui.Amount{Value: -100}}, Origin: OriginCenter, Transparency: 1},
758-
},
759-
}
760-
761-
var FadeInSlideDownAnimation = ui.BasicAnimation{
762-
Save: true,
763-
Duration: 0.7,
764-
Frames: []ui.BasicAnimationFrame{
765-
{Time: 0, Transparency: 1, Translate: ui.AmountPoint{Y: ui.Amount{Value: -100}}, Origin: OriginCenter},
766-
{Time: 1, Origin: OriginCenter},
767-
},
768-
}
769-
770-
var FadeInSlideRightAnimation = ui.BasicAnimation{
771-
Save: true,
772-
Duration: 0.7,
773-
Frames: []ui.BasicAnimationFrame{
774-
{Time: 0, Translate: ui.AmountPoint{X: ui.Amount{Value: -100}}, Origin: OriginCenter, Transparency: 1},
775-
{Time: 1, Origin: OriginCenter},
776-
},
777-
}
778-
779-
var ExplodeAnimation = ui.BasicAnimation{
780-
Duration: 0.2,
781-
Frames: []ui.BasicAnimationFrame{
782-
{Time: 0, Transparency: 0, Scale: &ui.Coord{X: 1, Y: 1}, Origin: OriginCenter},
783-
{Time: 1, Transparency: 1, Scale: &ui.Coord{X: 4, Y: 4}, Origin: OriginCenter},
784-
},
785-
}
786-
787-
var CollapseOpenAnimation = ui.BasicAnimation{
788-
Duration: 0.3,
789-
Frames: []ui.BasicAnimationFrame{
790-
{Time: 0, Scale: &ui.Coord{X: 1, Y: 0}, Transparency: 1},
791-
{Time: 1, Scale: &ui.Coord{X: 1, Y: 1}, Transparency: 0},
792-
},
793-
}
794-
795-
var CollapseCloseAnimation = ui.BasicAnimation{
796-
Duration: 0.3,
797-
Frames: []ui.BasicAnimationFrame{
798-
{Time: 0, Scale: &ui.Coord{X: 1, Y: 1}, Transparency: 0},
799-
{Time: 1, Scale: &ui.Coord{X: 1, Y: 0}, Transparency: 1},
800-
},
801-
}
802-
803708
// Temporary component generators
804709

805710
func newScrollingSection(sensitivity float32, children ...*ui.Base) *ui.Base {
@@ -859,8 +764,8 @@ func newCollapsibleSection(text string, children ...*ui.Base) *ui.Base {
859764
section := &ui.Base{
860765
Animations: &ui.Animations{
861766
ForEvent: ds.NewEnumMap(map[ui.AnimationEvent]ui.AnimationFactory{
862-
ui.AnimationEventShow: CollapseOpenAnimation,
863-
ui.AnimationEventHide: CollapseCloseAnimation,
767+
ui.AnimationEventShow: ua.RevealDown.Merge(ua.FadeIn).WithDuration(0.3),
768+
ui.AnimationEventHide: ua.RevealDown.Merge(ua.FadeIn).Reverse().WithDuration(0.3),
864769
}),
865770
},
866771
Children: children,
@@ -942,7 +847,7 @@ func newDraggable() *ui.Base {
942847
var buttonTemplate = &ui.Template{
943848
Animations: &ui.Animations{
944849
ForEvent: ds.NewEnumMap(map[ui.AnimationEvent]ui.AnimationFactory{
945-
ui.AnimationEventShow: FadeInAnimation,
850+
ui.AnimationEventShow: ua.FadeIn,
946851
}),
947852
},
948853
Colors: ui.NewColors(map[ui.ThemeColor]ui.Colorable{
@@ -1039,8 +944,8 @@ func newTooltip(text string, delayTime float32, hideTime float32, around *ui.Bas
1039944
},
1040945
Animations: &ui.Animations{
1041946
ForEvent: ds.NewEnumMap(map[ui.AnimationEvent]ui.AnimationFactory{
1042-
ui.AnimationEventShow: FadeInAnimation,
1043-
ui.AnimationEventRemove: FadeOutAnimation,
947+
ui.AnimationEventShow: ua.FadeIn,
948+
ui.AnimationEventRemove: ua.FadeOut,
1044949
}),
1045950
},
1046951
Layers: []ui.Layer{{
@@ -1309,12 +1214,12 @@ func newWindow(title string, placement ui.Placement) *ui.Base {
13091214
Focusable: true,
13101215
Animations: &ui.Animations{
13111216
ForEvent: ds.NewEnumMap(map[ui.AnimationEvent]ui.AnimationFactory{
1312-
ui.AnimationEventShow: FadeInSlideDownAnimation,
1217+
ui.AnimationEventShow: ua.FadeInDown,
13131218
}),
13141219
Named: id.NewDenseKeyMap[ui.AnimationFactory, uint16, uint8](
13151220
id.WithStringMap(map[string]ui.AnimationFactory{
1316-
"hide": FadeOutSlideUpAnimation,
1317-
"show": FadeInSlideRightAnimation,
1221+
"hide": ua.FadeOutUp,
1222+
"show": ua.FadeInDown,
13181223
}),
13191224
),
13201225
},

pkg/ease/easing.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,10 @@ type Subset struct {
183183
var _ Easing = Subset{}
184184

185185
func NewSubset(easing Easing, start, end float32) Subset {
186+
if easing == nil {
187+
return Subset{}
188+
}
189+
186190
return Subset{
187191
Easing: easing,
188192
Start: start,

pkg/ui/animation.go

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -259,20 +259,20 @@ const (
259259
BasicAnimationPropScale BasicAnimationProp = 1 << iota
260260
BasicAnimationPropOrigin
261261
BasicAnimationPropTranslate
262-
BasicAnimationPropRotation
262+
BasicAnimationPropRotate
263263
BasicAnimationPropColor
264264
BasicAnimationPropTransparency
265265
BasicAnimationPropEasing
266266
)
267267

268268
type BasicAnimation struct {
269-
Duration float32
270-
Easing ease.Easing
271-
Save bool
272-
SaveSkipColor bool
273-
SaveSkipTransparent bool
274-
SaveSkipTransform bool
275-
Frames []BasicAnimationFrame
269+
Duration float32
270+
Easing ease.Easing
271+
Save bool
272+
SaveSkipColor bool
273+
SaveSkipTransparency bool
274+
SaveSkipTransform bool
275+
Frames []BasicAnimationFrame
276276
}
277277

278278
func (a BasicAnimation) GetAnimation(b *Base) Animation {
@@ -293,7 +293,7 @@ func (a BasicAnimation) WithSave(save, skipColor, skipTransparent, skipTransform
293293
copy := a
294294
copy.Save = save
295295
copy.SaveSkipColor = skipColor
296-
copy.SaveSkipTransparent = skipTransparent
296+
copy.SaveSkipTransparency = skipTransparent
297297
copy.SaveSkipTransform = skipTransform
298298
return copy
299299
}
@@ -326,7 +326,7 @@ func (a BasicAnimation) PostProcess(base *Base, animationTime float32, ctx *Rend
326326
if !a.SaveSkipColor {
327327
base.SetColor(inter.Color)
328328
}
329-
if !a.SaveSkipColor {
329+
if !a.SaveSkipTransparency {
330330
base.SetTransparency(inter.Transparency)
331331
}
332332
if !a.SaveSkipTransform {
@@ -376,7 +376,7 @@ func (a BasicAnimation) GetProps() BasicAnimationProp {
376376
props |= BasicAnimationPropEasing
377377
}
378378
if frame.Rotate != 0 {
379-
props |= BasicAnimationPropRotation
379+
props |= BasicAnimationPropRotate
380380
}
381381
if !frame.Origin.IsZero() {
382382
props |= BasicAnimationPropOrigin
@@ -417,7 +417,7 @@ func (a BasicAnimation) Only(props BasicAnimationProp) BasicAnimation {
417417
if props&BasicAnimationPropOrigin == 0 {
418418
frame.Origin = AmountPoint{}
419419
}
420-
if props&BasicAnimationPropRotation == 0 {
420+
if props&BasicAnimationPropRotate == 0 {
421421
frame.Rotate = 0
422422
}
423423
if props&BasicAnimationPropScale == 0 {
@@ -459,24 +459,25 @@ func (a BasicAnimation) Merge(b BasicAnimation) BasicAnimation {
459459
bFrame := b.PreLerpForTime(time)
460460

461461
frames[index] = BasicAnimationFrame{
462+
Time: time,
462463
Color: util.If(bProps&BasicAnimationPropColor == 0, aFrame.Color, bFrame.Color),
463464
Easing: util.If(bProps&BasicAnimationPropEasing == 0, aFrame.Easing, bFrame.Easing),
464465
Origin: util.If(bProps&BasicAnimationPropOrigin == 0, aFrame.Origin, bFrame.Origin),
465-
Rotate: util.If(bProps&BasicAnimationPropRotation == 0, aFrame.Rotate, bFrame.Rotate),
466+
Rotate: util.If(bProps&BasicAnimationPropRotate == 0, aFrame.Rotate, bFrame.Rotate),
466467
Scale: util.If(bProps&BasicAnimationPropScale == 0, aFrame.Scale, bFrame.Scale),
467468
Translate: util.If(bProps&BasicAnimationPropTranslate == 0, aFrame.Translate, bFrame.Translate),
468469
Transparency: util.If(bProps&BasicAnimationPropTransparency == 0, aFrame.Transparency, bFrame.Transparency),
469470
}
470471
}
471472

472473
return BasicAnimation{
473-
Duration: util.Max(a.Duration, b.Duration),
474-
Easing: a.Easing,
475-
Save: a.Save || b.Save,
476-
SaveSkipColor: a.SaveSkipColor && b.SaveSkipColor,
477-
SaveSkipTransparent: a.SaveSkipTransparent && b.SaveSkipTransparent,
478-
SaveSkipTransform: a.SaveSkipTransform && b.SaveSkipTransform,
479-
Frames: frames,
474+
Duration: util.Max(a.Duration, b.Duration),
475+
Easing: a.Easing,
476+
Save: a.Save || b.Save,
477+
SaveSkipColor: a.SaveSkipColor && b.SaveSkipColor,
478+
SaveSkipTransparency: a.SaveSkipTransparency && b.SaveSkipTransparency,
479+
SaveSkipTransform: a.SaveSkipTransform && b.SaveSkipTransform,
480+
Frames: frames,
480481
}
481482
}
482483

pkg/ui/ua/anim8js.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ var (
66

77
// Wiggle
88
Wiggle = AnimationGen([]ui.BasicAnimationFrame{
9-
{Time: 0.000, Origin: originCenter, Rotate: 0},
10-
{Time: 0.125, Origin: originCenter, Rotate: -45},
11-
{Time: 0.375, Origin: originCenter, Rotate: 45},
12-
{Time: 0.583, Origin: originCenter, Rotate: -30},
13-
{Time: 0.750, Origin: originCenter, Rotate: 30},
14-
{Time: 0.875, Origin: originCenter, Rotate: -15},
15-
{Time: 0.958, Origin: originCenter, Rotate: 15},
16-
{Time: 1.000, Origin: originCenter, Rotate: 0},
9+
{Time: 0.000, Origin: OriginCenter, Rotate: 0},
10+
{Time: 0.125, Origin: OriginCenter, Rotate: -45},
11+
{Time: 0.375, Origin: OriginCenter, Rotate: 45},
12+
{Time: 0.583, Origin: OriginCenter, Rotate: -30},
13+
{Time: 0.750, Origin: OriginCenter, Rotate: 30},
14+
{Time: 0.875, Origin: OriginCenter, Rotate: -15},
15+
{Time: 0.958, Origin: OriginCenter, Rotate: 15},
16+
{Time: 1.000, Origin: OriginCenter, Rotate: 0},
1717
})
1818

1919
/* Template

pkg/ui/ua/animatecss.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,13 @@ var (
177177
}
178178

179179
// FadeIn
180-
FadeInDown = TranslateGen(ui.NewAmountPointParent(0, -100), ui.AmountPoint{}).Merge(FadeIn)
180+
FadeInDown = TranslateGen(ui.NewAmountPointParent(0, -1), ui.AmountPoint{}).Merge(FadeIn)
181181
FadeInDownBig = TranslateGen(ui.NewAmountPoint(0, -2000), ui.AmountPoint{}).Merge(FadeIn)
182-
FadeInLeft = TranslateGen(ui.NewAmountPointParent(-100, 0), ui.AmountPoint{}).Merge(FadeIn)
182+
FadeInLeft = TranslateGen(ui.NewAmountPointParent(-1, 0), ui.AmountPoint{}).Merge(FadeIn)
183183
FadeInLeftBig = TranslateGen(ui.NewAmountPoint(-2000, 0), ui.AmountPoint{}).Merge(FadeIn)
184-
FadeInRight = TranslateGen(ui.NewAmountPointParent(100, 0), ui.AmountPoint{}).Merge(FadeIn)
184+
FadeInRight = TranslateGen(ui.NewAmountPointParent(1, 0), ui.AmountPoint{}).Merge(FadeIn)
185185
FadeInRightBig = TranslateGen(ui.NewAmountPoint(2000, 0), ui.AmountPoint{}).Merge(FadeIn)
186-
FadeInUp = TranslateGen(ui.NewAmountPointParent(0, 100), ui.AmountPoint{}).Merge(FadeIn)
186+
FadeInUp = TranslateGen(ui.NewAmountPointParent(0, 1), ui.AmountPoint{}).Merge(FadeIn)
187187
FadeInUpBig = TranslateGen(ui.NewAmountPoint(0, 2000), ui.AmountPoint{}).Merge(FadeIn)
188188

189189
// FadeOut
@@ -253,9 +253,9 @@ var (
253253
// ZoomOut
254254
ZoomOutGen = func(bigX, bigY, smallX, smallY float32) ui.BasicAnimation {
255255
return AnimationGen([]ui.BasicAnimationFrame{
256-
{Time: 0.00, Scale: &ui.Coord{X: 1, Y: 1}, Origin: originCenter},
256+
{Time: 0.00, Scale: &ui.Coord{X: 1, Y: 1}, Origin: OriginCenter},
257257
{Time: 0.40, Scale: &ui.Coord{X: 0.475, Y: 0.475}, Easing: zoomBezier1, Translate: ui.NewAmountPoint(smallX, smallY), Origin: ui.NewAmountPointParent(0.5, 0.75)},
258-
{Time: 1.00, Scale: &ui.Coord{X: 0.1, Y: 0.1}, Transparency: 1, Translate: ui.NewAmountPoint(bigX, bigY), Origin: originCenterBottom},
258+
{Time: 1.00, Scale: &ui.Coord{X: 0.1, Y: 0.1}, Transparency: 1, Translate: ui.NewAmountPoint(bigX, bigY), Origin: OriginBottom},
259259
})
260260
}
261261
ZoomOut = AnimationGen([]ui.BasicAnimationFrame{
@@ -268,14 +268,14 @@ var (
268268
ZoomOutUp = ZoomOutGen(0, -2000, 0, 60)
269269

270270
// Slide
271-
SlideInDown = TranslateGen(ui.NewAmountPointParent(0, -100), ui.AmountPoint{})
272-
SlideInLeft = TranslateGen(ui.NewAmountPointParent(-100, 0), ui.AmountPoint{})
273-
SlideInRight = TranslateGen(ui.NewAmountPointParent(100, 0), ui.AmountPoint{})
274-
SlideInUp = TranslateGen(ui.NewAmountPointParent(0, 100), ui.AmountPoint{})
275-
SlideOutDown = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(0, 100)).Merge(FadeOutEnd)
276-
SlideOutLeft = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(-100, 0)).Merge(FadeOutEnd)
277-
SlideOutRight = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(100, 0)).Merge(FadeOutEnd)
278-
SlideOutUp = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(0, -100)).Merge(FadeOutEnd)
271+
SlideInDown = TranslateGen(ui.NewAmountPointParent(0, -1), ui.AmountPoint{})
272+
SlideInLeft = TranslateGen(ui.NewAmountPointParent(-1, 0), ui.AmountPoint{})
273+
SlideInRight = TranslateGen(ui.NewAmountPointParent(1, 0), ui.AmountPoint{})
274+
SlideInUp = TranslateGen(ui.NewAmountPointParent(0, 1), ui.AmountPoint{})
275+
SlideOutDown = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(0, 1)).Merge(FadeOutEnd)
276+
SlideOutLeft = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(-1, 0)).Merge(FadeOutEnd)
277+
SlideOutRight = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(1, 0)).Merge(FadeOutEnd)
278+
SlideOutUp = TranslateGen(ui.AmountPoint{}, ui.NewAmountPointParent(0, -1)).Merge(FadeOutEnd)
279279

280280
/* Template
281281
TemplateGen = func() ui.BasicAnimation {

0 commit comments

Comments
 (0)