// ResumeTracking moves the camera back to the Entity being tracked and resumes // camera position updates func (self *TopDownCamera) ResumeTracking() { aboveEntity := components.GetTransform(self.trackingEntity).Position aboveEntity.Y += self.trackingHeight self.camera.AddComponent( components.NewPositionAnimation( aboveEntity, 0.5, func() { self.currentlyTracking = true }, ), ) }
func Test_Update_RemovesAFinishedOneTimeAnimation(t *testing.T) { behavior, entityDb := getTestAnimation() entity := core.NewEntity() entity.AddComponent( components.NewPositionAnimation(math3d.Vector{10, 10, 10}, 0.5, func() {}), ) entityDb.RegisterEntity(entity) behavior.Update(1) assert.Nil(t, entity.GetComponent(components.ANIMATION)) }
func Test_Update_CallsCompletionCallbackOnCompletion(t *testing.T) { behavior, entityDb := getTestAnimation() callbackCalled := false entity := core.NewEntity() entity.AddComponent( components.NewPositionAnimation(math3d.Vector{10, 10, 10}, 0.5, func() { callbackCalled = true }), ) entityDb.RegisterEntity(entity) behavior.Update(1) assert.True(t, callbackCalled) }
func Test_Update_UpdatesOverMultipleSeconds(t *testing.T) { behavior, entityDb := getTestAnimation() entity := core.NewEntity() entity.AddComponent( components.NewPositionAnimation(math3d.Vector{10, 10, 10}, 10, func() {}), ) entityDb.RegisterEntity(entity) var i float32 = 1 for ; i <= 10; i++ { behavior.Update(1) transform := components.GetTransform(entity) assert.Equal(t, math3d.Vector{i, i, i}, transform.Position) } }
func Test_Update_UpdatesAPositionAnimationOverTime(t *testing.T) { behavior, entityDb := getTestAnimation() entity := core.NewEntity() entity.AddComponent( components.NewPositionAnimation(math3d.Vector{2, 2, 2}, 1, func() {}), ) entityDb.RegisterEntity(entity) // Move half way behavior.Update(0.5) transform := components.GetTransform(entity) assert.Equal(t, math3d.Vector{1, 1, 1}, transform.Position) // Move the rest of the way behavior.Update(0.5) transform = components.GetTransform(entity) assert.Equal(t, math3d.Vector{2, 2, 2}, transform.Position) }