VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
layer.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3//
4// Created by Arnis Lektauers on 11.09.2025.
5//
6#pragma once
7
8#include <algorithm>
9#include <string>
10#include <vector>
11
12#include "meshInstance.h"
13
14namespace visutwin::canvas
15{
21 class Layer
22 {
23 public:
24 Layer(const std::string& name, int id): _name(name), _id(id) {}
25
26 int id() const { return _id; }
27
28 const std::string& name() const { return _name; }
29
30 void addMeshInstances(const std::vector<MeshInstance*>& meshInstances)
31 {
32 for (auto* meshInstance : meshInstances) {
33 if (!meshInstance) {
34 continue;
35 }
36 if (std::find(_meshInstances.begin(), _meshInstances.end(), meshInstance) == _meshInstances.end()) {
37 _meshInstances.push_back(meshInstance);
38 }
39 }
40 }
41
42 void removeMeshInstances(const std::vector<MeshInstance*>& meshInstances)
43 {
44 for (auto* meshInstance : meshInstances) {
45 if (!meshInstance) {
46 continue;
47 }
48 _meshInstances.erase(std::remove(_meshInstances.begin(), _meshInstances.end(), meshInstance), _meshInstances.end());
49 }
50 }
51
52 const std::vector<MeshInstance*>& meshInstances() const { return _meshInstances; }
53
54 bool enabled() const { return _enabled; }
55 void setEnabled(const bool value) { _enabled = value; _dirtyComposition = true; }
56
57 bool clearColorBuffer() const { return _clearColorBuffer; }
58 void setClearColorBuffer(const bool value) { _clearColorBuffer = value; _dirtyComposition = true; }
59
60 bool clearDepthBuffer() const { return _clearDepthBuffer; }
61 void setClearDepthBuffer(const bool value) { _clearDepthBuffer = value; _dirtyComposition = true; }
62
63 bool clearStencilBuffer() const { return _clearStencilBuffer; }
64 void setClearStencilBuffer(const bool value) { _clearStencilBuffer = value; _dirtyComposition = true; }
65
66 bool dirtyComposition() const { return _dirtyComposition; }
67 void setDirtyComposition(const bool value) { _dirtyComposition = value; }
68
69 private:
70 int _id;
71
72 std::string _name;
73 std::vector<MeshInstance*> _meshInstances;
74 bool _enabled = true;
75 bool _clearColorBuffer = false;
76 bool _clearDepthBuffer = false;
77 bool _clearStencilBuffer = false;
78 bool _dirtyComposition = false;
79 };
80}
bool enabled() const
Definition layer.h:54
const std::string & name() const
Definition layer.h:28
int id() const
Definition layer.h:26
void setEnabled(const bool value)
Definition layer.h:55
void setClearDepthBuffer(const bool value)
Definition layer.h:61
bool dirtyComposition() const
Definition layer.h:66
void addMeshInstances(const std::vector< MeshInstance * > &meshInstances)
Definition layer.h:30
bool clearDepthBuffer() const
Definition layer.h:60
const std::vector< MeshInstance * > & meshInstances() const
Definition layer.h:52
void setClearStencilBuffer(const bool value)
Definition layer.h:64
Layer(const std::string &name, int id)
Definition layer.h:24
void removeMeshInstances(const std::vector< MeshInstance * > &meshInstances)
Definition layer.h:42
void setDirtyComposition(const bool value)
Definition layer.h:67
bool clearColorBuffer() const
Definition layer.h:57
bool clearStencilBuffer() const
Definition layer.h:63
void setClearColorBuffer(const bool value)
Definition layer.h:58