Rigs of Rods 2026.01
Soft-body Physics Simulation
Loading...
Searching...
No Matches
ImGuiAngelscriptGeneric.cpp
Go to the documentation of this file.
1/*
2 This source file is part of Rigs of Rods
3 Copyright 2005-2012 Pierre-Michel Ricordel
4 Copyright 2007-2012 Thomas Fischer
5 Copyright 2013-2022 Petr Ohlidal
6
7 For more information, see http://www.rigsofrods.org/
8
9 Rigs of Rods is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License version 3, as
11 published by the Free Software Foundation.
12
13 Rigs of Rods is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
20*/
21
23
24#include "../../autowrapper/aswrappedcall.h"
25#include "AngelScriptBindings.h"
26#include "OgreImGui.h"
27#include "scriptarray/scriptarray.h"
29
30#include <angelscript.h>
31#include <Ogre.h>
32#include <string>
33
34using namespace AngelScript;
35using namespace Ogre;
36using namespace std;
37using namespace ImGuiAngelscriptWrappers;
38
39void RoR::RegisterImGuiGenericBindings(AngelScript::asIScriptEngine* engine)
40{
41 // NOTE: enums and the ImDrawList object type are registered in RegisterImGuiCommonBindings()
42
43 // ImDrawList object (global namespace)
44 engine->RegisterObjectMethod("ImDrawList", "void AddLine(const vector2&in p1, const vector2&in p2, const color&in col, float thickness = 1.f)", WRAP_OBJ_FIRST(ImDrawList_AddLine), asCALL_GENERIC);
45 engine->RegisterObjectMethod("ImDrawList", "void AddTriangle(const vector2&in p1, const vector2&in p2, const vector2&in p3, const color&in col, float thickness = 1.f)", WRAP_OBJ_FIRST(ImDrawList_AddTriangle), asCALL_GENERIC);
46 engine->RegisterObjectMethod("ImDrawList", "void AddTriangleFilled(const vector2&in p1, const vector2&in p2, const vector2&in p3, const color&in col)", WRAP_OBJ_FIRST(ImDrawList_AddTriangleFilled), asCALL_GENERIC);
47 engine->RegisterObjectMethod("ImDrawList", "void AddRect(const vector2&in p_min, const vector2&in p_max, const color&in col, float rounding = 0.0f, int rounding_corners = 15, float thickness = 1.f)", WRAP_OBJ_FIRST(ImDrawList_AddRect), asCALL_GENERIC);
48 engine->RegisterObjectMethod("ImDrawList", "void AddRectFilled(const vector2&in p_min, const vector2&in p_max, const color&in col, float rounding = 0.0f, int rounding_corners = 15)", WRAP_OBJ_FIRST(ImDrawList_AddRectFilled), asCALL_GENERIC);
49 engine->RegisterObjectMethod("ImDrawList", "void AddCircle(const vector2&in center, float radius, const color&in col, int num_segments = 12, float thickness = 1.f)", WRAP_OBJ_FIRST(ImDrawList_AddCircle), asCALL_GENERIC);
50 engine->RegisterObjectMethod("ImDrawList", "void AddCircleFilled(const vector2&in center, float radius, const color&in col, int num_segments = 12)", WRAP_OBJ_FIRST(ImDrawList_AddCircleFilled), asCALL_GENERIC);
51 engine->RegisterObjectMethod("ImDrawList", "void AddText(const vector2&in pos, const color&in col, const string&in text)", WRAP_OBJ_FIRST(ImDrawList_AddText), asCALL_GENERIC);
52 engine->RegisterObjectMethod("ImDrawList", "void AddImage(const Ogre::TexturePtr&in tex, const vector2&in p_min, const vector2&in p_max, const vector2&in uv_min, const vector2&in uv_max, const color&in col)", WRAP_OBJ_FIRST(ImDrawList_AddImage), asCALL_GENERIC);
53 // FUNCTIONS (namespace ImGui)
54 engine->SetDefaultNamespace("ImGui");
55
56 // > Windows
57 engine->RegisterGlobalFunction("bool Begin(const string&in, bool&inout, int=0)", WRAP_FN(ImGui_Begin), asCALL_GENERIC);
58 engine->RegisterGlobalFunction("void End()", WRAP_FN_PR(ImGui::End, (), void), asCALL_GENERIC);
59
60 // > Child windows
61 engine->RegisterGlobalFunction("bool BeginChild(const string&in, const vector2&in=vector2(0,0), bool=false, int=0)", WRAP_FN(ImGui_BeginChild), asCALL_GENERIC);
62 engine->RegisterGlobalFunction("bool BeginChild(uint, const vector2&in=vector2(0,0), bool=false, int=0)", WRAP_FN(ImGui_BeginChildById), asCALL_GENERIC);
63 engine->RegisterGlobalFunction("void EndChild()", WRAP_FN_PR(ImGui::EndChild, (), void), asCALL_GENERIC);
64 engine->RegisterGlobalFunction("ImDrawList@ GetWindowDrawList()", WRAP_FN_PR(ImGui::GetWindowDrawList, (), ImDrawList*), asCALL_GENERIC);
65 engine->RegisterGlobalFunction("void PushStyleVar(int index, float val)", WRAP_FN(ImGui_PushStyleVarFloat), asCALL_GENERIC);
66 engine->RegisterGlobalFunction("void PushStyleVar(int index, const vector2&in val)", WRAP_FN(ImGui_PushStyleVarVector2), asCALL_GENERIC);
67 engine->RegisterGlobalFunction("void PopStyleVar(int count = 1)", WRAP_FN_PR(ImGui::PopStyleVar, (int), void), asCALL_GENERIC);
68 engine->RegisterGlobalFunction("void PushStyleColor(int index, const color&in color)", WRAP_FN(ImGui_PushStyleColor), asCALL_GENERIC);
69 engine->RegisterGlobalFunction("void PopStyleColor(int count = 1)", WRAP_FN_PR(ImGui::PopStyleColor, (int), void), asCALL_GENERIC);
70 engine->RegisterGlobalFunction("void SetNextItemWidth(float)", WRAP_FN_PR(ImGui::SetNextItemWidth, (float), void), asCALL_GENERIC);
71 engine->RegisterGlobalFunction("void SetNextItemOpen(bool, ImGuiCond)", WRAP_FN_PR(ImGui::SetNextItemOpen, (bool, int), void), asCALL_GENERIC);
72
73 engine->RegisterGlobalFunction("vector2 GetContentRegionMax()", WRAP_FN(ImGui_GetContentRegionMax), asCALL_GENERIC);
74 engine->RegisterGlobalFunction("vector2 GetContentRegionAvail()", WRAP_FN(ImGui_GetContentRegionAvail), asCALL_GENERIC);
75 engine->RegisterGlobalFunction("float GetContentRegionAvailWidth()", WRAP_FN_PR(ImGui::GetContentRegionAvailWidth, (), float), asCALL_GENERIC);
76 engine->RegisterGlobalFunction("vector2 GetWindowContentRegionMin()", WRAP_FN(ImGui_GetWindowContentRegionMin), asCALL_GENERIC);
77 engine->RegisterGlobalFunction("vector2 GetWindowContentRegionMax()", WRAP_FN(ImGui_GetWindowContentRegionMax), asCALL_GENERIC);
78 engine->RegisterGlobalFunction("float GetWindowRegionWidth()", WRAP_FN_PR(ImGui::GetWindowContentRegionWidth, (), float), asCALL_GENERIC);
79
80 engine->RegisterGlobalFunction("vector2 GetWindowPos()", WRAP_FN(ImGui_GetWindowPos), asCALL_GENERIC);
81 engine->RegisterGlobalFunction("vector2 GetWindowSize()", WRAP_FN(ImGui_GetWindowSize), asCALL_GENERIC);
82 engine->RegisterGlobalFunction("float GetWindowWidth()", WRAP_FN_PR(ImGui::GetWindowWidth, (), float), asCALL_GENERIC);
83 engine->RegisterGlobalFunction("float GetWindowHeight()", WRAP_FN_PR(ImGui::GetWindowHeight, (), float), asCALL_GENERIC);
84 engine->RegisterGlobalFunction("bool IsWindowCollapsed()", WRAP_FN_PR(ImGui::IsWindowCollapsed, (), bool), asCALL_GENERIC);
85 engine->RegisterGlobalFunction("void SetWindowFontScale(float)", WRAP_FN_PR(ImGui::SetWindowFontScale, (float), void), asCALL_GENERIC);
86
87 engine->RegisterGlobalFunction("void SetNextWindowPos(vector2, int=0, vector2=vector2(0,0))", WRAP_FN(ImGui_SetNextWindowPos), asCALL_GENERIC);
88 engine->RegisterGlobalFunction("void SetNextWindowSize(vector2)", WRAP_FN(ImGui_SetNextWindowSize), asCALL_GENERIC);
89 engine->RegisterGlobalFunction("void SetNextWindowContentSize(vector2)", WRAP_FN(ImGui_SetNextWindowContentSize), asCALL_GENERIC);
90 engine->RegisterGlobalFunction("void SetNextWindowCollapsed(bool)", WRAP_FN(ImGui_SetNextWindowCollapsed), asCALL_GENERIC);
91 engine->RegisterGlobalFunction("void SetNextWindowFocus()", WRAP_FN(ImGui_SetNextWindowFocus), asCALL_GENERIC);
92 engine->RegisterGlobalFunction("void SetWindowPos(vector2)", WRAP_FN(ImGui_SetWindowPos), asCALL_GENERIC);
93 engine->RegisterGlobalFunction("void SetWindowSize(vector2)", WRAP_FN(ImGui_SetWindowSize), asCALL_GENERIC);
94 engine->RegisterGlobalFunction("void SetWindowCollapsed(bool)", WRAP_FN(ImGui_SetWindowCollapsed), asCALL_GENERIC);
95 engine->RegisterGlobalFunction("void SetWindowFocus()", WRAP_FN(ImGui_SetWindowFocus), asCALL_GENERIC);
96
97 engine->RegisterGlobalFunction("void SetWindowPos(const string&in, vector2)", WRAP_FN(ImGui_SetWindowPosByName), asCALL_GENERIC);
98 engine->RegisterGlobalFunction("void SetWindowSize(const string&in, vector2)", WRAP_FN(ImGui_SetWindowSizeByName), asCALL_GENERIC);
99 engine->RegisterGlobalFunction("void SetWindowCollapsed(const string&in, bool)", WRAP_FN(ImGui_SetWindowCollapsedByName), asCALL_GENERIC);
100 engine->RegisterGlobalFunction("void SetWindowFocus(const string&in)", WRAP_FN(ImGui_SetWindowFocusByName), asCALL_GENERIC);
101
102 engine->RegisterGlobalFunction("float GetScrollX()", WRAP_FN_PR(ImGui::GetScrollX, (), float), asCALL_GENERIC);
103 engine->RegisterGlobalFunction("float GetScrollY()", WRAP_FN_PR(ImGui::GetScrollY, (), float), asCALL_GENERIC);
104 engine->RegisterGlobalFunction("float GetScrollMaxX()", WRAP_FN_PR(ImGui::GetScrollMaxX, (), float), asCALL_GENERIC);
105 engine->RegisterGlobalFunction("float GetScrollMaxY()", WRAP_FN_PR(ImGui::GetScrollMaxY, (), float), asCALL_GENERIC);
106 engine->RegisterGlobalFunction("void SetScrollX(float)", WRAP_FN_PR(ImGui::SetScrollX, (float), void), asCALL_GENERIC);
107 engine->RegisterGlobalFunction("void SetScrollY(float)", WRAP_FN_PR(ImGui::SetScrollY, (float), void), asCALL_GENERIC);
108 engine->RegisterGlobalFunction("void SetScrollHere(float = 0.5f)", WRAP_FN_PR(ImGui::SetScrollHere, (float), void), asCALL_GENERIC);
109 engine->RegisterGlobalFunction("void SetScrollFromPosY(float, float = 0.5f)", WRAP_FN_PR(ImGui::SetScrollFromPosY, (float,float), void), asCALL_GENERIC);
110
111 engine->RegisterGlobalFunction("void Separator()", WRAP_FN_PR(ImGui::Separator, (), void), asCALL_GENERIC);
112 engine->RegisterGlobalFunction("void SameLine(float = 0.0f, float = -1.0f)", WRAP_FN_PR(ImGui::SameLine, (float,float), void), asCALL_GENERIC);
113 engine->RegisterGlobalFunction("void NewLine()", WRAP_FN_PR(ImGui::NewLine, (), void), asCALL_GENERIC);
114 engine->RegisterGlobalFunction("void Spacing()", WRAP_FN_PR(ImGui::Spacing, (), void), asCALL_GENERIC);
115 engine->RegisterGlobalFunction("void Dummy(vector2)", WRAP_FN(ImGui_Dummy), asCALL_GENERIC);
116 engine->RegisterGlobalFunction("void Indent(float = 0.0f)", WRAP_FN_PR(ImGui::Indent, (float), void), asCALL_GENERIC);
117 engine->RegisterGlobalFunction("void Unindent(float = 0.0f)", WRAP_FN_PR(ImGui::Unindent, (float), void), asCALL_GENERIC);
118 engine->RegisterGlobalFunction("void BeginGroup()", WRAP_FN_PR(ImGui::BeginGroup, (), void), asCALL_GENERIC);
119 engine->RegisterGlobalFunction("void EndGroup()", WRAP_FN_PR(ImGui::EndGroup, (), void), asCALL_GENERIC);
120 engine->RegisterGlobalFunction("vector2 GetCursorPos()", WRAP_FN(ImGui_GetCursorPos), asCALL_GENERIC);
121 engine->RegisterGlobalFunction("float GetCursorPosX()", WRAP_FN_PR(ImGui::GetCursorPosX, (), float), asCALL_GENERIC);
122 engine->RegisterGlobalFunction("float GetCursorPosY()", WRAP_FN_PR(ImGui::GetCursorPosY, (), float), asCALL_GENERIC);
123 engine->RegisterGlobalFunction("void SetCursorPos(vector2)", WRAP_FN(ImGui_SetCursorPos), asCALL_GENERIC);
124 engine->RegisterGlobalFunction("void SetCursorPosX(float)", WRAP_FN_PR(ImGui::SetCursorPosX, (float), void), asCALL_GENERIC);
125 engine->RegisterGlobalFunction("void SetCursorPosY(float)", WRAP_FN_PR(ImGui::SetCursorPosY, (float), void), asCALL_GENERIC);
126 engine->RegisterGlobalFunction("vector2 GetCursorStartPos()", WRAP_FN(ImGui_GetCursorStartPos), asCALL_GENERIC);
127 engine->RegisterGlobalFunction("vector2 GetCursorScreenPos()", WRAP_FN(ImGui_GetCursorScreenPos), asCALL_GENERIC);
128 engine->RegisterGlobalFunction("void SetCursorScreenPos(vector2)", WRAP_FN(ImGui_SetCursorScreenPos), asCALL_GENERIC);
129 engine->RegisterGlobalFunction("void AlignTextToFramePadding()", WRAP_FN_PR(ImGui::AlignTextToFramePadding, (), void), asCALL_GENERIC);
130 engine->RegisterGlobalFunction("float GetTextLineHeight()", WRAP_FN_PR(ImGui::GetTextLineHeight, (), float), asCALL_GENERIC);
131 engine->RegisterGlobalFunction("float GetTextLineHeightWithSpacing()", WRAP_FN_PR(ImGui::GetTextLineHeightWithSpacing, (), float), asCALL_GENERIC);
132
133 // Columns (considered legacy in latest versions - superseded by Tables!)
134 engine->RegisterGlobalFunction("void Columns(int = 1, const string&in = string(), bool = true)", WRAP_FN(ImGui_Columns), asCALL_GENERIC);
135 engine->RegisterGlobalFunction("void NextColumn()", WRAP_FN(ImGui_NextColumn), asCALL_GENERIC);
136 engine->RegisterGlobalFunction("int GetColumnIndex()", WRAP_FN(ImGui_GetColumnIndex), asCALL_GENERIC);
137 engine->RegisterGlobalFunction("float GetColumnWidth(int = -1)", WRAP_FN(ImGui_GetColumnWidth), asCALL_GENERIC);
138 engine->RegisterGlobalFunction("float GetColumnOffset(int = -1)", WRAP_FN(ImGui_GetColumnOffset), asCALL_GENERIC);
139 engine->RegisterGlobalFunction("void SetColumnOffset(int, float)", WRAP_FN(ImGui_SetColumnOffset), asCALL_GENERIC);
140 engine->RegisterGlobalFunction("int GetColumnsCount()", WRAP_FN(ImGui_GetColumnsCount), asCALL_GENERIC);
141
142 // Tab bars, tabs
143 engine->RegisterGlobalFunction("bool BeginTabBar(const string&in, int = 0)", WRAP_FN(ImGui_BeginTabBar), asCALL_GENERIC);
144 engine->RegisterGlobalFunction("void EndTabBar()", WRAP_FN(ImGui::EndTabBar), asCALL_GENERIC);
145 // BeginTabItem() without X close button.
146 engine->RegisterGlobalFunction("bool BeginTabItem(const string&in, int = 0)", WRAP_FN(ImGui_BeginTabItem), asCALL_GENERIC);
147 // BeginTabItem() with X close button.
148 engine->RegisterGlobalFunction("bool BeginTabItem(const string&in, bool&inout, int = 0)", WRAP_FN(ImGui_BeginTabItemClosable), asCALL_GENERIC);
149 engine->RegisterGlobalFunction("void EndTabItem()", WRAP_FN(ImGui::EndTabItem), asCALL_GENERIC);
150 engine->RegisterGlobalFunction("void SetTabItemClosed(const string&in)", WRAP_FN(ImGui_SetTabItemClosed), asCALL_GENERIC);
151
152 // ID scopes
153 engine->RegisterGlobalFunction("void PushID(const string&in)", WRAP_FN(ImGui_PushIDStr), asCALL_GENERIC);
154 engine->RegisterGlobalFunction("void PushID(int int_id)", WRAP_FN(ImGui_PushIDInt), asCALL_GENERIC);
155 engine->RegisterGlobalFunction("void PopID()", WRAP_FN_PR(ImGui::PopID, (), void), asCALL_GENERIC);
156 engine->RegisterGlobalFunction("uint GetID(const string&in)", WRAP_FN(ImGui_GetID), asCALL_GENERIC);
157
158 // Widgets: Text
159 engine->RegisterGlobalFunction("void Text(const string&in)", WRAP_FN(ImGui_Text), asCALL_GENERIC);
160 engine->RegisterGlobalFunction("void TextDisabled(const string&in)", WRAP_FN(ImGui_TextDisabled), asCALL_GENERIC);
161 engine->RegisterGlobalFunction("void TextColored(color col, const string&in)", WRAP_FN(ImGui_TextColored), asCALL_GENERIC);
162 engine->RegisterGlobalFunction("void TextWrapped(const string&in)", WRAP_FN(ImGui_TextWrapped), asCALL_GENERIC);
163 engine->RegisterGlobalFunction("void LabelText(const string&in, const string&in)", WRAP_FN(ImGui_LabelText), asCALL_GENERIC);
164 engine->RegisterGlobalFunction("void Bullet()", WRAP_FN_PR(ImGui::Bullet, (), void), asCALL_GENERIC);
165 engine->RegisterGlobalFunction("void BulletText(const string&in)", WRAP_FN(ImGui_BulletText), asCALL_GENERIC);
166
167 // Widgets: Main
168 engine->RegisterGlobalFunction("bool Button(const string&in, vector2 = vector2(0,0))", WRAP_FN(ImGui_Button), asCALL_GENERIC);
169 engine->RegisterGlobalFunction("bool SmallButton(const string&in)", WRAP_FN(ImGui_SmallButton), asCALL_GENERIC);
170 engine->RegisterGlobalFunction("bool InvisibleButton(const string&in, vector2)", WRAP_FN(ImGui_InvisibleButton), asCALL_GENERIC);
171 engine->RegisterGlobalFunction("void Image(const Ogre::TexturePtr&in, vector2)", WRAP_FN(ImGui_Image), asCALL_GENERIC);
172 engine->RegisterGlobalFunction("bool Checkbox(const string&in, bool&inout)", WRAP_FN(ImGui_Checkbox), asCALL_GENERIC);
173 engine->RegisterGlobalFunction("bool CheckboxFlags(const string&in, uint&inout, uint)", WRAP_FN(ImGui_CheckboxFlags), asCALL_GENERIC);
174 engine->RegisterGlobalFunction("bool RadioButton(const string&in, bool)", WRAP_FN(ImGui_RadioButton), asCALL_GENERIC);
175 engine->RegisterGlobalFunction("bool RadioButton(const string&in, int&inout, int)", WRAP_FN(ImGui_RadioButtonInt), asCALL_GENERIC);
176 engine->RegisterGlobalFunction("void ProgressBar(float, vector2=vector2(-1,0), const string&in = \"\")", WRAP_FN(ImGui_ProgressBar), asCALL_GENERIC);
177
178 // Widgets: Combo Box
179 // Widgets: Drags
180 engine->RegisterGlobalFunction("bool DragFloat(const string&in, float&inout, float = 1.0f, float = 0.0f, float = 0.0f)", WRAP_FN(ImGui_DragFloat), asCALL_GENERIC);
181 engine->RegisterGlobalFunction("bool DragFloat2(const string&in, vector2&inout)", WRAP_FN(ImGui_DragFloat2), asCALL_GENERIC);
182 engine->RegisterGlobalFunction("bool DragFloat3(const string&in, vector3&inout)", WRAP_FN(ImGui_DragFloat3), asCALL_GENERIC);
183 engine->RegisterGlobalFunction("bool DragFloatRange2(const string&in, float&inout, float&inout, float = 0.0f, float = 1.0f)", WRAP_FN(ImGui_DragFloatRange2), asCALL_GENERIC);
184 engine->RegisterGlobalFunction("bool DragIntRange2(const string&in, int&inout, int&inout, int, int)", WRAP_FN(ImGui_DragIntRange2), asCALL_GENERIC);
185
186 // Widgets: Input with Keyboard
187 engine->RegisterGlobalFunction("bool InputText(const string&in, string&inout)", WRAP_FN(ImGui_InputText), asCALL_GENERIC);
188 engine->RegisterGlobalFunction("bool InputTextMultiline(const string&in, string&inout, const vector2&in = vector2(0,0))", WRAP_FN(ImGui_InputTextMultiline), asCALL_GENERIC);
189 engine->RegisterGlobalFunction("bool InputFloat(const string&, float&inout)", WRAP_FN(ImGui_InputFloat), asCALL_GENERIC);
190 engine->RegisterGlobalFunction("bool InputFloat2(const string&, vector2&inout)", WRAP_FN(ImGui_InputFloat2), asCALL_GENERIC);
191 engine->RegisterGlobalFunction("bool InputFloat3(const string&, vector3&inout)", WRAP_FN(ImGui_InputFloat3), asCALL_GENERIC);
192 engine->RegisterGlobalFunction("bool InputInt(const string&, int&inout)", WRAP_FN(ImGui_InputInt), asCALL_GENERIC);
193
194 // Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard. manually input values aren't clamped, can go off-bounds)
195 engine->RegisterGlobalFunction("bool SliderFloat(const string&in, float&inout, float = 0.0f, float = 0.0f)", WRAP_FN(ImGui_SliderFloat), asCALL_GENERIC);
196 engine->RegisterGlobalFunction("bool SliderFloat2(const string&in, vector2&inout, float, float)", WRAP_FN(ImGui_SliderFloat2), asCALL_GENERIC);
197 engine->RegisterGlobalFunction("bool SliderFloat3(const string&in, vector3&inout, float, float)", WRAP_FN(ImGui_SliderFloat3), asCALL_GENERIC);
198 engine->RegisterGlobalFunction("bool SliderInt(const string&in, int&inout, int = 0, int = 0)", WRAP_FN(ImGui_SliderInt), asCALL_GENERIC);
199
200 // Widgets: Color Editor/Picker
201 engine->RegisterGlobalFunction("bool ColorEdit3(const string&in, color&inout)", WRAP_FN(ImGui_ColorEdit3), asCALL_GENERIC);
202 engine->RegisterGlobalFunction("bool ColorEdit4(const string&in, color&inout)", WRAP_FN(ImGui_ColorEdit4), asCALL_GENERIC);
203 engine->RegisterGlobalFunction("bool ColorButton(const string&in, color)", WRAP_FN(ImGui_ColorButton), asCALL_GENERIC);
204
205 // Widgets: Trees
206 engine->RegisterGlobalFunction("bool TreeNode(const string&in)", WRAP_FN(ImGui_TreeNode), asCALL_GENERIC);
207 engine->RegisterGlobalFunction("void TreePush(const string&in)", WRAP_FN(ImGui_TreePush), asCALL_GENERIC);
208 engine->RegisterGlobalFunction("void TreePop()", WRAP_FN_PR(ImGui::TreePop, (), void), asCALL_GENERIC);
209 engine->RegisterGlobalFunction("void TreeAdvanceToLabelPos()", WRAP_FN_PR(ImGui::TreeAdvanceToLabelPos, (), void), asCALL_GENERIC);
210 engine->RegisterGlobalFunction("float GetTreeNodeToLabelSpacing()", WRAP_FN_PR(ImGui::GetTreeNodeToLabelSpacing, (), float), asCALL_GENERIC);
211 engine->RegisterGlobalFunction("void SetNextTreeNodeOpen(bool)", WRAP_FN(ImGui_SetNextTreeNodeOpen), asCALL_GENERIC);
212 engine->RegisterGlobalFunction("bool CollapsingHeader(const string&in)", WRAP_FN(ImGui_CollapsingHeader), asCALL_GENERIC);
213 engine->RegisterGlobalFunction("bool CollapsingHeader(const string&in, bool&inout)", WRAP_FN(ImGui_CollapsingHeaderClosable), asCALL_GENERIC);
214
215 // Widgets: Selectable / Lists
216 engine->RegisterGlobalFunction("bool Selectable(const string&in, bool = false)", WRAP_FN(ImGui_Selectable), asCALL_GENERIC);
217 engine->RegisterGlobalFunction("bool ListBoxHeader(const string&in)", WRAP_FN(ImGui_ListBoxHeader), asCALL_GENERIC);
218
219 // Values
220 engine->RegisterGlobalFunction("void Value(const string&in, bool)", WRAP_FN(ImGui_ValueBool), asCALL_GENERIC);
221 engine->RegisterGlobalFunction("void Value(const string&in, int)", WRAP_FN(ImGui_ValueInt), asCALL_GENERIC);
222 engine->RegisterGlobalFunction("void Value(const string&in, uint)", WRAP_FN(ImGui_ValueUint), asCALL_GENERIC);
223 engine->RegisterGlobalFunction("void Value(const string&in, float)", WRAP_FN(ImGui_ValueFloat), asCALL_GENERIC);
224
225 // Tooltips
226 engine->RegisterGlobalFunction("void BeginTooltip()", WRAP_FN_PR(ImGui::BeginTooltip, (), void), asCALL_GENERIC);
227 engine->RegisterGlobalFunction("void EndTooltip()", WRAP_FN_PR(ImGui::EndTooltip, (), void), asCALL_GENERIC);
228 engine->RegisterGlobalFunction("void SetTooltip(const string&in)", WRAP_FN(ImGui_SetTooltip), asCALL_GENERIC);
229
230 // Menus
231 engine->RegisterGlobalFunction("bool BeginMainMenuBar()", WRAP_FN(ImGui_BeginMainMenuBar), asCALL_GENERIC);
232 engine->RegisterGlobalFunction("void EndMainMenuBar()", WRAP_FN(ImGui_EndMainMenuBar), asCALL_GENERIC);
233 engine->RegisterGlobalFunction("bool BeginMenuBar()", WRAP_FN(ImGui_BeginMenuBar), asCALL_GENERIC);
234 engine->RegisterGlobalFunction("void EndMenuBar()", WRAP_FN(ImGui_EndMenuBar), asCALL_GENERIC);
235 engine->RegisterGlobalFunction("bool BeginMenu(const string&in, bool = true)", WRAP_FN(ImGui_BeginMenu), asCALL_GENERIC);
236 engine->RegisterGlobalFunction("void EndMenu()", WRAP_FN(ImGui_EndMenu), asCALL_GENERIC);
237 engine->RegisterGlobalFunction("bool MenuItem(const string&in, const string&in = string(), bool = false, bool = true)", WRAP_FN(ImGui_MenuItem), asCALL_GENERIC);
238 engine->RegisterGlobalFunction("bool MenuItem(const string&in, const string&in, bool &inout, bool = true)", WRAP_FN(ImGui_MenuItemToggle), asCALL_GENERIC);
239
240 // Popups
241 engine->RegisterGlobalFunction("void OpenPopup(const string&in)", WRAP_FN(ImGui_OpenPopup), asCALL_GENERIC);
242 engine->RegisterGlobalFunction("bool BeginPopup(const string&in, int = 0)", WRAP_FN(ImGui_BeginPopup), asCALL_GENERIC);
243 engine->RegisterGlobalFunction("bool BeginPopupContextItem(const string&in = string(), int = 1)", WRAP_FN(ImGui_BeginPopupContextItem), asCALL_GENERIC);
244 engine->RegisterGlobalFunction("bool BeginPopupContextWindow(const string&in = string(), int = 1, bool = true)", WRAP_FN(ImGui_BeginPopupContextWindow), asCALL_GENERIC); // FIXME: update imgui! -- swapped args
245 engine->RegisterGlobalFunction("bool BeginPopupContextVoid(const string&in = string(), int = 1)", WRAP_FN(ImGui_BeginPopupContextVoid), asCALL_GENERIC);
246 engine->RegisterGlobalFunction("bool BeginPopupModal(const string&in, bool &inout = null, int = 0)", WRAP_FN(ImGui_BeginPopupModal), asCALL_GENERIC);
247 engine->RegisterGlobalFunction("void EndPopup()", WRAP_FN(ImGui_EndPopup), asCALL_GENERIC);
248 engine->RegisterGlobalFunction("void CloseCurrentPopup()", WRAP_FN(ImGui_CloseCurrentPopup), asCALL_GENERIC);
249
250 // Clip-rects
251 engine->RegisterGlobalFunction("void PushClipRect(const vector2&, const vector2&, bool)", WRAP_FN(ImGui_PushClipRect), asCALL_GENERIC);
252 engine->RegisterGlobalFunction("void PopClipRect()", WRAP_FN(ImGui_PopClipRect), asCALL_GENERIC);
253
254 // Focus
255 engine->RegisterGlobalFunction("void SetKeyboardFocusHere(int = 0)", WRAP_FN(ImGui_SetKeyboardFocusHere), asCALL_GENERIC);
256
257 // Utilities
258 engine->RegisterGlobalFunction("bool IsItemHovered(int = 0)", WRAP_FN(ImGui_IsItemHovered), asCALL_GENERIC); // TODO: update imgui -- flags omitted
259 engine->RegisterGlobalFunction("bool IsItemActive()", WRAP_FN(ImGui_IsItemActive), asCALL_GENERIC);
260 engine->RegisterGlobalFunction("bool IsItemClicked(int = 0)", WRAP_FN(ImGui_IsItemClicked), asCALL_GENERIC);
261 engine->RegisterGlobalFunction("bool IsItemVisible()", WRAP_FN(ImGui_IsItemVisible), asCALL_GENERIC);
262 engine->RegisterGlobalFunction("bool IsAnyItemHovered()", WRAP_FN(ImGui_IsAnyItemHovered), asCALL_GENERIC);
263 engine->RegisterGlobalFunction("bool IsAnyItemActive()", WRAP_FN(ImGui_IsAnyItemActive), asCALL_GENERIC);
264 engine->RegisterGlobalFunction("vector2 GetItemRectMin()", WRAP_FN(ImGui_GetItemRectMin), asCALL_GENERIC);
265 engine->RegisterGlobalFunction("vector2 GetItemRectMax()", WRAP_FN(ImGui_GetItemRectMax), asCALL_GENERIC);
266 engine->RegisterGlobalFunction("vector2 GetItemRectSize()", WRAP_FN(ImGui_GetItemRectSize), asCALL_GENERIC);
267 engine->RegisterGlobalFunction("void SetItemAllowOverlap()", WRAP_FN(ImGui_SetItemAllowOverlap), asCALL_GENERIC);
268 engine->RegisterGlobalFunction("bool IsWindowFocused(int = 0)", WRAP_FN(ImGui_IsWindowFocused), asCALL_GENERIC); // TODO: update imgui -- flags omitted
269 engine->RegisterGlobalFunction("bool IsWindowHovered(int = 0)", WRAP_FN(ImGui_IsWindowHovered), asCALL_GENERIC); // TODO: update imgui -- flags omitted
270 engine->RegisterGlobalFunction("bool IsRectVisible(const vector2&)", WRAP_FN(ImGui_IsRectVisibleSize), asCALL_GENERIC);
271 engine->RegisterGlobalFunction("bool IsRectVisible(const vector2&, const vector2&)", WRAP_FN(ImGui_IsRectVisible), asCALL_GENERIC);
272 engine->RegisterGlobalFunction("float GetTime()", WRAP_FN(ImGui_GetTime), asCALL_GENERIC);
273 engine->RegisterGlobalFunction("int GetFrameCount()", WRAP_FN(ImGui_GetFrameCount), asCALL_GENERIC);
274
275 engine->RegisterGlobalFunction("vector2 CalcTextSize(const string&in, bool hide_text_after_double_hash = false, float wrap_width = -1.0f)", WRAP_FN(ImGui_CalcTextSize), asCALL_GENERIC);
276 engine->RegisterGlobalFunction("void CalcListClipping(int, float, int&inout, int&inout)", WRAP_FN(ImGui_CalcListClipping), asCALL_GENERIC);
277 engine->RegisterGlobalFunction("bool BeginChildFrame(uint, const vector2&, int = 0)", WRAP_FN(ImGui_BeginChildFrame), asCALL_GENERIC);
278 engine->RegisterGlobalFunction("void EndChildFrame()", WRAP_FN(ImGui_EndChildFrame), asCALL_GENERIC);
279
280 engine->RegisterGlobalFunction("int GetKeyIndex(int)", WRAP_FN(ImGui_GetKeyIndex), asCALL_GENERIC);
281 engine->RegisterGlobalFunction("bool IsKeyDown(int)", WRAP_FN(ImGui_IsKeyDown), asCALL_GENERIC);
282 engine->RegisterGlobalFunction("bool IsKeyPressed(int, bool = true)", WRAP_FN(ImGui_IsKeyPressed), asCALL_GENERIC);
283 engine->RegisterGlobalFunction("bool IsKeyReleased(int)", WRAP_FN(ImGui_IsKeyReleased), asCALL_GENERIC);
284 engine->RegisterGlobalFunction("bool IsMouseDown(int)", WRAP_FN(ImGui_IsMouseDown), asCALL_GENERIC);
285 engine->RegisterGlobalFunction("bool IsMouseClicked(int, bool = false)", WRAP_FN(ImGui_IsMouseClicked), asCALL_GENERIC);
286 engine->RegisterGlobalFunction("bool IsMouseDoubleClicked(int)", WRAP_FN(ImGui_IsMouseDoubleClicked), asCALL_GENERIC);
287 engine->RegisterGlobalFunction("bool IsMouseReleased(int)", WRAP_FN(ImGui_IsMouseReleased), asCALL_GENERIC);
288 engine->RegisterGlobalFunction("bool IsMouseDragging(int = 0, float = -1.0f)", WRAP_FN(ImGui_IsMouseDragging), asCALL_GENERIC);
289 engine->RegisterGlobalFunction("bool IsMouseHoveringRect(const vector2&in, const vector2&in, bool = true)", WRAP_FN(ImGui_IsMouseHoveringRect), asCALL_GENERIC);
290 engine->RegisterGlobalFunction("vector2 GetMousePos()", WRAP_FN(ImGui_GetMousePos), asCALL_GENERIC);
291 engine->RegisterGlobalFunction("vector2 GetMousePosOnOpeningCurrentPopup()", WRAP_FN(ImGui_GetMousePosOnOpeningCurrentPopup), asCALL_GENERIC);
292 engine->RegisterGlobalFunction("vector2 GetMouseDragDelta(int = 0, float = -1.0f)", WRAP_FN(ImGui_GetMouseDragDelta), asCALL_GENERIC);
293 engine->RegisterGlobalFunction("void ResetMouseDragDelta(int = 0)", WRAP_FN(ImGui_ResetMouseDragDelta), asCALL_GENERIC);
294 engine->RegisterGlobalFunction("int GetMouseCursor()", WRAP_FN(ImGui_GetMouseCursor), asCALL_GENERIC);
295 engine->RegisterGlobalFunction("void SetMouseCursor(int)", WRAP_FN(ImGui_SetMouseCursor), asCALL_GENERIC);
296 engine->RegisterGlobalFunction("void CaptureKeyboardFromApp(bool = true)", WRAP_FN(ImGui_CaptureKeyboardFromApp), asCALL_GENERIC);
297 engine->RegisterGlobalFunction("void CaptureMouseFromApp(bool = true)", WRAP_FN(ImGui_CaptureMouseFromApp), asCALL_GENERIC);
298
299 engine->RegisterGlobalFunction("string GetClipboardText()", WRAP_FN(ImGui_GetClipboardText), asCALL_GENERIC);
300 engine->RegisterGlobalFunction("void SetClipboardText(const string&in)", WRAP_FN(ImGui_SetClipboardText), asCALL_GENERIC);
301
302 // Data plotting - we wrap the 'getter func' variant to resemble the 'float*' variant.
303 engine->RegisterGlobalFunction("void PlotLines(const string&in label, array<float>&in values, int values_count, int values_offset = 0, const string&in overlay_text = string(), float scale_min = FLT_MAX, float scale_max = FLT_MAX, vector2 graph_size = vector2(0,0))", WRAP_FN(ImGui_PlotLines), asCALL_GENERIC);
304
305 engine->SetDefaultNamespace("");
306}
Helper/wrapper functions shared by native (ImGuiAngelscript.cpp) and generic (ImGuiAngelscriptGeneric...
#define WRAP_OBJ_FIRST(name)
#define WRAP_FN_PR(name, Parameters, ReturnType)
#define WRAP_FN(name)
void RegisterImGuiGenericBindings(AngelScript::asIScriptEngine *engine)
static void ImDrawList_AddRectFilled(ImDrawList *drawlist, Ogre::Vector2 const &p1, Ogre::Vector2 const &p2, Ogre::ColourValue const &col, float rounding, int rounding_corners)
static void ImGui_CalcListClipping(int a, float b, int &c, int &d)
static bool ImGui_ColorEdit4(const string &id, ColourValue &val)
static bool ImGui_BeginPopupContextVoid(const string &a, int b)
static void ImGui_SetCursorScreenPos(Vector2 v)
static void ImDrawList_AddTriangleFilled(ImDrawList *drawlist, Ogre::Vector2 const &p1, Ogre::Vector2 const &p2, Ogre::Vector2 const &p3, Ogre::ColourValue const &col)
static void ImGui_CaptureKeyboardFromApp(bool a)
static void ImGui_SetNextWindowSize(Vector2 v)
static bool ImGui_InputFloat(const string &id, float &val)
static void ImDrawList_AddRect(ImDrawList *drawlist, Ogre::Vector2 const &p1, Ogre::Vector2 const &p2, Ogre::ColourValue const &col, float rounding, int rounding_corners, float thickness)
static void ImDrawList_AddImage(ImDrawList *drawlist, Ogre::TexturePtr const &tex, Ogre::Vector2 const &p_min, Ogre::Vector2 const &p_max, Ogre::Vector2 const &uv_min, Ogre::Vector2 const &uv_max, Ogre::ColourValue const &col)
static Vector2 ImGui_GetWindowContentRegionMax()
static bool ImGui_SliderFloat(const string &n, float &v, float mn, float mx)
static bool ImGui_InputFloat3(const string &id, Vector3 &val)
static void ImGui_CaptureMouseFromApp(bool a)
static float ImGui_GetColumnWidth(int a)
static bool ImGui_BeginPopup(const string &a, int b)
static Vector2 ImGui_GetMouseDragDelta(int a, float b)
static void ImGui_SetCursorPos(Vector2 v)
static void ImGui_ValueInt(const string &n, int v)
static bool ImGui_ListBoxHeader(const string &n)
static bool ImGui_MenuItemToggle(const string &a, const string &b, bool &c, bool d)
static bool ImGui_InputTextMultiline(const string &id, string &val, const Ogre::Vector2 &size)
static void ImGui_TextColored(ColourValue c, const string &n)
static void ImGui_PushStyleColor(int index, Ogre::ColourValue const &col)
static bool ImGui_BeginChildFrame(unsigned a, const Vector2 &b, int c)
static bool ImGui_TreeNode(const string &id)
static void ImGui_LabelText(const string &l, const string &n)
static bool ImGui_SliderInt(const string &n, int &v, int mn, int mx)
static void ImGui_ValueUint(const string &n, unsigned v)
static void ImDrawList_AddCircleFilled(ImDrawList *drawlist, Ogre::Vector2 const &center, float radius, Ogre::ColourValue const &col, int num_segments)
static bool ImGui_DragIntRange2(const string &n, int &v0, int &v1, int mn, int mx)
static bool ImGui_BeginTabBar(const string &str_id, ImGuiTabBarFlags flags)
static void ImDrawList_AddText(ImDrawList *drawlist, Ogre::Vector2 const &pos, Ogre::ColourValue const &col, std::string const &text)
static bool ImGui_Begin(const string &name, bool &opened, int flags)
static bool ImGui_IsMouseHoveringRect(const Vector2 &a, const Vector2 &b, bool c)
static bool ImGui_BeginTabItem(const string &label, ImGuiTabItemFlags flags)
static void ImGui_TreePush(const string &id)
static void ImGui_SetWindowCollapsed(bool v)
static void ImGui_SetNextTreeNodeOpen(bool val)
static void ImGui_PushStyleVarFloat(int index, float val)
static bool ImGui_SliderFloat2(const string &n, Vector2 &v, float mn, float mx)
static Vector2 ImGui_CalcTextSize(const string &a, bool c, float d)
static void ImGui_Columns(int a, const string &b, bool c)
static bool ImGui_CollapsingHeaderClosable(const string &n, bool &v)
static void ImGui_SetNextWindowPos(Vector2 v, int flags, Vector2 pivot)
static bool ImGui_DragFloat3(const string &n, Vector3 &v)
static void ImGui_SetColumnOffset(int a, float b)
static bool ImGui_IsMouseClicked(int a, bool b)
static void ImGui_TextWrapped(const string &n)
static void ImDrawList_AddTriangle(ImDrawList *drawlist, Ogre::Vector2 const &p1, Ogre::Vector2 const &p2, Ogre::Vector2 const &p3, Ogre::ColourValue const &col, float thickness)
static void ImGui_TextDisabled(const string &n)
static void ImGui_SetWindowSizeByName(const string &name, Vector2 v)
static bool ImGui_IsMouseDragging(int a, float b)
static unsigned ImGui_GetID(const string &n)
static bool ImGui_SliderFloat3(const string &n, Vector3 &v, float mn, float mx)
static void ImGui_PushClipRect(const Vector2 &a, const Vector2 &b, bool c)
static void ImGui_SetWindowCollapsedByName(const string &name, bool v)
static bool ImGui_InputText(const string &id, string &val)
static void ImGui_SetNextWindowContentSize(Vector2 v)
static bool ImGui_InputFloat2(const string &id, Vector2 &val)
static void ImGui_PushStyleVarVector2(int index, const Ogre::Vector2 &val)
static void ImDrawList_AddLine(ImDrawList *drawlist, Ogre::Vector2 const &p1, Ogre::Vector2 const &p2, Ogre::ColourValue const &col, float thickness)
static void ImGui_SetMouseCursor(ImGuiMouseCursor a)
static bool ImGui_DragFloat(const string &n, float &v, float speed, float mn, float mx)
static void ImGui_SetKeyboardFocusHere(int a)
static bool ImGui_ColorEdit3(const string &id, ColourValue &val)
static void ImGui_ProgressBar(float v, Ogre::Vector2 size, const string &overlay)
static void ImGui_OpenPopup(const string &a)
static bool ImGui_BeginPopupContextWindow(const string &a, int b, bool c)
static bool ImGui_RadioButton(const string &n, bool v)
static bool ImGui_MenuItem(const string &a, const string &b, bool c, bool d)
static void ImGui_SetTooltip(const string &t)
static Vector2 ImGui_GetWindowContentRegionMin()
static bool ImGui_BeginPopupContextItem(const string &a, int b)
static void ImGui_SetWindowPosByName(const string &name, Vector2 v)
static bool ImGui_BeginPopupModal(const string &a, bool &b, int c)
static void ImGui_PlotLines(const string &label, CScriptArray *values, int values_count, int values_offset, const string &overlay_text, float scale_min, float scale_max, Vector2 graph_size)
static bool ImGui_Selectable(const string &n, bool v)
static void ImGui_SetWindowFocusByName(const string &v)
static bool ImGui_BeginChild(const string &name, const Ogre::Vector2 &size, bool border, int flags)
static bool ImGui_SmallButton(const string &n)
static bool ImGui_ColorButton(const string &id, ColourValue val)
static void ImGui_PushIDStr(const string &n)
static bool ImGui_CheckboxFlags(const string &n, unsigned &f, unsigned v)
static void ImGui_SetClipboardText(const string &a)
static void ImGui_BulletText(const string &n)
static void ImGui_SetWindowSize(Vector2 v)
static void ImDrawList_AddCircle(ImDrawList *drawlist, Ogre::Vector2 const &center, float radius, Ogre::ColourValue const &col, int num_segments, float thickness)
static bool ImGui_Button(const string &n, Vector2 v)
static float ImGui_GetColumnOffset(int a)
static bool ImGui_CollapsingHeader(const string &n)
static bool ImGui_IsRectVisibleSize(const Vector2 &a)
static void ImGui_SetWindowPos(Vector2 v)
static bool ImGui_InvisibleButton(const string &id, Vector2 v)
static bool ImGui_Checkbox(const string &n, bool &v)
static bool ImGui_IsKeyPressed(int a, bool b)
static bool ImGui_DragFloatRange2(const string &n, float &v0, float &v1, float mn, float mx)
static bool ImGui_IsMouseDoubleClicked(int a)
static bool ImGui_IsRectVisible(const Vector2 &a, const Vector2 &b)
static bool ImGui_RadioButtonInt(const string &n, int &v, int vv)
static void ImGui_Image(Ogre::TexturePtr const &tex, Vector2 v)
static void ImGui_ResetMouseDragDelta(int a)
static bool ImGui_InputInt(const string &id, int &val)
static void ImGui_ValueBool(const string &n, bool v)
static void ImGui_Text(const string &n)
static Vector2 ImGui_GetMousePosOnOpeningCurrentPopup()
static void ImGui_SetNextWindowCollapsed(bool v)
static void ImGui_Dummy(Vector2 v)
static void ImGui_ValueFloat(const string &n, float v)
static bool ImGui_BeginTabItemClosable(const string &label, bool &p_open, ImGuiTabItemFlags flags)
static void ImGui_SetTabItemClosed(const string &tab_or_docked_window_label)
static bool ImGui_BeginChildById(ImGuiID id, const Ogre::Vector2 &size, bool border, int flags)
static bool ImGui_DragFloat2(const string &n, Vector2 &v)
static bool ImGui_BeginMenu(const string &a, bool b)