VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
batch.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 07.03.2026.
5//
6//
7//
8#pragma once
9
10#include <memory>
11#include <vector>
12
13#include "batchGroup.h"
14#include "skinBatchInstance.h"
15#include "scene/graphNode.h"
16#include "scene/mesh.h"
17#include "scene/meshInstance.h"
21
22namespace visutwin::canvas
23{
34 class Batch
35 {
36 public:
39
41 bool dynamic = false;
42
44 std::vector<MeshInstance*> origMeshInstances;
45
47 std::unique_ptr<MeshInstance> meshInstance;
48
51 std::unique_ptr<SkinBatchInstance> skinBatchInstance;
52
54 std::shared_ptr<Mesh> mesh;
55 std::shared_ptr<VertexBuffer> vertexBuffer;
56 std::shared_ptr<IndexBuffer> indexBuffer;
57
61
65 {
66 if (origMeshInstances.empty() || !meshInstance) return;
67 BoundingBox aabb = origMeshInstances[0]->aabb();
68 for (size_t i = 1; i < origMeshInstances.size(); ++i) {
69 aabb.add(origMeshInstances[i]->aabb());
70 }
71 meshInstance->setCustomAabb(aabb);
72 }
73 };
74}
std::shared_ptr< VertexBuffer > vertexBuffer
Definition batch.h:55
std::shared_ptr< IndexBuffer > indexBuffer
Definition batch.h:56
std::vector< MeshInstance * > origMeshInstances
Definition batch.h:44
std::unique_ptr< MeshInstance > meshInstance
Definition batch.h:47
std::unique_ptr< SkinBatchInstance > skinBatchInstance
Definition batch.h:51
void updateBoundingBox()
Definition batch.h:64
std::shared_ptr< Mesh > mesh
Definition batch.h:54
Axis-Aligned Bounding Box defined by center and half-extents.
Definition boundingBox.h:21
void add(const BoundingBox &other)
Hierarchical scene graph node with local/world transforms and parent-child relationships.
Definition graphNode.h:28
static constexpr int NOID
Definition batchGroup.h:26