MeshLib C++ Docs
Loading...
Searching...
No Matches
MRChangeSceneObjectsOrder.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRHistoryAction.h"
4#include "MRObject.h"
5#include "MRHeapBytes.h"
6
7namespace MR
8{
11
12
16{
17public:
19 ChangeSceneObjectsOrder( const std::string& name, const std::shared_ptr<Object>& obj ) :
20 obj_( obj ),
21 name_( name )
22 {
23 if ( obj_ )
24 childrenOrder_ = obj_->children();
25 }
26
27 virtual std::string name() const override { return name_; }
28
29 virtual void action( HistoryAction::Type ) override
30 {
31 if ( !obj_ )
32 return;
33
34 std::vector<std::shared_ptr<Object>> oldOrder = obj_->children();
35 for ( auto& child : oldOrder )
36 {
37 child->detachFromParent();
38 }
39 for ( const auto& child : childrenOrder_ )
40 {
41 if ( child->parent() )
42 child->detachFromParent();
43 obj_->addChild( child );
44 }
45 childrenOrder_ = std::move( oldOrder );
46 };
47
48 [[nodiscard]] virtual size_t heapBytes() const override
49 {
50 return MR::heapBytes( childrenOrder_ )
51 + name_.capacity();
52 }
53
54private:
55 std::vector<std::shared_ptr<Object>> childrenOrder_;
56 std::shared_ptr<Object> obj_;
57 std::string name_;
58};
59
60}
Definition MRChangeSceneObjectsOrder.h:16
Definition MRHistoryAction.h:15
size_t heapBytes(const BitSet &bs)
returns the amount of memory given BitSet occupies on heap
Definition MRBitSet.h:313
virtual void action(HistoryAction::Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeSceneObjectsOrder.h:29
Type
Definition MRHistoryAction.h:22
ChangeSceneObjectsOrder(const std::string &name, const std::shared_ptr< Object > &obj)
Constructed before change order.
Definition MRChangeSceneObjectsOrder.h:19
virtual std::string name() const override
Definition MRChangeSceneObjectsOrder.h:27
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeSceneObjectsOrder.h:48
only for bindings generation
Definition MRCameraOrientationPlugin.h:8