From 393b5cd1dc438872af89d334ef6e5fcc59f27d47 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 13 Jan 2013 17:24:39 +1000 Subject: Added Irrlicht 1.8, but without all the Windows binaries. --- .../doc/html/_i_skinned_mesh_8h_source.html | 288 +++++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 libraries/irrlicht-1.8/doc/html/_i_skinned_mesh_8h_source.html (limited to 'libraries/irrlicht-1.8/doc/html/_i_skinned_mesh_8h_source.html') diff --git a/libraries/irrlicht-1.8/doc/html/_i_skinned_mesh_8h_source.html b/libraries/irrlicht-1.8/doc/html/_i_skinned_mesh_8h_source.html new file mode 100644 index 0000000..d5f84a5 --- /dev/null +++ b/libraries/irrlicht-1.8/doc/html/_i_skinned_mesh_8h_source.html @@ -0,0 +1,288 @@ + + +
+ +00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt +00002 // This file is part of the "Irrlicht Engine". +00003 // For conditions of distribution and use, see copyright notice in irrlicht.h +00004 +00005 #ifndef __I_SKINNED_MESH_H_INCLUDED__ +00006 #define __I_SKINNED_MESH_H_INCLUDED__ +00007 +00008 #include "irrArray.h" +00009 #include "IBoneSceneNode.h" +00010 #include "IAnimatedMesh.h" +00011 #include "SSkinMeshBuffer.h" +00012 +00013 namespace irr +00014 { +00015 namespace scene +00016 { +00017 +00018 enum E_INTERPOLATION_MODE +00019 { +00020 // constant does use the current key-values without interpolation +00021 EIM_CONSTANT = 0, +00022 +00023 // linear interpolation +00024 EIM_LINEAR, +00025 +00027 EIM_COUNT +00028 }; +00029 +00030 +00032 class ISkinnedMesh : public IAnimatedMesh +00033 { +00034 public: +00035 +00037 +00038 virtual u32 getJointCount() const = 0; +00039 +00041 +00044 virtual const c8* getJointName(u32 number) const = 0; +00045 +00047 +00049 virtual s32 getJointNumber(const c8* name) const = 0; +00050 +00052 +00057 virtual bool useAnimationFrom(const ISkinnedMesh *mesh) = 0; +00058 +00060 +00063 virtual void updateNormalsWhenAnimating(bool on) = 0; +00064 +00066 virtual void setInterpolationMode(E_INTERPOLATION_MODE mode) = 0; +00067 +00069 virtual void animateMesh(f32 frame, f32 blend)=0; +00070 +00072 virtual void skinMesh() = 0; +00073 +00075 +00076 virtual void convertMeshToTangents() = 0; +00077 +00079 /* This feature is not implementated in Irrlicht yet */ +00080 virtual bool setHardwareSkinning(bool on) = 0; +00081 +00083 struct SWeight +00084 { +00086 u16 buffer_id; //I doubt 32bits is needed +00087 +00089 u32 vertex_id; //Store global ID here +00090 +00092 f32 strength; +00093 +00094 private: +00096 friend class CSkinnedMesh; +00097 bool *Moved; +00098 core::vector3df StaticPos; +00099 core::vector3df StaticNormal; +00100 }; +00101 +00102 +00104 struct SPositionKey +00105 { +00106 f32 frame; +00107 core::vector3df position; +00108 }; +00109 +00111 struct SScaleKey +00112 { +00113 f32 frame; +00114 core::vector3df scale; +00115 }; +00116 +00118 struct SRotationKey +00119 { +00120 f32 frame; +00121 core::quaternion rotation; +00122 }; +00123 +00125 struct SJoint +00126 { +00127 SJoint() : UseAnimationFrom(0), GlobalSkinningSpace(false), +00128 positionHint(-1),scaleHint(-1),rotationHint(-1) +00129 { +00130 } +00131 +00133 core::stringc Name; +00134 +00136 core::matrix4 LocalMatrix; +00137 +00139 core::array<SJoint*> Children; +00140 +00142 core::array<u32> AttachedMeshes; +00143 +00145 core::array<SPositionKey> PositionKeys; +00146 +00148 core::array<SScaleKey> ScaleKeys; +00149 +00151 core::array<SRotationKey> RotationKeys; +00152 +00154 core::array<SWeight> Weights; +00155 +00157 core::matrix4 GlobalMatrix; +00158 core::matrix4 GlobalAnimatedMatrix; +00159 core::matrix4 LocalAnimatedMatrix; +00160 core::vector3df Animatedposition; +00161 core::vector3df Animatedscale; +00162 core::quaternion Animatedrotation; +00163 +00164 core::matrix4 GlobalInversedMatrix; //the x format pre-calculates this +00165 +00166 private: +00168 friend class CSkinnedMesh; +00169 +00170 SJoint *UseAnimationFrom; +00171 bool GlobalSkinningSpace; +00172 +00173 s32 positionHint; +00174 s32 scaleHint; +00175 s32 rotationHint; +00176 }; +00177 +00178 +00179 //Interface for the mesh loaders (finalize should lock these functions, and they should have some prefix like loader_ +00180 +00181 //these functions will use the needed arrays, set values, etc to help the loaders +00182 +00184 virtual core::array<SSkinMeshBuffer*>& getMeshBuffers() = 0; +00185 +00187 virtual core::array<SJoint*>& getAllJoints() = 0; +00188 +00190 virtual const core::array<SJoint*>& getAllJoints() const = 0; +00191 +00193 virtual void finalize() = 0; +00194 +00196 virtual SSkinMeshBuffer* addMeshBuffer() = 0; +00197 +00199 virtual SJoint* addJoint(SJoint *parent=0) = 0; +00200 +00202 virtual SWeight* addWeight(SJoint *joint) = 0; +00203 +00205 virtual SPositionKey* addPositionKey(SJoint *joint) = 0; +00207 virtual SScaleKey* addScaleKey(SJoint *joint) = 0; +00209 virtual SRotationKey* addRotationKey(SJoint *joint) = 0; +00210 +00212 virtual bool isStatic()=0; +00213 }; +00214 +00215 } // end namespace scene +00216 } // end namespace irr +00217 +00218 #endif +00219 +