Just™ Game Engine
native_script.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 Konstanty Misiak
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#pragma once
9
10namespace jng {
11
12 class Event;
13 class Scene;
14
16 {
17 public:
18 explicit NativeScript() = default;
19 virtual ~NativeScript() = default;
20
21 virtual void onCreate() {}
22 virtual void onDestroy() {}
23 virtual void onUpdate(float /*dt*/) {}
24 virtual void onEvent(Event& /*event*/) {}
25 protected:
26 template<typename T>
27 T& getComponent() { return m_entity.getComponent<T>(); }
28
29 Entity createEntity(const std::string& name) { return m_entity.getScene()->createEntity(name); }
30 void destroyEntity(Entity entity) { return m_entity.getScene()->destroyEntity(entity); }
31 private:
32 Entity m_entity;
33
34 friend class Scene;
35 };
36
37} // namespace jng
Definition: entity.hpp:17
Scene * getScene()
Definition: entity.hpp:40
Component & getComponent()
Definition: entity.hpp:79
Definition: event.hpp:24
Definition: native_script.hpp:16
virtual void onCreate()
Definition: native_script.hpp:21
virtual ~NativeScript()=default
virtual void onDestroy()
Definition: native_script.hpp:22
T & getComponent()
Definition: native_script.hpp:27
virtual void onEvent(Event &)
Definition: native_script.hpp:24
Entity createEntity(const std::string &name)
Definition: native_script.hpp:29
virtual void onUpdate(float)
Definition: native_script.hpp:23
NativeScript()=default
void destroyEntity(Entity entity)
Definition: native_script.hpp:30
Definition: scene.hpp:23
Entity createEntity(const std::string &name)
Definition: scene.cpp:72
void destroyEntity(Entity entity)
Definition: scene.cpp:101
constexpr Code T
Definition: key_codes.hpp:56
Definition: base.hpp:11