From 4a964152376c2436c40ea6c00175f55b7a47e80f Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Fri, 9 Dec 2022 13:00:39 -0800 Subject: [PATCH] Add CCharAnimTime Former-commit-id: f7e3f059b2bfad84bfb8a7349dc255c9c7108f6d --- configure.py | 2 +- include/Kyoto/Animation/CCharAnimTime.hpp | 17 +++++- src/Kyoto/Animation/CCharAnimTime.cpp | 63 +++++++++++++++++++++++ 3 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 src/Kyoto/Animation/CCharAnimTime.cpp diff --git a/configure.py b/configure.py index a13ebec8..338e9204 100755 --- a/configure.py +++ b/configure.py @@ -645,7 +645,7 @@ LIBS = [ "Kyoto/Math/CFrustumPlanes", ["Kyoto/Graphics/CCubeMaterial", False], ["Kyoto/Graphics/CCubeSurface", False], - "Kyoto/Animation/CCharAnimTime", + ["Kyoto/Animation/CCharAnimTime", False], ["Kyoto/Animation/CSegIdList", False], ["Kyoto/Input/CFinalInput", True], ["Kyoto/Graphics/CColor", True], diff --git a/include/Kyoto/Animation/CCharAnimTime.hpp b/include/Kyoto/Animation/CCharAnimTime.hpp index 5b9adcbf..d8efe96a 100644 --- a/include/Kyoto/Animation/CCharAnimTime.hpp +++ b/include/Kyoto/Animation/CCharAnimTime.hpp @@ -3,6 +3,7 @@ #include "types.h" +class COutputStream; class CInputStream; class CCharAnimTime { public: @@ -16,13 +17,25 @@ public: float GetSeconds() const { return x0_time; } explicit CCharAnimTime(CInputStream& in); + explicit CCharAnimTime(float time); explicit CCharAnimTime(EType type, float time) : x0_time(time), x4_type(type) {} CCharAnimTime(const CCharAnimTime& other) : x0_time(other.x0_time), x4_type(other.x4_type) {} - bool operator!=(const CCharAnimTime& other) const; bool operator>(const CCharAnimTime& other) const; + bool operator==(const CCharAnimTime& other) const; + bool operator!=(const CCharAnimTime& other) const; bool operator<(const CCharAnimTime& other) const; - + CCharAnimTime operator/(const CCharAnimTime& other) const; + CCharAnimTime operator*(const float& other) const; + CCharAnimTime operator-(const CCharAnimTime& other) const; + CCharAnimTime operator+(const CCharAnimTime& other) const; + const CCharAnimTime& operator+=(const CCharAnimTime& other); + const CCharAnimTime& operator-=(const CCharAnimTime& other); + bool operator<=(const CCharAnimTime& other) const; + bool operator>=(const CCharAnimTime& other) const; + bool GreaterThanZero() const; + bool EqualsZero() const; + void PutTo(COutputStream& out) const; static CCharAnimTime Infinity() { return CCharAnimTime(kT_Infinity, 1.0f); } private: diff --git a/src/Kyoto/Animation/CCharAnimTime.cpp b/src/Kyoto/Animation/CCharAnimTime.cpp new file mode 100644 index 00000000..02fd7b37 --- /dev/null +++ b/src/Kyoto/Animation/CCharAnimTime.cpp @@ -0,0 +1,63 @@ +#include "Kyoto/Animation/CCharAnimTime.hpp" + +#include "Kyoto/Streams/CInputStream.hpp" +#include "Kyoto/Streams/COutputStream.hpp" + +CCharAnimTime::CCharAnimTime(CInputStream& in) +: x0_time(in.Get< float >()), x4_type(EType(in.Get< int >())) {} + +CCharAnimTime::CCharAnimTime(float time) : x0_time(time) { + if (time == 0.f) { + x4_type = kT_ZeroSteady; + return; + } + x4_type = kT_NonZero; +} + +bool CCharAnimTime::operator<(const CCharAnimTime& other) const {} + +bool CCharAnimTime::operator==(const CCharAnimTime& other) const {} + +bool CCharAnimTime::operator!=(const CCharAnimTime& other) const {} + +bool CCharAnimTime::operator>(const CCharAnimTime& other) const {} + +CCharAnimTime CCharAnimTime::operator/(const CCharAnimTime& other) const {} + +CCharAnimTime CCharAnimTime::operator*(const float& other) const {} + +CCharAnimTime CCharAnimTime::operator-(const CCharAnimTime& other) const {} + +CCharAnimTime CCharAnimTime::operator+(const CCharAnimTime& other) const {} + +const CCharAnimTime& CCharAnimTime::operator+=(const CCharAnimTime& other) { + return *this = *this + other; +} + +const CCharAnimTime& CCharAnimTime::operator-=(const CCharAnimTime& other) { + return *this = *this - other; +} + +bool CCharAnimTime::operator<=(const CCharAnimTime& other) const { + return *this == other || *this < other; +} + +bool CCharAnimTime::operator>=(const CCharAnimTime& other) const { + return *this == other || *this > other; +} + +bool CCharAnimTime::GreaterThanZero() const { + if (EqualsZero()) + return false; + return x0_time > 0.f; +} + +bool CCharAnimTime::EqualsZero() const { + return x4_type == kT_ZeroIncreasing || x4_type == kT_ZeroSteady || x4_type == kT_ZeroDecreasing || + x0_time == 0.f; +} + +void CCharAnimTime::PutTo(COutputStream& out) const { + out.WriteReal32(x0_time); + out.WriteUint32(x4_type); +}