/
CollisionHandler.h
43 lines (35 loc) · 1.28 KB
/
CollisionHandler.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
* Copyright (c) 2018 Isetta
*/
#pragma once
#include <unordered_map>
#include "Core/IsettaAlias.h"
#include "Scene/Component.h"
namespace Isetta {
BEGIN_COMPONENT(CollisionHandler, Component, true)
private : std::unordered_map<U16, Action<class Collider*>> onEnter,
onStay,
onExit;
U16 handles;
static void SetColliderHandler(Transform* transform,
const Action<Collider* const>& action);
void OnCollisionEnter(class Collider* const col);
void OnCollisionStay(class Collider* const col);
void OnCollisionExit(class Collider* const col);
friend class CollisionsModule;
protected:
void OnCollisionCallback(
const std::unordered_map<U16, Action<class Collider*>>& callbacks,
class Collider* const col);
public:
CollisionHandler() = default;
void OnEnable() override;
void OnDisable() override;
U16 RegisterOnEnter(const Action<class Collider* const>& action);
void UnregisterOnEnter(U16 handle);
U16 RegisterOnStay(const Action<class Collider* const>& action);
void UnregisterOnStay(U16 handle);
U16 RegisterOnExit(const Action<class Collider* const>& action);
void UnregisterOnExit(U16 handle);
END_COMPONENT(CollisionHandler, Component)
} // namespace Isetta