Hymn to Beauty
C++ 3D Engine
ScriptManager.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <vector>
5#include <map>
6#include <set>
7#include "../Entity/ComponentContainer.hpp"
8
9class asIScriptEngine;
10class asIScriptContext;
11class asITypeInfo;
12class World;
13class Entity;
14class ScriptFile;
15namespace Component {
16class Script;
17}
18namespace Utility {
19class Window;
20}
21
24 friend class Hub;
25
26 public:
28
32 int BuildScript(ScriptFile* script);
33
35 void BuildAllScripts();
36
38
42
44
47 void FillFunctionVector(ScriptFile* scriptFile);
48
50
54 void Update(World& world, float deltaTime);
55
57
61 void RegisterUpdate(Entity* entity);
62
64 void RegisterInput();
65
67
72 void SendMessage(Entity* recipient, Entity* sender, int type);
73
75
79
81
85
87
90 const std::vector<Component::Script*>& GetScripts() const;
91
94
96
100 void ExecuteScriptMethod(const Entity* entity, const std::string& method);
101
104
107
110 const std::vector<Entity*>& GetUpdateEntities();
111
112 private:
113 struct Message {
114 Entity* recipient;
115 Entity* sender;
116 int type;
117 };
118
119 explicit ScriptManager(Utility::Window* window);
121 ScriptManager(ScriptManager const&) = delete;
122 void operator=(ScriptManager const&) = delete;
123
124 void CreateInstance(Component::Script* script);
125 asIScriptContext* CreateContext();
126 void CallMessageReceived(const Message& message);
127 void CallUpdate(Entity* entity, float deltaTime);
128 void LoadScriptFile(const char* fileName, std::string& script);
129 void ExecuteCall(asIScriptContext* context, const std::string& scriptName);
130 asITypeInfo* GetClass(const std::string& moduleName, const std::string& className);
131
132 bool IsIntersect(Entity* checker, Entity* camera) const;
133
134 asIScriptEngine* engine;
135
136 std::vector<Entity*> updateEntities;
137 std::vector<Message> messages;
138
139 void GetBreakpoints(const ScriptFile* script);
140 void ClearBreakpoints();
141 std::map<std::string, std::set<int>> breakpoints;
142
144
145 Utility::Window* window;
146};
Component controlled by a script.
Definition: Script.hpp:13
Stores components.
Definition: ComponentContainer.hpp:7
Entity containing various components.
Definition: Entity.hpp:16
Singleton class that holds all subsystems.
Definition: Managers.hpp:16
Information about a file containing a script.
Definition: ScriptFile.hpp:8
Handles scripting.
Definition: ScriptManager.hpp:23
const std::vector< Component::Script * > & GetScripts() const
Get all script components.
Definition: ScriptManager.cpp:777
void FillFunctionVector(ScriptFile *scriptFile)
Fetches the functions from the script and fills the scriptfiles vector.
Definition: ScriptManager.cpp:651
Component::Script * CreateScript()
Create script component.
Definition: ScriptManager.cpp:769
void FillPropertyMap(Component::Script *script)
Fetches the properties from the script and fills the map.
Definition: ScriptManager.cpp:598
int GetStringDeclarationID()
Used to get the string identifier used to check if a property is a string.
Definition: ScriptManager.cpp:773
const std::vector< Entity * > & GetUpdateEntities()
Definition: ScriptManager.cpp:965
void ExecuteScriptMethod(const Entity *entity, const std::string &method)
Execute a method on a script.
Definition: ScriptManager.cpp:785
void Update(World &world, float deltaTime)
Update all script entities in the game world.
Definition: ScriptManager.cpp:666
int BuildScript(ScriptFile *script)
Build a script that can later be run.
Definition: ScriptManager.cpp:489
void RegisterUpdate(Entity *entity)
Register an entity to recieve update callbacks.
Definition: ScriptManager.cpp:724
void ClearKilledComponents()
Remove all killed components.
Definition: ScriptManager.cpp:781
void RegisterInput()
Register the input enum.
Definition: ScriptManager.cpp:728
void BuildAllScripts()
Build all scripts in the hymn.
Definition: ScriptManager.cpp:523
Entity * currentEntity
The entity currently being executed.
Definition: ScriptManager.hpp:103
void SendMessage(Entity *recipient, Entity *sender, int type)
Send a message to an entity.
Definition: ScriptManager.cpp:761
Definition: Window.hpp:14
The game world containing all entities.
Definition: World.hpp:14
Definition: BoxShapeEditor.hpp:5
Definition: ResourceView.hpp:12