From f9158592e1478b2013afc7041d9ed041cf2d2f4a Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Mon, 13 Jan 2014 19:47:58 +1000 Subject: Update Irrlicht to 1.8.1. Include actual change markers this time. lol --- .../source/Irrlicht/CB3DMeshFileLoader.h | 140 +++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 libraries/irrlicht-1.8.1/source/Irrlicht/CB3DMeshFileLoader.h (limited to 'libraries/irrlicht-1.8.1/source/Irrlicht/CB3DMeshFileLoader.h') diff --git a/libraries/irrlicht-1.8.1/source/Irrlicht/CB3DMeshFileLoader.h b/libraries/irrlicht-1.8.1/source/Irrlicht/CB3DMeshFileLoader.h new file mode 100644 index 0000000..6b3d4b8 --- /dev/null +++ b/libraries/irrlicht-1.8.1/source/Irrlicht/CB3DMeshFileLoader.h @@ -0,0 +1,140 @@ +// Copyright (C) 2006-2012 Luke Hoschke +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +// B3D Mesh loader +// File format designed by Mark Sibly for the Blitz3D engine and has been +// declared public domain + +#include "IrrCompileConfig.h" + +#ifndef __C_B3D_MESH_LOADER_H_INCLUDED__ +#define __C_B3D_MESH_LOADER_H_INCLUDED__ + +#include "IMeshLoader.h" +#include "ISceneManager.h" +#include "CSkinnedMesh.h" +#include "IReadFile.h" + +namespace irr +{ + +namespace scene +{ + +//! Meshloader for B3D format +class CB3DMeshFileLoader : public IMeshLoader +{ +public: + + //! Constructor + CB3DMeshFileLoader(scene::ISceneManager* smgr); + + //! returns true if the file maybe is able to be loaded by this class + //! based on the file extension (e.g. ".bsp") + virtual bool isALoadableFileExtension(const io::path& filename) const; + + //! creates/loads an animated mesh from the file. + //! \return Pointer to the created mesh. Returns 0 if loading failed. + //! If you no longer need the mesh, you should call IAnimatedMesh::drop(). + //! See IReferenceCounted::drop() for more information. + virtual IAnimatedMesh* createMesh(io::IReadFile* file); + +private: + + struct SB3dChunkHeader + { + c8 name[4]; + s32 size; + }; + + struct SB3dChunk + { + SB3dChunk(const SB3dChunkHeader& header, long sp) + : length(header.size+8), startposition(sp) + { + name[0]=header.name[0]; + name[1]=header.name[1]; + name[2]=header.name[2]; + name[3]=header.name[3]; + } + + c8 name[4]; + s32 length; + long startposition; + }; + + struct SB3dTexture + { + core::stringc TextureName; + s32 Flags; + s32 Blend; + f32 Xpos; + f32 Ypos; + f32 Xscale; + f32 Yscale; + f32 Angle; + }; + + struct SB3dMaterial + { + SB3dMaterial() : red(1.0f), green(1.0f), + blue(1.0f), alpha(1.0f), shininess(0.0f), blend(1), + fx(0) + { + for (u32 i=0; i B3dStack; + + core::array Materials; + core::array Textures; + + core::array AnimatedVertices_VertexID; + + core::array AnimatedVertices_BufferID; + + core::array BaseVertices; + + ISceneManager* SceneManager; + CSkinnedMesh* AnimatedMesh; + io::IReadFile* B3DFile; + + //B3Ds have Vertex ID's local within the mesh I don't want this + // Variable needs to be class member due to recursion in calls + u32 VerticesStart; + + bool NormalsInFile; + bool HasVertexColors; + bool ShowWarning; +}; + + +} // end namespace scene +} // end namespace irr + +#endif // __C_B3D_MESH_LOADER_H_INCLUDED__ + -- cgit v1.1