Physics Simulation & Visualization Tool
0.1
A C++ physics simulation engine with real-time 3D visualization
Loading...
Searching...
No Matches
SceneObjectOptions.h
Go to the documentation of this file.
1
#pragma once
2
#include <glm/glm.hpp>
3
#include <variant>
4
#include <functional>
5
6
#include "
physics/bounding/BoxCollider.h
"
7
8
class
ICollider;
9
10
struct
ObjectOptions
{
11
glm::vec3
position
{0.0f};
12
glm::vec3
scale
{1.0f};
13
glm::vec3
rotation
{0.0f};
14
};
15
16
struct
PointMassOptions
{
17
ObjectOptions
base
;
18
bool
isStatic
=
false
;
19
double
mass
= 1.0;
20
glm::vec3
velocity
= glm::vec3(0.0f);
21
22
PointMassOptions
() =
default
;
23
};
24
25
struct
RigidBodyOptions
{
26
ObjectOptions
base
;
27
std::function<std::unique_ptr<Physics::Bounding::ICollider>(
const
ObjectOptions
&)>
createCollider
;
28
bool
isStatic
=
false
;
29
double
mass
= 1.0;
30
glm::vec3
velocity
= glm::vec3(0.0f);
31
32
// Helpers for making colliders
33
static
RigidBodyOptions
Box
(
ObjectOptions
base
,
bool
isStatic
=
false
,
double
mass
= 1.0, glm::vec3
velocity
= glm::vec3(0.0f)) {
34
RigidBodyOptions
o;
35
o.
base
=
base
;
36
o.
mass
=
mass
;
37
o.
velocity
=
velocity
;
38
o.
isStatic
=
isStatic
;
39
40
// Collider will store as local transform
41
o.
createCollider
= [](
auto
const
& b) -> std::unique_ptr<Physics::Bounding::ICollider>{
42
(void)b;
43
return
std::make_unique<Physics::Bounding::BoxCollider>(
44
glm::vec3(0.0f),
45
glm::vec3(0.5f),
46
glm::quat(1.0f, 0.0f, 0.0f, 0.0f)
47
);
48
};
49
return
o;
50
}
51
};
52
53
using
CreationOptions
= std::variant<ObjectOptions, PointMassOptions, RigidBodyOptions>;
BoxCollider.h
ObjectOptions::rotation
glm::vec3 rotation
Definition
SceneObjectOptions.h:13
ObjectOptions::scale
glm::vec3 scale
Definition
SceneObjectOptions.h:12
ObjectOptions::position
glm::vec3 position
Definition
SceneObjectOptions.h:11
CreationOptions
std::variant< ObjectOptions, PointMassOptions, RigidBodyOptions > CreationOptions
Definition
SceneObjectOptions.h:53
ObjectOptions
Definition
SceneObjectOptions.h:10
PointMassOptions
Definition
SceneObjectOptions.h:16
PointMassOptions::PointMassOptions
PointMassOptions()=default
PointMassOptions::mass
double mass
Definition
SceneObjectOptions.h:19
PointMassOptions::isStatic
bool isStatic
Definition
SceneObjectOptions.h:18
PointMassOptions::velocity
glm::vec3 velocity
Definition
SceneObjectOptions.h:20
PointMassOptions::base
ObjectOptions base
Definition
SceneObjectOptions.h:17
RigidBodyOptions
Definition
SceneObjectOptions.h:25
RigidBodyOptions::isStatic
bool isStatic
Definition
SceneObjectOptions.h:28
RigidBodyOptions::mass
double mass
Definition
SceneObjectOptions.h:29
RigidBodyOptions::base
ObjectOptions base
Definition
SceneObjectOptions.h:26
RigidBodyOptions::createCollider
std::function< std::unique_ptr< Physics::Bounding::ICollider >(const ObjectOptions &)> createCollider
Definition
SceneObjectOptions.h:27
RigidBodyOptions::Box
static RigidBodyOptions Box(ObjectOptions base, bool isStatic=false, double mass=1.0, glm::vec3 velocity=glm::vec3(0.0f))
Definition
SceneObjectOptions.h:33
RigidBodyOptions::velocity
glm::vec3 velocity
Definition
SceneObjectOptions.h:30
src
graphics
core
SceneObjectOptions.h
Generated by
1.9.8