sead
Loading...
Searching...
No Matches
seadHostIOCurve.h
Go to the documentation of this file.
1#ifndef SEAD_HOST_IO_CURVE_H_
2#define SEAD_HOST_IO_CURVE_H_
3
4#include <basis/seadAssert.h>
5#include <math/seadVector.h>
6
7namespace sead { namespace hostio {
8
9class ICurve
10{
11public:
12 virtual f32 interpolateToF32(f32 t) const = 0;
13 virtual Vector2f interpolateToVec2f(f32 t) const = 0;
14};
15
30static_assert(cNumCurveType == 10);
31
39static_assert(sizeof(CurveDataInfo) == 4);
40
41template <typename T>
42class Curve : public ICurve
43{
44public:
46 : mBuf(nullptr)
47 {
48 mInfo.curveType = 0;
49 mInfo.unitSize = sizeof(T);
50 mInfo.numBuf = 0;
51 mInfo.numUse = 0;
52 }
53
54 T* getBuf() const
55 {
56 return mBuf;
57 }
58
59 void setBuf(T* buf)
60 {
61 mBuf = buf;
62 }
63
65 {
66 return CurveType(mInfo.curveType);
67 }
68
69 void setCurveType(CurveType curveType)
70 {
71 SEAD_ASSERT(mInfo.curveType < cNumCurveType);
72 mInfo.curveType = curveType;
73 }
74
75 u32 getNumBuf() const
76 {
77 return mInfo.numBuf;
78 }
79
80 void setNumBuf(u32 numBuf)
81 {
82 mInfo.numBuf = numBuf;
83 }
84
85 u32 getNumUse() const
86 {
87 return mInfo.numUse;
88 }
89
90 void setNumUse(u32 numUse)
91 {
92 SEAD_ASSERT(numUse <= 0xff);
93 mInfo.numUse = numUse;
94 }
95
96 virtual f32 interpolateToF32(f32 t) const;
97 virtual Vector2f interpolateToVec2f(f32 t) const;
98
99private:
102};
103static_assert(sizeof(Curve<f32>) == 0xC);
104
105template <typename T, u32 N>
112static_assert(sizeof(CurveData<f32, 30>) == 0x80);
113
114} } // namespace sead::hostio
115
116#ifdef __cplusplus
117
118#include <hostio/seadHostIOCurve.hpp>
119
120#endif // __cplusplus
121
122#endif // SEAD_HOST_IO_CURVE_H_
Definition seadHostIOCurve.h:43
u32 getNumBuf() const
Definition seadHostIOCurve.h:75
void setNumBuf(u32 numBuf)
Definition seadHostIOCurve.h:80
void setBuf(T *buf)
Definition seadHostIOCurve.h:59
T * getBuf() const
Definition seadHostIOCurve.h:54
CurveType getCurveType() const
Definition seadHostIOCurve.h:64
void setNumUse(u32 numUse)
Definition seadHostIOCurve.h:90
void setCurveType(CurveType curveType)
Definition seadHostIOCurve.h:69
CurveDataInfo mInfo
Definition seadHostIOCurve.h:101
virtual Vector2f interpolateToVec2f(f32 t) const
T * mBuf
Definition seadHostIOCurve.h:100
u32 getNumUse() const
Definition seadHostIOCurve.h:85
virtual f32 interpolateToF32(f32 t) const
Curve()
Definition seadHostIOCurve.h:45
Definition seadHostIOCurve.h:10
virtual Vector2f interpolateToVec2f(f32 t) const =0
virtual f32 interpolateToF32(f32 t) const =0
Definition seadHeap.h:14
CurveType
Definition seadHostIOCurve.h:17
@ cCurveStep
Definition seadHostIOCurve.h:20
@ cCurveSin
Definition seadHostIOCurve.h:21
@ cCurveLinear2D
Definition seadHostIOCurve.h:24
@ cCurveLinear
Definition seadHostIOCurve.h:18
@ cCurveNonuniformSpline
Definition seadHostIOCurve.h:27
@ cCurveSinPow2
Definition seadHostIOCurve.h:23
@ cCurveHermit
Definition seadHostIOCurve.h:19
@ cCurveStep2D
Definition seadHostIOCurve.h:26
@ cCurveHermit2D
Definition seadHostIOCurve.h:25
@ cNumCurveType
Definition seadHostIOCurve.h:28
@ cCurveCos
Definition seadHostIOCurve.h:22
Definition seadAssert.h:44
Vector2< f32 > Vector2f
Definition seadVector.h:238
#define SEAD_ASSERT(condition)
Definition seadAssert.h:24
Definition seadHostIOCurve.h:33
u8 unitSize
Definition seadHostIOCurve.h:35
u8 numUse
Definition seadHostIOCurve.h:37
u8 numBuf
Definition seadHostIOCurve.h:36
u8 curveType
Definition seadHostIOCurve.h:34
Definition seadHostIOCurve.h:107
u32 curveType
Definition seadHostIOCurve.h:109
u32 numUse
Definition seadHostIOCurve.h:108
T buf[N]
Definition seadHostIOCurve.h:110