Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_ANIMATION_BASESTRUCTURES_H__
00009 #define __SP_ANIMATION_BASESTRUCTURES_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013 #include "Base/spMath.hpp"
00014 #include "Base/spMeshBuffer.hpp"
00015 #include "Base/spTransformation3D.hpp"
00016
00017
00018 namespace sp
00019 {
00020 namespace scene
00021 {
00022
00023
00024 class AnimationJoint;
00025
00026
00032 struct SP_EXPORT SVertexGroup
00033 {
00034 SVertexGroup();
00035 SVertexGroup(
00036 scene::Mesh* BaseMesh, u32 SurfaceIndex, u32 VertexIndex, f32 VertexWeight = 1.0f
00037 );
00038 SVertexGroup(
00039 scene::Mesh* BaseMesh,
00040 u32 SurfaceIndex, u32 VertexIndex,
00041 u8 TangentTexLayer, u8 BinormalTexLayer,
00042 f32 VertexWeight = 1.0f
00043 );
00044 ~SVertexGroup();
00045
00046
00047 void setupVertex(scene::Mesh* BaseMesh);
00048 void setupVertex(scene::Mesh* BaseMesh, u8 TangentTexLayer, u8 BinormalTexLayer);
00049
00050
00051 u32 Surface;
00052 u32 Index;
00053 f32 Weight;
00054
00055 dim::vector3df Position;
00056 dim::vector3df Normal;
00057 dim::vector3df Tangent;
00058 dim::vector3df Binormal;
00059 };
00060
00062 struct SVertexKeyframe
00063 {
00064 SVertexKeyframe()
00065 {
00066 }
00067 SVertexKeyframe(const dim::vector3df &VertexPosition, const dim::vector3df &VertexNormal) :
00068 Position(VertexPosition ),
00069 Normal (VertexNormal )
00070 {
00071 }
00072 ~SVertexKeyframe()
00073 {
00074 }
00075
00076
00077 dim::vector3df Position;
00078 dim::vector3df Normal;
00079 };
00080
00085 struct SMorphTargetVertex
00086 {
00087 SMorphTargetVertex() : Surface(0), Index(0)
00088 {
00089 }
00090 SMorphTargetVertex(
00091 video::MeshBuffer* MeshSurface, u32 VertexIndex,
00092 const std::vector<SVertexKeyframe> &VertexKeyframes) :
00093 Surface (MeshSurface ),
00094 Index (VertexIndex ),
00095 Keyframes (VertexKeyframes)
00096 {
00097 }
00098 ~SMorphTargetVertex()
00099 {
00100 }
00101
00102
00103 video::MeshBuffer* Surface;
00104 u32 Index;
00105
00106 std::vector<SVertexKeyframe> Keyframes;
00107 };
00108
00110 struct SNodeKeyframe
00111 {
00112 SNodeKeyframe(const Transformation &Trans, u64 FrameDuration) :
00113 Transform (Trans ),
00114 Duration (math::Max(static_cast<u64>(1), FrameDuration) )
00115 {
00116 }
00117 ~SNodeKeyframe()
00118 {
00119 }
00120
00121
00122 Transformation Transform;
00123 u64 Duration;
00124 };
00125
00126
00127 }
00128
00129 }
00130
00131
00132 #endif
00133
00134
00135
00136