2016-02-29 21:13:54 +01:00
|
|
|
#ifndef _LC_SYNTH_H_
|
|
|
|
#define _LC_SYNTH_H_
|
|
|
|
|
|
|
|
#include "lc_math.h"
|
|
|
|
#include "piece.h"
|
2016-03-04 04:18:23 +01:00
|
|
|
|
|
|
|
enum lcSynthType
|
|
|
|
{
|
|
|
|
LC_SYNTH_PIECE_RIBBED_HOSE,
|
|
|
|
LC_SYNTH_PIECE_FLEXIBLE_AXLE
|
|
|
|
};
|
2016-02-29 21:13:54 +01:00
|
|
|
|
|
|
|
struct lcSynthComponent
|
|
|
|
{
|
|
|
|
lcMatrix44 Transform;
|
|
|
|
float Length;
|
|
|
|
};
|
|
|
|
|
2016-03-04 04:18:23 +01:00
|
|
|
class lcSynthInfo
|
2016-02-29 21:13:54 +01:00
|
|
|
{
|
2016-03-04 04:18:23 +01:00
|
|
|
public:
|
|
|
|
lcSynthInfo(lcSynthType Type, float Length, int NumSections);
|
|
|
|
|
|
|
|
void GetDefaultControlPoints(lcArray<lcPieceControlPoint>& ControlPoints) const;
|
|
|
|
int InsertControlPoint(lcArray<lcPieceControlPoint>& ControlPoints, const lcVector3& Start, const lcVector3& End) const;
|
|
|
|
lcMesh* CreateMesh(const lcArray<lcPieceControlPoint>& ControlPoints) const;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void CalculateSections(const lcArray<lcPieceControlPoint>& ControlPoints, lcArray<lcMatrix44>& Sections, void(*SectionCallback)(const lcVector3& CurvePoint, int SegmentIndex, float t, void* Param), void* CallbackParam) const;
|
|
|
|
void AddRibbedHoseParts(lcMemFile& File, const lcArray<lcMatrix44>& Sections) const;
|
|
|
|
void AddFlexibleAxleParts(lcMemFile& File, const lcArray<lcMatrix44>& Sections) const;
|
|
|
|
|
|
|
|
lcSynthType mType;
|
|
|
|
lcSynthComponent mStart;
|
|
|
|
lcSynthComponent mMiddle;
|
|
|
|
lcSynthComponent mEnd;
|
|
|
|
float mLength;
|
|
|
|
int mNumSections;
|
2016-02-29 21:13:54 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
void lcSynthInit();
|
|
|
|
|
|
|
|
#endif // _LC_SYNTH_H_
|