VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
rigidBodyComponentSystem.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3#pragma once
4
5#include <optional>
6#include <vector>
7
8#include "core/math/vector3.h"
10#include "rigidBodyComponent.h"
12
13namespace visutwin::canvas
14{
16 {
17 Entity* entity = nullptr;
20 Vector3 point = Vector3(0.0f, 0.0f, 0.0f);
21 Vector3 normal = Vector3(0.0f, 1.0f, 0.0f);
22 float hitFraction = 0.0f;
23 };
24
25 class RigidBodyComponentSystem : public ComponentSystem<RigidBodyComponent, RigidBodyComponentData>
26 {
27 public:
29
30 std::optional<RaycastResult> raycastFirst(const Vector3& start, const Vector3& end) const;
31 std::vector<RaycastResult> raycastAll(const Vector3& start, const Vector3& end) const;
32 };
33}
Central application orchestrator managing scenes, rendering, input, and resource loading.
Definition engine.h:38
ECS entity — a GraphNode that hosts components defining its behavior.
Definition entity.h:32
std::optional< RaycastResult > raycastFirst(const Vector3 &start, const Vector3 &end) const
std::vector< RaycastResult > raycastAll(const Vector3 &start, const Vector3 &end) const
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.
Definition vector3.h:29