khanat-opennel-code/code/nel/tools/3d/mesh_utils/scene_meta.h
2015-09-20 17:03:44 +02:00

83 lines
2.2 KiB
C++

// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2015 Winch Gate Property Limited
// Author: Jan Boon <jan.boon@kaetemi.be>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <nel/misc/types_nl.h>
#include <nel/misc/sstring.h>
namespace NLMISC {
class IStream;
}
enum TMesh
{
TMeshDisabled = 0,
TMeshShape = 1,
TMeshCollisionInt = 2,
TMeshCollisionExt = 3,
TMeshZone = 4,
};
enum TBone
{
TBoneAuto = 0,
TBoneForce = 1, // Force this node to be part of a skeleton
TBoneRoot = 2, // Make this node the skeleton root, it will be exported using the scene name. There can only be one (editor should keep track and disable)
};
struct CNodeMeta
{
CNodeMeta();
bool AddToIG; // Add this node to an instance group
TMesh ExportMesh;
TBone ExportBone;
std::string InstanceShape;
std::string InstanceName;
std::string InstanceGroupName;
void serial(NLMISC::IStream &s);
};
enum TSkel
{
TSkelLocal = 0, // Export smallest skeleton possible from connected bones
TSkelRoot = 1, // Export skeleton from a direct child node in the scene root node
TSkelFull = 2, // Include all connected child nodes in the skeleton
};
struct CSceneMeta
{
CSceneMeta();
bool DefaultInstanceGroup; // Export a default instance group from nodes the scene that do not have an instance group set
TSkel SkeletonMode;
std::map<NLMISC::CSString, CNodeMeta> Nodes;
const std::string &metaFilePath() const { return m_MetaFilePath; }
bool load(const std::string &filePath);
void save();
void serial(NLMISC::IStream &s);
private:
std::string m_MetaFilePath;
};
/* end of file */