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
"
9
#include "
framework/components/componentSystem.h
"
10
#include "
rigidBodyComponent.h
"
11
#include "
rigidBodyComponentData.h
"
12
13
namespace
visutwin::canvas
14
{
15
struct
RaycastResult
16
{
17
Entity
*
entity
=
nullptr
;
18
CollisionComponent
*
collision
=
nullptr
;
19
RigidBodyComponent
*
rigidbody
=
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
:
28
RigidBodyComponentSystem
(
Engine
*
engine
) :
ComponentSystem
(
engine
,
"rigidbody"
) {}
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
}
visutwin::canvas::CollisionComponent
Definition
collisionComponent.h:18
visutwin::canvas::ComponentSystem< RigidBodyComponent, RigidBodyComponentData >::ComponentSystem
ComponentSystem(Engine *engine, const std::string &id)
Definition
componentSystem.h:42
visutwin::canvas::Engine
Central application orchestrator managing scenes, rendering, input, and resource loading.
Definition
engine.h:38
visutwin::canvas::Entity
ECS entity — a GraphNode that hosts components defining its behavior.
Definition
entity.h:32
visutwin::canvas::IComponentSystem::engine
Engine * engine() const
Definition
componentSystem.h:27
visutwin::canvas::RigidBodyComponent
Definition
rigidBodyComponent.h:23
visutwin::canvas::RigidBodyComponentSystem::raycastFirst
std::optional< RaycastResult > raycastFirst(const Vector3 &start, const Vector3 &end) const
Definition
rigidBodyComponentSystem.cpp:240
visutwin::canvas::RigidBodyComponentSystem::RigidBodyComponentSystem
RigidBodyComponentSystem(Engine *engine)
Definition
rigidBodyComponentSystem.h:28
visutwin::canvas::RigidBodyComponentSystem::raycastAll
std::vector< RaycastResult > raycastAll(const Vector3 &start, const Vector3 &end) const
Definition
rigidBodyComponentSystem.cpp:249
componentSystem.h
visutwin::canvas
Definition
eventHandler.cpp:9
rigidBodyComponent.h
rigidBodyComponentData.h
visutwin::canvas::RaycastResult
Definition
rigidBodyComponentSystem.h:16
visutwin::canvas::RaycastResult::point
Vector3 point
Definition
rigidBodyComponentSystem.h:20
visutwin::canvas::RaycastResult::normal
Vector3 normal
Definition
rigidBodyComponentSystem.h:21
visutwin::canvas::RaycastResult::entity
Entity * entity
Definition
rigidBodyComponentSystem.h:17
visutwin::canvas::RaycastResult::hitFraction
float hitFraction
Definition
rigidBodyComponentSystem.h:22
visutwin::canvas::RaycastResult::rigidbody
RigidBodyComponent * rigidbody
Definition
rigidBodyComponentSystem.h:19
visutwin::canvas::RaycastResult::collision
CollisionComponent * collision
Definition
rigidBodyComponentSystem.h:18
visutwin::canvas::Vector3
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.
Definition
vector3.h:29
vector3.h
framework
components
rigidbody
rigidBodyComponentSystem.h
Generated by
1.16.1