sculpto
scene_object_behaviour.h
Go to the documentation of this file.
1/*!****************************************************************//*!*
2 * \file scene_object_behaviour.h
3 * \brief Application scene object behaviour class defintion module.
4 *
5 * \author Sabitov Kirill
6 * \date 03 July 2022
7 *********************************************************************/
8
9#pragma once
10
11#include "scene_object.h"
12
13namespace scl
14{
17 {
18 friend class scene;
19
20 private:
21 scene_object Object;
22
23 protected:
24 /*!*
25 * Application scene scriptable object creation virtual callback function.
26 * Called when object added to scene.
27 *
28 * \param None.
29 * \return None.
30 */
31 virtual void OnCreate() {}
32
33 /*!*
34 * Application scene scriptable object destroy virtual callback fucntion.
35 *
36 * \param None.
37 * \return None.
38 */
39 virtual void OnDestroy() {}
40
41 /*!*
42 * Application scene scriptable object update virtual callback function.
43 *
44 * \param None.
45 * \return None.
46 */
47 virtual void OnUpdate() {}
48
49 /*!*
50 * Check if object has specified component function.
51 *
52 * \tparam component to check.
53 * \param None.
54 * \return None.
55 */
56 template <typename T>
57 const bool HasComponent() const { return Object.HasComponent<T>(); }
58
59 /*!*
60 * Add component to object function.
61 *
62 * \tparam component to add to object.
63 * \param None.
64 * \return None.
65 */
66 template <typename T, typename... Targs>
67 void AddComponent(Targs&&... Args) { Object.AddComponent(std::forward<Targs>(Args)...); }
68
69 /*!*
70 * Get object component function.
71 *
72 * \tparam component to get from object.
73 * \param None.
74 * \return None.
75 */
76 template <typename T>
77 T &GetComponent() { return Object.GetComponent<T>(); }
78
79 /*!*
80 * Get object component function.
81 *
82 * \tparam component to get from object.
83 * \param None.
84 * \return None.
85 */
86 template <typename T>
87 const T &GetComponent() const { return Object.GetComponent<T>(); }
88
89 /*!*
90 * Remove component from scene object function.
91 *
92 * \tparam component to remove from object.
93 * \param None.
94 * \return None.
95 */
96 template <typename T>
97 void RemovetComponent() { Object.RemovetComponent<T>(); }
98 };
99}
void AddComponent(Targs &&... Args)
decltype(auto) AddComponent(Targs &&... Args)
Definition: scene_object.h:84
const bool HasComponent() const
Definition: scene_object.h:71
Definition: base.h:33
Application scene object class defintion module.