Skylicht Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsEngine
ICollisionObject.h
1
/*
2
!@
3
MIT License
4
5
Copyright (c) 2024 Skylicht Technology CO., LTD
6
7
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
8
(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
9
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
10
subject to the following conditions:
11
12
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
13
14
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
15
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
20
This file is part of the "Skylicht Engine".
21
https://github.com/skylicht-lab/skylicht-engine
22
!#
23
*/
24
25
#pragma once
26
27
#include "Components/CComponentSystem.h"
28
29
namespace
Skylicht
30
{
31
namespace
Physics
32
{
37
struct
SCollisionContactPoint
38
{
39
core::vector3df
PositionWorldOnA
;
40
core::vector3df
PositionWorldOnB
;
41
core::vector3df
NormalWorldOnB
;
42
};
43
62
class
ICollisionObject :
public
CComponentSystem
63
{
64
public
:
69
enum
ECollisionType
70
{ Unknown,
71
RigidBody,
72
Character
73
};
74
protected
:
75
ECollisionType
m_collisionType;
76
77
int
m_group;
78
int
m_filter;
79
80
public
:
81
ICollisionObject
();
82
83
virtual
~ICollisionObject
();
84
90
virtual
void
setCollisionGroupAndFilter
(
int
group,
int
filter);
91
97
std::function<void(ICollisionObject*, ICollisionObject*,
SCollisionContactPoint
*,
int
)>
OnCollision
;
98
103
inline
ECollisionType
getCollisionType
()
104
{
105
return
m_collisionType;
106
}
107
112
inline
int
getCollisionGroup
()
113
{
114
return
m_group;
115
}
116
121
inline
int
getCollisionFilter
()
122
{
123
return
m_filter;
124
}
125
};
126
}
127
}
Skylicht::Physics::ICollisionObject
Base interface for all objects that can participate in collisions.
Definition
ICollisionObject.h:63
Skylicht::Physics::ICollisionObject::getCollisionFilter
int getCollisionFilter()
Gets the collision filter bitmask.
Definition
ICollisionObject.h:121
Skylicht::Physics::ICollisionObject::OnCollision
std::function< void(ICollisionObject *, ICollisionObject *, SCollisionContactPoint *, int)> OnCollision
Callback function triggered when a collision occurs.
Definition
ICollisionObject.h:97
Skylicht::Physics::ICollisionObject::setCollisionGroupAndFilter
virtual void setCollisionGroupAndFilter(int group, int filter)
Sets the collision group and filter mask.
Skylicht::Physics::ICollisionObject::getCollisionGroup
int getCollisionGroup()
Gets the collision group bitmask.
Definition
ICollisionObject.h:112
Skylicht::Physics::ICollisionObject::getCollisionType
ECollisionType getCollisionType()
Gets the collision type.
Definition
ICollisionObject.h:103
Skylicht::Physics::ICollisionObject::ECollisionType
ECollisionType
Types of collision objects.
Definition
ICollisionObject.h:70
Skylicht
Everything in the Skylicht Engine. You can start by looking at the topics.
Definition
AudioDebugLog.h:29
Skylicht::Physics::SCollisionContactPoint
Data structure containing information about a collision contact point.
Definition
ICollisionObject.h:38
Skylicht::Physics::SCollisionContactPoint::PositionWorldOnB
core::vector3df PositionWorldOnB
Contact point on object B in world space.
Definition
ICollisionObject.h:40
Skylicht::Physics::SCollisionContactPoint::PositionWorldOnA
core::vector3df PositionWorldOnA
Contact point on object A in world space.
Definition
ICollisionObject.h:39
Skylicht::Physics::SCollisionContactPoint::NormalWorldOnB
core::vector3df NormalWorldOnB
Normal vector on object B at the contact point.
Definition
ICollisionObject.h:41
Generated by
1.17.0