41 #ifndef INCLUDED_GLS_SERIAL_MORPH_MESH_H
42 #define INCLUDED_GLS_SERIAL_MORPH_MESH_H
49 #include "gls_resource_file_mgr.h"
56 #if( defined( GLSGEN_EXPORT_GLSADVANCEDMESH ) || defined( GLSGEN_IMPORT_GLSADVANCEDMESH ) || defined( GLS_EXPORT_GENERATED ) || defined( GLS_IMPORT_GENERATED ) ) \
57 && defined( _MSC_VER )
58 # if defined( GLSGEN_EXPORT_GLSADVANCEDMESH ) || defined( GLS_EXPORT_GENERATED )
59 # define GLSGEN_GlsSerialMorphMesh_EXPORT __declspec( dllexport )
61 # define GLSGEN_GlsSerialMorphMesh_EXPORT __declspec( dllimport )
64 # define GLSGEN_GlsSerialMorphMesh_EXPORT
68 #define LIB_BASE_NAME "gls_advanced_mesh"
76 class GlsGloFileAttribute;
85 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
88 friend class GlsSerialMorphMeshEditor;
93 GLSGEN_GlsSerialMorphMesh_EXPORT
GlsSerialMorphMesh(
const GlsSerialMorphMesh& that,
const bool generateNames );
98 static GLSGEN_GlsSerialMorphMesh_EXPORT
DisplayObject* CreateInstance();
105 virtual GLSGEN_GlsSerialMorphMesh_EXPORT
void SetAvailableAttributes(
unsigned int value ) DISTI_METHOD_OVERRIDE;
106 virtual GLSGEN_GlsSerialMorphMesh_EXPORT
DisplayObject*
CloneObject(
bool generateNames =
false ) DISTI_METHOD_OVERRIDE;
115 virtual GLSGEN_GlsSerialMorphMesh_EXPORT
void PreDraw(
const OpenGLMatrices& parentMatrices,
Culler& culler ) DISTI_METHOD_OVERRIDE;
130 GLSGEN_GlsSerialMorphMesh_EXPORT
void SetNumKeyframes(
unsigned int count );
135 GLSGEN_GlsSerialMorphMesh_EXPORT
unsigned int NumKeyframes();
151 GLSGEN_GlsSerialMorphMesh_EXPORT
void SetKeyframePercent(
unsigned int index,
const float& value );
161 GLSGEN_GlsSerialMorphMesh_EXPORT
void SetMorphPercent(
const float& value );
175 GLSGEN_GlsSerialMorphMesh_EXPORT
void SetTension(
const float& value );
180 GLSGEN_GlsSerialMorphMesh_EXPORT
float GetTension();
200 virtual GLSGEN_GlsSerialMorphMesh_EXPORT
void SetFromGloData(
GlsGloFileAttribute& data ) DISTI_METHOD_OVERRIDE;
208 void SetupAttribDict();
215 GLSGEN_GlsSerialMorphMesh_EXPORT Keyframe_Data(
const Keyframe_Data& );
216 GLSGEN_GlsSerialMorphMesh_EXPORT ~Keyframe_Data();
217 GLSGEN_GlsSerialMorphMesh_EXPORT
const Keyframe_Data& operator=(
const Keyframe_Data& );
228 GlsSerialMorphMesh* _parentMesh;
231 : _parentMesh( NULL )
234 static void element_read_func(
int index, KeyframeDataArray& array, std::istream& instr );
235 static void element_write_func(
int index, KeyframeDataArray& array, std::ostream& outstr );
237 void Count(
unsigned count ) { _keyframes.Count( count ); }
238 unsigned Count()
const {
return _keyframes.Count(); }
240 void Clear() { _keyframes.Clear(); }
242 Keyframe_Data& operator[](
const std::size_t index ) {
return _keyframes[
static_cast<unsigned>( index ) ]; }
243 const Keyframe_Data& operator[](
const std::size_t index )
const {
return _keyframes[
static_cast<unsigned>( index ) ]; }
257 unsigned int _last_keyframe_index;
258 unsigned int _next_keyframe_index;
259 float _last_keyframe_weight;
260 float _next_keyframe_weight;
262 bool _renderMeshIsValid;
266 GLSGEN_GlsSerialMorphMesh_EXPORT
void RecalculateKeyframeIndicesAndWeights();
269 GLSGEN_GlsSerialMorphMesh_EXPORT
void KeyframeGeometryChanged(
Keyframe_Data* );
273 int _gloKeyframeIndex;
276 void CalculateBSplineInterpolation()
const;
279 GLSGEN_GlsSerialMorphMesh_EXPORT
void InitializeMembers();
282 GlsSerialMorphMesh& operator=(
const GlsSerialMorphMesh& rhs ) DISTI_SPECIAL_MEM_FUN_DELETE;
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL) DISTI_METHOD_OVERRIDE
virtual GlsGeometryResource * GetRenderMesh() DISTI_METHOD_OVERRIDE
#define DISTI_DEPRECATED(msg)
Defines whether this compiler supports the C++14 deprecated attribute.
Definition: gls_cpp_lang_support.h:436
Definition: dynamic_array.h:66
The disti::Group class. Implements groups of objects.
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:471
The disti::GlsAdvancedMesh class.
virtual void CopyGeometry(DisplayObject *src) DISTI_METHOD_OVERRIDE
virtual void CopyProperties(DisplayObject *src) DISTI_METHOD_OVERRIDE
void SetMorphPercent(const float &value)
void InvalidateRenderMesh()
Definition: gls_serial_morph_mesh.h:184
Definition: gls_serial_morph_mesh.h:82
virtual void SetAvailableAttributes(unsigned int value) DISTI_METHOD_OVERRIDE
virtual ~GlsSerialMorphMesh()
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array) DISTI_METHOD_OVERRIDE
Definition: gls_glo_file.h:988
GlsGeometry_Generic * GetKeyframeGeometry(unsigned int index)
Definition: gls_serial_morph_mesh.h:203
Definition: gls_geometry_resource.h:86
Definition: gls_serial_morph_mesh.h:225
unsigned int NumKeyframes()
float GetKeyframePercent(unsigned int index)
Definition: disti_metadata.h:668
void SetKeyframeGeometry(unsigned int keyframeIndex, GlsGeometry_Generic *newKeyframeGeometry)
virtual void PreDraw(const OpenGLMatrices &parentMatrices, Culler &culler) DISTI_METHOD_OVERRIDE
Definition: gls_geometry_resource_mesh.h:78
void SetTension(const float &value)
The disti::GlsGeometryResource class.
void SetKeyframePercent(unsigned int index, const float &value)
void SetNumKeyframes(unsigned int count)
Macros and helper code to determine what subset of C++11/14/17 is available.
virtual DisplayObject * CloneObject(bool generateNames=false) DISTI_METHOD_OVERRIDE
Definition: bmpimage.h:46
Definition: gls_geometry_resource.h:457