/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ // Description : Export geometry OCM file format #ifndef CRYINCLUDE_EDITOR_EXPORT_OCMEXPORTER_H #define CRYINCLUDE_EDITOR_EXPORT_OCMEXPORTER_H #pragma once #include class CFileEndianWriter; struct SOCMeshInfo { Matrix44 m_OBBMat; uint32 m_Offset; size_t m_MeshHash; bool operator==(const SOCMeshInfo& rOther) const{return m_MeshHash == rOther.m_MeshHash; } }; typedef std::vector tdMeshOffset; class COCMExporter : public IExporter { public: virtual const char* GetExtension() const; virtual const char* GetShortDescription() const; virtual bool ExportToFile(const char* filename, const Export::IData* pExportData); virtual bool ImportFromFile([[maybe_unused]] const char* filename, [[maybe_unused]] Export::IData* pData){return false; }; virtual void Release(); private: const char* TrimFloat(float fValue) const; void SaveInstance(CFileEndianWriter& rWriter, const Export::Object* pInstance, const SOCMeshInfo& rMeshInfo); size_t SaveMesh(CFileEndianWriter& rWriter, const Export::Object* pMesh, Matrix44& rOBBMat); void Extends(const Matrix44& rTransform, const Export::Object* pMesh, f32& rMinX, f32& rMaxX, f32& rMinY, f32& rMaxY, f32& rMinZ, f32& rMaxZ) const; Matrix44 CalcOBB(const Export::Object* pMesh); }; #endif // CRYINCLUDE_EDITOR_EXPORT_OCMEXPORTER_H