1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#pragma once
/*
* Copyright (C) Volition, Inc. 1999. All rights reserved.
*
* All source code herein is the property of Volition, Inc. You may not sell
* or otherwise commercially exploit the source or things you created based on the
* source.
*
*/
#include "math/vecmat.h"
enum class CurveInterpFunction {
Constant,
Linear,
Polynomial,
Circular,
Curve,
};
struct curve_keyframe {
vec2d pos;
CurveInterpFunction interp_func;
float param1; // degree for polynomials, integer index for curves
float param2; // > 0 for "ease in", < 0 for "ease out" on polynomials and circular
};
class Curve {
public :
SCP_string name;
SCP_vector<curve_keyframe> keyframes;
public :
// constructor
Curve(SCP_string in_name);
//Get
float GetValue(float x_val) const;
// Get
float GetValueIntegrated(float x_val) const;
//Set
void ParseData();
};
extern SCP_vector<Curve> Curves;
extern int curve_get_by_name(const SCP_string& in_name);
extern void curves_init();
|