Rigs of Rods 2026.01
Soft-body Physics Simulation
Loading...
Searching...
No Matches
ImGuiAngelscriptCommon.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
22
24
25#include "AngelScriptBindings.h"
26#include "OgreImGui.h"
27
28#include <angelscript.h>
29
30using namespace AngelScript;
31
32void RoR::RegisterImGuiCommonBindings(AngelScript::asIScriptEngine* engine)
33{
34 // ENUMS (global namespace)
35 // PLEASE maintain the same order as in 'doc/angelscript/Script2Game/AngelImGui/AngelImGui_enums.h'
36
37 engine->RegisterEnum("ImGuiStyleVar");
38 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_Alpha", ImGuiStyleVar_Alpha); // float Alpha
39 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_WindowPadding", ImGuiStyleVar_WindowPadding); // ImVec2 WindowPadding
40 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_WindowRounding", ImGuiStyleVar_WindowRounding); // float WindowRounding
41 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_WindowBorderSize", ImGuiStyleVar_WindowBorderSize); // float WindowBorderSize
42 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_WindowMinSize", ImGuiStyleVar_WindowMinSize); // ImVec2 WindowMinSize
43 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_WindowTitleAlign", ImGuiStyleVar_WindowTitleAlign); // ImVec2 WindowTitleAlign
44 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_ChildRounding", ImGuiStyleVar_ChildRounding); // float ChildRounding
45 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_ChildBorderSize", ImGuiStyleVar_ChildBorderSize); // float ChildBorderSize
46 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_PopupRounding", ImGuiStyleVar_PopupRounding); // float PopupRounding
47 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_PopupBorderSize", ImGuiStyleVar_PopupBorderSize); // float PopupBorderSize
48 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_FramePadding", ImGuiStyleVar_FramePadding); // ImVec2 FramePadding
49 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_FrameRounding", ImGuiStyleVar_FrameRounding); // float FrameRounding
50 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_FrameBorderSize", ImGuiStyleVar_FrameBorderSize); // float FrameBorderSize
51 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_ItemSpacing", ImGuiStyleVar_ItemSpacing); // ImVec2 ItemSpacing
52 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_ItemInnerSpacing", ImGuiStyleVar_ItemInnerSpacing); // ImVec2 ItemInnerSpacing
53 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_IndentSpacing", ImGuiStyleVar_IndentSpacing); // float IndentSpacing
54 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_ScrollbarSize", ImGuiStyleVar_ScrollbarSize); // float ScrollbarSize
55 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_ScrollbarRounding", ImGuiStyleVar_ScrollbarRounding); // float ScrollbarRounding
56 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_GrabMinSize", ImGuiStyleVar_GrabMinSize); // float GrabMinSize
57 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_GrabRounding", ImGuiStyleVar_GrabRounding); // float GrabRounding
58 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_TabRounding", ImGuiStyleVar_TabRounding); // float TabRounding
59 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_ButtonTextAlign", ImGuiStyleVar_ButtonTextAlign); // ImVec2 ButtonTextAlign
60 engine->RegisterEnumValue("ImGuiStyleVar", "ImGuiStyleVar_SelectableTextAlign", ImGuiStyleVar_SelectableTextAlign); // ImVec2 SelectableTextAlign
61
62 engine->RegisterEnum("ImGuiWindowFlags");
63 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_None", ImGuiWindowFlags_None);
64 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoTitleBar", ImGuiWindowFlags_NoTitleBar);
65 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoResize", ImGuiWindowFlags_NoResize);
66 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoMove", ImGuiWindowFlags_NoMove);
67 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoScrollbar", ImGuiWindowFlags_NoScrollbar);
68 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoScrollWithMouse", ImGuiWindowFlags_NoScrollWithMouse);
69 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoCollapse", ImGuiWindowFlags_NoCollapse);
70 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_AlwaysAutoResize", ImGuiWindowFlags_AlwaysAutoResize);
71 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoBackground", ImGuiWindowFlags_NoBackground);
72 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoSavedSettings", ImGuiWindowFlags_NoSavedSettings);
73 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoMouseInputs", ImGuiWindowFlags_NoMouseInputs);
74 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_MenuBar", ImGuiWindowFlags_MenuBar);
75 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_HorizontalScrollbar", ImGuiWindowFlags_HorizontalScrollbar);
76 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoFocusOnAppearing", ImGuiWindowFlags_NoFocusOnAppearing);
77 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoBringToFrontOnFocus", ImGuiWindowFlags_NoBringToFrontOnFocus);
78 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_AlwaysVerticalScrollbar", ImGuiWindowFlags_AlwaysVerticalScrollbar);
79 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_AlwaysHorizontalScrollbar", ImGuiWindowFlags_AlwaysHorizontalScrollbar);
80 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_AlwaysUseWindowPadding", ImGuiWindowFlags_AlwaysUseWindowPadding);
81 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoNavInputs", ImGuiWindowFlags_NoNavInputs);
82 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoNavFocus", ImGuiWindowFlags_NoNavFocus);
83 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_UnsavedDocument", ImGuiWindowFlags_UnsavedDocument);
84 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoNav", ImGuiWindowFlags_NoNav);
85 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoDecoration", ImGuiWindowFlags_NoDecoration);
86 engine->RegisterEnumValue("ImGuiWindowFlags", "ImGuiWindowFlags_NoInputs", ImGuiWindowFlags_NoInputs);
87
88 // Enumeration for PushStyleColor() / PopStyleColor()
89 engine->RegisterEnum("ImGuiCol");
90 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_Text" , ImGuiCol_Text);
91 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TextDisabled" , ImGuiCol_TextDisabled);
92 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_WindowBg" , ImGuiCol_WindowBg);
93 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ChildBg" , ImGuiCol_ChildBg);
94 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_PopupBg" , ImGuiCol_PopupBg);
95 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_Border" , ImGuiCol_Border);
96 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_BorderShadow" , ImGuiCol_BorderShadow);
97 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_FrameBg" , ImGuiCol_FrameBg);
98 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_FrameBgHovered" , ImGuiCol_FrameBgHovered);
99 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_FrameBgActive" , ImGuiCol_FrameBgActive);
100 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TitleBg" , ImGuiCol_TitleBg);
101 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TitleBgActive" , ImGuiCol_TitleBgActive);
102 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TitleBgCollapsed" , ImGuiCol_TitleBgCollapsed);
103 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_MenuBarBg" , ImGuiCol_MenuBarBg);
104 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ScrollbarBg" , ImGuiCol_ScrollbarBg);
105 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ScrollbarGrab" , ImGuiCol_ScrollbarGrab);
106 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ScrollbarGrabHovered" , ImGuiCol_ScrollbarGrabHovered);
107 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ScrollbarGrabActive" , ImGuiCol_ScrollbarGrabActive);
108 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_CheckMark" , ImGuiCol_CheckMark);
109 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_SliderGrab" , ImGuiCol_SliderGrab);
110 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_SliderGrabActive" , ImGuiCol_SliderGrabActive);
111 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_Button" , ImGuiCol_Button);
112 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ButtonHovered" , ImGuiCol_ButtonHovered);
113 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ButtonActive" , ImGuiCol_ButtonActive);
114 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_Header" , ImGuiCol_Header);
115 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_HeaderHovered" , ImGuiCol_HeaderHovered);
116 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_HeaderActive" , ImGuiCol_HeaderActive);
117 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_Separator" , ImGuiCol_Separator);
118 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_SeparatorHovered" , ImGuiCol_SeparatorHovered);
119 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_SeparatorActive" , ImGuiCol_SeparatorActive);
120 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ResizeGrip" , ImGuiCol_ResizeGrip);
121 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ResizeGripHovered" , ImGuiCol_ResizeGripHovered);
122 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ResizeGripActive" , ImGuiCol_ResizeGripActive);
123 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_Tab" , ImGuiCol_Tab);
124 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TabHovered" , ImGuiCol_TabHovered);
125 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TabActive" , ImGuiCol_TabActive);
126 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TabUnfocused" , ImGuiCol_TabUnfocused);
127 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TabUnfocusedActive" , ImGuiCol_TabUnfocusedActive);
128 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_PlotLines" , ImGuiCol_PlotLines);
129 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_PlotLinesHovered" , ImGuiCol_PlotLinesHovered);
130 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_PlotHistogram" , ImGuiCol_PlotHistogram);
131 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_PlotHistogramHovered" , ImGuiCol_PlotHistogramHovered);
132 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_TextSelectedBg" , ImGuiCol_TextSelectedBg);
133 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_DragDropTarget" , ImGuiCol_DragDropTarget);
134 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_NavHighlight" , ImGuiCol_NavHighlight);
135 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_NavWindowingHighlight" , ImGuiCol_NavWindowingHighlight);
136 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_NavWindowingDimBg" , ImGuiCol_NavWindowingDimBg);
137 engine->RegisterEnumValue("ImGuiCol", "ImGuiCol_ModalWindowDimBg" , ImGuiCol_ModalWindowDimBg);
138
139 engine->RegisterEnum("ImGuiCond");
140 engine->RegisterEnumValue("ImGuiCond", "ImGuiCond_Always", ImGuiCond_Always);
141 engine->RegisterEnumValue("ImGuiCond", "ImGuiCond_Once", ImGuiCond_Once); // Set the variable once per runtime session (only the first call with succeed)
142 engine->RegisterEnumValue("ImGuiCond", "ImGuiCond_FirstUseEver", ImGuiCond_FirstUseEver); // Set the variable if the object/window has no persistently saved data (no entry in .ini file)
143 engine->RegisterEnumValue("ImGuiCond", "ImGuiCond_Appearing", ImGuiCond_Appearing); // Set the variable if the object/window is appearing after being hidden/inactive (or the first time)
144
145 engine->RegisterEnum("ImGuiTabBarFlags");
146 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_None", ImGuiTabBarFlags_None);
147 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_Reorderable", ImGuiTabBarFlags_Reorderable); // // Allow manually dragging tabs to re-order them + New tabs are appended at the end of list
148 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_AutoSelectNewTabs", ImGuiTabBarFlags_AutoSelectNewTabs); // // Automatically select new tabs when they appear
149 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_TabListPopupButton", ImGuiTabBarFlags_TabListPopupButton); // // Disable buttons to open the tab list popup
150 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_NoCloseWithMiddleMouseButton", ImGuiTabBarFlags_NoCloseWithMiddleMouseButton); // // Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false.
151 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_NoTabListScrollingButtons", ImGuiTabBarFlags_NoTabListScrollingButtons); // // Disable scrolling buttons (apply when fitting policy is ImGuiTabBarFlags_FittingPolicyScroll)
152 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_NoTooltip", ImGuiTabBarFlags_NoTooltip); // // Disable tooltips when hovering a tab
153 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_FittingPolicyResizeDown", ImGuiTabBarFlags_FittingPolicyResizeDown); // // Resize tabs when they don't fit
154 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_FittingPolicyScroll", ImGuiTabBarFlags_FittingPolicyScroll); // // Add scroll buttons when tabs don't fit
155 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_FittingPolicyMask_", ImGuiTabBarFlags_FittingPolicyMask_); // ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll,
156 engine->RegisterEnumValue("ImGuiTabBarFlags", "ImGuiTabBarFlags_FittingPolicyDefault_", ImGuiTabBarFlags_FittingPolicyDefault_); // ImGuiTabBarFlags_FittingPolicyResizeDown
157
158 engine->RegisterEnum("ImGuiTabItemFlags");
159 engine->RegisterEnumValue("ImGuiTabItemFlags", "ImGuiTabItemFlags_None", ImGuiTabItemFlags_None);
160 engine->RegisterEnumValue("ImGuiTabItemFlags", "ImGuiTabItemFlags_UnsavedDocument", ImGuiTabItemFlags_UnsavedDocument); // // Append '*' to title without affecting the ID, as a convenience to avoid using the ### operator. Also: tab is selected on closure and closure is deferred by one frame to allow code to undo it without flicker.
161 engine->RegisterEnumValue("ImGuiTabItemFlags", "ImGuiTabItemFlags_SetSelected", ImGuiTabItemFlags_SetSelected); // // Trigger flag to programmatically make the tab selected when calling BeginTabItem()
162 engine->RegisterEnumValue("ImGuiTabItemFlags", "ImGuiTabItemFlags_NoCloseWithMiddleMouseButton", ImGuiTabItemFlags_NoCloseWithMiddleMouseButton); // // Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false.
163 engine->RegisterEnumValue("ImGuiTabItemFlags", "ImGuiTabItemFlags_NoPushId", ImGuiTabItemFlags_NoPushId); // // Don't call PushID(tab->ID)/PopID() on BeginTabItem()/EndTabItem()
164
165 // ImDrawList object (global namespace)
166 engine->RegisterObjectType("ImDrawList", sizeof(ImDrawList), asOBJ_REF | asOBJ_NOCOUNT);
167}
void RegisterImGuiCommonBindings(AngelScript::asIScriptEngine *engine)
defined in ImGuiAngelscript.cpp