Sunset old state system finally.
This commit is contained in:
		@@ -6,7 +6,7 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "util/flag.hpp"
 | 
			
		||||
#include "display/Color.hpp"
 | 
			
		||||
#include "event/Event.hpp"
 | 
			
		||||
#include "state/StateEvent.hpp"
 | 
			
		||||
 | 
			
		||||
#define RENDER_TARGET_CLEAR_FLAG_COLOR FLAG_DEFINE(0)
 | 
			
		||||
#define RENDER_TARGET_CLEAR_FLAG_DEPTH FLAG_DEFINE(1)
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
namespace Dawn {
 | 
			
		||||
  class RenderTarget {
 | 
			
		||||
    public:
 | 
			
		||||
      Event<RenderTarget*, float_t, float_t> eventRenderTargetResized;
 | 
			
		||||
      StateEvent<RenderTarget*, float_t, float_t> eventRenderTargetResized;
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
       * Return the width of the render target.
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,6 @@
 | 
			
		||||
#include "dawnlibs.hpp"
 | 
			
		||||
#include "assert/assert.hpp"
 | 
			
		||||
#include "util/flag.hpp"
 | 
			
		||||
#include "event/Event.hpp"
 | 
			
		||||
#include "state/StateEvent.hpp"
 | 
			
		||||
 | 
			
		||||
namespace Dawn {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,6 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "state/StateEvent.hpp"
 | 
			
		||||
#include "Easing.hpp"
 | 
			
		||||
#include "util/mathutils.hpp"
 | 
			
		||||
 | 
			
		||||
namespace Dawn {
 | 
			
		||||
  struct Animation {
 | 
			
		||||
@@ -15,8 +13,7 @@ namespace Dawn {
 | 
			
		||||
      bool_t finished = false;
 | 
			
		||||
      float_t time = 0;
 | 
			
		||||
      float_t duration = 0;
 | 
			
		||||
      Event<> eventAnimationEnd;
 | 
			
		||||
      StateEvent<> event2AnimationEnd;
 | 
			
		||||
      StateEvent<> eventAnimationEnd;
 | 
			
		||||
      
 | 
			
		||||
      /**
 | 
			
		||||
       * Ticks the animation along. Delta is whatever you want to update the
 | 
			
		||||
@@ -26,7 +23,7 @@ namespace Dawn {
 | 
			
		||||
       * 
 | 
			
		||||
       * @param delta Time delta (in seconds) to tick the animaiton by.
 | 
			
		||||
       */
 | 
			
		||||
      virtual void tick(float_t delta) = 0;
 | 
			
		||||
      virtual void tick(const float_t delta) = 0;
 | 
			
		||||
      
 | 
			
		||||
      /**
 | 
			
		||||
       * Restart a running animation.
 | 
			
		||||
 
 | 
			
		||||
@@ -8,4 +8,5 @@ target_sources(${DAWN_TARGET_NAME}
 | 
			
		||||
  PRIVATE
 | 
			
		||||
    Animation.cpp
 | 
			
		||||
    TiledSpriteAnimation.cpp
 | 
			
		||||
    easing.cpp
 | 
			
		||||
)
 | 
			
		||||
@@ -1,78 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) 2021 Dominic Masters
 | 
			
		||||
 * 
 | 
			
		||||
 * This software is released under the MIT License.
 | 
			
		||||
 * https://opensource.org/licenses/MIT
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "dawnlibs.hpp"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef float_t easefunction_t(float_t t);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the ease time for a given real time duration span.
 | 
			
		||||
 * @param start At what point in time the animation started
 | 
			
		||||
 * @param current The current point in time the animation is at.
 | 
			
		||||
 * @param duration The total duration on the animation.
 | 
			
		||||
 * @returns The easing time (0-1 time) that the animation is at.
 | 
			
		||||
 */
 | 
			
		||||
static inline float_t easeTimeToEase(
 | 
			
		||||
  float_t start,
 | 
			
		||||
  float_t current,
 | 
			
		||||
  float_t duration
 | 
			
		||||
) {
 | 
			
		||||
  return (current - start) / duration;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeLinear(float_t t) {
 | 
			
		||||
  return t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInQuad(float_t t) {
 | 
			
		||||
  return t * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeOutQuad(float_t t) {
 | 
			
		||||
  return t * (2 - t);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeOutCubic(float_t t) {
 | 
			
		||||
  return 1 - powf(1 - t, 3);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInOutQuad(float_t t) {
 | 
			
		||||
  return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInCubic(float_t t) {
 | 
			
		||||
  return t * t * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInOutCubic(float_t t) {
 | 
			
		||||
  return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInQuart(float_t t) {
 | 
			
		||||
  return t * t * t * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeOutQuart(float_t t) {
 | 
			
		||||
  return 1 - (t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInOutQuart(float_t t) {
 | 
			
		||||
  return t < .5 ? 8*t*t*t*t : 1-8*(t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInQuint(float_t t) {
 | 
			
		||||
  return t*t*t*t*t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeOutQuint(float_t t) {
 | 
			
		||||
  return 1 + (t-1)*(t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline float_t easeInOutQuint(float_t t) {
 | 
			
		||||
  return t<.5 ? 16*t*t*t*t*t : 1+16*(t-1)*(t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
@@ -5,6 +5,8 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "Animation.hpp"
 | 
			
		||||
#include "easing.hpp"
 | 
			
		||||
#include "util/mathutils.hpp"
 | 
			
		||||
 | 
			
		||||
namespace Dawn {
 | 
			
		||||
  template<typename T>
 | 
			
		||||
@@ -195,7 +197,6 @@ namespace Dawn {
 | 
			
		||||
        // Animation end.
 | 
			
		||||
        this->finished = true;
 | 
			
		||||
        this->eventAnimationEnd.invoke();
 | 
			
		||||
        this->event2AnimationEnd.invoke();
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      void clear() override {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ TiledSpriteAnimation::TiledSpriteAnimation(TiledSprite *sprite) :
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TiledSpriteAnimation::tick(float_t delta) {
 | 
			
		||||
void TiledSpriteAnimation::tick(const float_t delta) {
 | 
			
		||||
  SimpleAnimation::tick(delta);
 | 
			
		||||
  this->sprite->tile = frame;
 | 
			
		||||
}
 | 
			
		||||
@@ -20,6 +20,6 @@ namespace Dawn {
 | 
			
		||||
       */
 | 
			
		||||
      TiledSpriteAnimation(TiledSprite *sprite);
 | 
			
		||||
 | 
			
		||||
      void tick(float_t delta) override;
 | 
			
		||||
      void tick(const float_t delta) override;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										66
									
								
								src/dawn/display/animation/easing.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/dawn/display/animation/easing.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
// Copyright (c) 2023 Dominic Masters
 | 
			
		||||
// 
 | 
			
		||||
// This software is released under the MIT License.
 | 
			
		||||
// https://opensource.org/licenses/MIT
 | 
			
		||||
 | 
			
		||||
#include "easing.hpp"
 | 
			
		||||
 | 
			
		||||
float_t easeTimeToEase(
 | 
			
		||||
  const float_t start,
 | 
			
		||||
  const float_t current,
 | 
			
		||||
  const float_t duration
 | 
			
		||||
) {
 | 
			
		||||
  return (current - start) / duration;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeLinear(const float_t t) {
 | 
			
		||||
  return t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInQuad(const float_t t) {
 | 
			
		||||
  return t * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeOutQuad(const float_t t) {
 | 
			
		||||
  return t * (2 - t);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeOutCubic(const float_t t) {
 | 
			
		||||
  return 1 - powf(1 - t, 3);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInOutQuad(const float_t t) {
 | 
			
		||||
  return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInCubic(const float_t t) {
 | 
			
		||||
  return t * t * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInOutCubic(const float_t t) {
 | 
			
		||||
  return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInQuart(const float_t t) {
 | 
			
		||||
  return t * t * t * t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeOutQuart(const float_t t) {
 | 
			
		||||
  return 1 - (t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInOutQuart(const float_t t) {
 | 
			
		||||
  return t < .5 ? 8*t*t*t*t : 1-8*(t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInQuint(const float_t t) {
 | 
			
		||||
  return t*t*t*t*t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeOutQuint(const float_t t) {
 | 
			
		||||
  return 1 + (t-1)*(t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float_t easeInOutQuint(const float_t t) {
 | 
			
		||||
  return t<.5 ? 16*t*t*t*t*t : 1+16*(t-1)*(t-1)*(t-1)*(t-1)*(t-1);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								src/dawn/display/animation/easing.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/dawn/display/animation/easing.hpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) 2021 Dominic Masters
 | 
			
		||||
 * 
 | 
			
		||||
 * This software is released under the MIT License.
 | 
			
		||||
 * https://opensource.org/licenses/MIT
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "dawnlibs.hpp"
 | 
			
		||||
 | 
			
		||||
typedef float_t easefunction_t(const float_t t);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the ease time for a given real time duration span.
 | 
			
		||||
 * @param start At what point in time the animation started
 | 
			
		||||
 * @param current The current point in time the animation is at.
 | 
			
		||||
 * @param duration The total duration on the animation.
 | 
			
		||||
 * @returns The easing time (0-1 time) that the animation is at.
 | 
			
		||||
 */
 | 
			
		||||
float_t easeTimeToEase(
 | 
			
		||||
  const float_t start,
 | 
			
		||||
  const float_t current,
 | 
			
		||||
  const float_t duration
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
float_t easeLinear(const float_t t);
 | 
			
		||||
float_t easeInQuad(const float_t t);
 | 
			
		||||
float_t easeOutQuad(const float_t t);
 | 
			
		||||
float_t easeOutCubic(const float_t t);
 | 
			
		||||
float_t easeInOutQuad(const float_t t);
 | 
			
		||||
float_t easeInCubic(const float_t t);
 | 
			
		||||
float_t easeInOutCubic(const float_t t);
 | 
			
		||||
float_t easeInQuart(const float_t t);
 | 
			
		||||
float_t easeOutQuart(const float_t t);
 | 
			
		||||
float_t easeInOutQuart(const float_t t);
 | 
			
		||||
float_t easeInQuint(const float_t t);
 | 
			
		||||
float_t easeOutQuint(const float_t t);
 | 
			
		||||
float_t easeInOutQuint(const float_t t);
 | 
			
		||||
		Reference in New Issue
	
	Block a user