6 #ifndef _INC_cValueCurve_H
7 #define _INC_cValueCurve_H
12 #include "../GrayLibBase.h"
27 template <
typename TYPE =
float >
96 iIndex = Calc::MulDiv<ITERATE_t>(iSelect, iQty, iSelectRange);
102 iSelectElement = iSelectRange / iQty;
103 iSelect -= (iIndex * iSelectElement);
108 VALUE_t nLoVal = pnArray[iIndex + 0];
109 VALUE_t nHiVal = pnArray[iIndex + 1];
110 VALUE_t nVal = nLoVal + Calc::MulDiv<VALUE_t>(nHiVal - nLoVal, (
VALUE_t)iSelect, (
VALUE_t)iSelectElement);
121 if (iSelectRange <= 0)
126 return(GetLinearA(m_aValues.
GetData(), m_aValues.
GetSize(), iSelect, iSelectRange));
139 ASSERT(pnVals !=
nullptr);
143 m_aValues.
SetAt(i, pnVals[i]);
150 m_aValues.
SetAt(0, nLo);
151 m_aValues.
SetAt(1, nHi);
170 bool v_SetCurve(
const cVariant& vVal);
171 void v_GetCurve(
cVariant& vVal)
const;
173 VALUE_t GetLinearF(
float fAge,
float fLife)
const;
174 VALUE_t GetLinear1000(
int iPercent1000)
const;
175 VALUE_t GetChance1000(
int iPercent1000)
const;
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define TYPE
Definition: StrT.cpp:38
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define UNITTEST2_PREDEF(x)
Definition: cUnitTestDecl.h:19
Definition: cValueCurve.h:29
static VALUE_t GRAYCALL GetLinearA(const VALUE_t *pnArray, ITERATE_t iQty, ITERATE_t iSelect, ITERATE_t iSelectRange)
Definition: cValueCurve.h:79
bool isEmpty() const noexcept
Definition: cValueCurve.h:55
void Init()
Definition: cValueCurve.h:59
cValueCurveT() noexcept
Definition: cValueCurve.h:42
VALUE_t GetLinear1(float fOne) const
Definition: cValueCurve.h:129
void SetValuesRange(VALUE_t nLo, VALUE_t nHi)
Definition: cValueCurve.h:146
cArrayVal< VALUE_t > m_aValues
array of values for defining the curve. values spaced evenly.
Definition: cValueCurve.h:39
VALUE_t EnumValueCheck(ITERATE_t i) const
Definition: cValueCurve.h:72
VALUE_t GetLinearN(ITERATE_t iSelect, ITERATE_t iSelectRange) const
Definition: cValueCurve.h:117
cValueCurveT< TYPE > THIS_t
Definition: cValueCurve.h:35
cValueCurveT(const THIS_t &src)
Definition: cValueCurve.h:45
ITERATE_t get_EnumQty() const
Definition: cValueCurve.h:64
void SetValues(ITERATE_t iQty, const VALUE_t *pnVals)
Definition: cValueCurve.h:136
VALUE_t EnumValue(ITERATE_t i) const
Definition: cValueCurve.h:68
TYPE VALUE_t
value/dimension type. like DVALUE_t
Definition: cValueCurve.h:36
Definition: cValueCurve.h:156
UNITTEST_FRIEND(cValueCurvef)
cValueCurvef(const cValueCurvef &src)
Definition: cValueCurve.h:165
cValueCurvef() noexcept
Definition: cValueCurve.h:162
Definition: cVariant.h:26
void RemoveAll()
Clean up.
Definition: cArray.h:230
bool IsEmpty() const noexcept
Definition: cArray.h:145
void SetAt(ITERATE_t nIndex, ARG_TYPE newElement)
Definition: cArray.h:173
ITERATE_t GetSize() const noexcept
Definition: cArray.h:137
const TYPE * GetData() const
Definition: cArray.h:181
void SetSize(ITERATE_t nNewSize)
Definition: cArray.h:248
void SetCopy(const cArrayTyped< TYPE, ARG_TYPE > &aValues)
Definition: cArray.h:598
bool IsValidIndex(ITERATE_t i) const noexcept
Definition: cArray.h:495
class __DECL_IMPORT cVariant
Definition: cJSONWriter.h:19
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
int ITERATE_t
like size_t but signed
Definition: Index.h:28
Definition: cDebugAssert.h:29