MeshLib C++ Docs
Loading...
Searching...
No Matches
MRSceneRoot.h
Go to the documentation of this file.
1#pragma once
2#include "MRMeshFwd.h"
3#include "MRObject.h"
4#include <memory>
5
6namespace MR
7{
8
11{
12public:
14 SceneRootObject( SceneRootObject&& ) noexcept = default;
15 SceneRootObject& operator = ( SceneRootObject&& ) noexcept = default;
18 constexpr static const char* TypeName() noexcept { return "RootObject"; }
19 constexpr static const char* RootName() noexcept { return "Root"; }
20 virtual std::string getClassName() const override { return "Root"; }
21 virtual std::string getClassNameInPlural() const override { return "Roots"; }
22 virtual const char* typeName() const override { return TypeName(); }
23 virtual void setAncillary( bool ) override { Object::setAncillary( false ); }
24 virtual bool select( bool ) override { return Object::select( false ); }
25 virtual void setName( std::string ) override { Object::setName( SceneRootObject::RootName() ); }
26 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
28 MRMESH_API std::shared_ptr<SceneRootObject> cloneRoot() const;
29protected:
30 SceneRootObject( const SceneRootObject& other ) = default;
31 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
32 MRMESH_API void deserializeFields_( const Json::Value& root ) override;
33};
34
37MRMESH_API std::shared_ptr<SceneRootObject> createRootFormObject( std::shared_ptr<Object> obj );
38
42{
43public:
44#ifndef MR_SCENEROOT_CONST
46 MRMESH_API static std::shared_ptr<SceneRootObject>& getSharedPtr();
47
48 MRMESH_API static void setScenePath( const std::filesystem::path& scenePath );
49#endif
51 MRMESH_API static std::shared_ptr<const SceneRootObject> constGetSharedPtr();
52
53 MRMESH_API static const std::filesystem::path& getScenePath();
54
55private:
56 static SceneRoot& instance_();
57 SceneRoot();
58
59 std::shared_ptr<SceneRootObject> root_;
60
62 std::filesystem::path scenePath_;
63};
64}
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:79
#define MRMESH_CLASS
Definition MRMesh/MRMeshFwd.h:83
named object in the data model
Definition MRObject.h:60
Object that is parent of all scene.
Definition MRSceneRoot.h:11
virtual std::string getClassNameInPlural() const override
return human readable name of subclass in plural form
Definition MRSceneRoot.h:21
static constexpr const char * RootName() noexcept
Definition MRSceneRoot.h:19
SceneRootObject(const SceneRootObject &other)=default
virtual void setName(std::string) override
Definition MRSceneRoot.h:25
virtual const char * typeName() const override
Definition MRSceneRoot.h:22
SceneRootObject(SceneRootObject &&) noexcept=default
virtual MRMESH_API std::shared_ptr< Object > clone() const override
clones current object only, without parent and/or children
virtual std::string getClassName() const override
return human readable name of subclass
Definition MRSceneRoot.h:20
MRMESH_API std::shared_ptr< SceneRootObject > cloneRoot() const
same as clone but returns correct type
MRMESH_API void deserializeFields_(const Json::Value &root) override
virtual bool select(bool) override
selects the object, returns true if value changed, otherwise returns false
Definition MRSceneRoot.h:24
MRMESH_API SceneRootObject()
virtual MRMESH_API void serializeFields_(Json::Value &root) const override
virtual void setAncillary(bool) override
Definition MRSceneRoot.h:23
static constexpr const char * TypeName() noexcept
Definition MRSceneRoot.h:18
Definition MRSceneRoot.h:42
static MRMESH_API std::shared_ptr< const SceneRootObject > constGetSharedPtr()
static MRMESH_API SceneRootObject & get()
static MRMESH_API const SceneRootObject & constGet()
static MRMESH_API std::shared_ptr< SceneRootObject > & getSharedPtr()
static MRMESH_API const std::filesystem::path & getScenePath()
static MRMESH_API void setScenePath(const std::filesystem::path &scenePath)
MRMESH_API std::shared_ptr< SceneRootObject > createRootFormObject(std::shared_ptr< Object > obj)
Definition MRObject.h:253