Add GodotSteam support to godot4, almost identical to what we're already

doing with games/godot. This allows running a few more games and is
potentially interesting for development.

ok op@ (maintainer)
This commit is contained in:
thfr
2024-10-09 17:06:03 +00:00
parent 21d0092db0
commit 733bbf2191
4 changed files with 358 additions and 2 deletions
+10 -2
View File
@@ -5,7 +5,9 @@ COMMENT-editor= 2D and 3D game engine (with the editor)
V = 4.2.2
PKGNAME = godot4-${V}
REVISION = 0
DIST_TUPLE += github godotengine godot ${V}-stable .
DIST_TUPLE += github GodotSteam GodotSteam v4.3 godotsteam
CATEGORIES = games
@@ -20,9 +22,10 @@ MULTI_PACKAGES = -main -editor
WANTLIB-main += ${COMPILER_LIBCXX} SPIRV X11 Xau Xcursor Xdmcp Xext
WANTLIB-main += Xfixes Xi Xinerama Xrandr Xrender c dbus-1 enet execinfo
WANTLIB-main += expat fontconfig freetype glib-2.0 glslang intl m mbedcrypto
WANTLIB-main += expat fontconfig freetype glib-2.0 glslang
WANTLIB-main += glslang-default-resource-limits intl m mbedcrypto
WANTLIB-main += mbedtls mbedx509 miniupnpc mpcdec ogg pcre2-32 pcre2-8
WANTLIB-main += sharpyuv sndio speechd theora theoradec usbhid vorbis
WANTLIB-main += sharpyuv sndio speechd steam_api theora theoradec usbhid vorbis
WANTLIB-main += vorbisfile webp wslay xcb xkbcommon zstd
WANTLIB-editor = ${WANTLIB-main}
@@ -50,6 +53,7 @@ MODSCONS_FLAGS = CC="${CC}" \
builtin_miniupnpc=no \
builtin_pcre2=no \
builtin_zstd=no \
custom_modules=${WRKSRC}/godotsteam \
progress=no \
pulseaudio=no \
use_sowrap=no \
@@ -92,6 +96,7 @@ LIB_DEPENDS = archivers/zstd \
audio/speech-dispatcher \
devel/gettext,-runtime \
devel/pcre2 \
games/goldberg_emulator \
graphics/glslang \
graphics/libwebp \
multimedia/libtheora \
@@ -114,6 +119,9 @@ LDFLAGS += -latomic
WANTLIB += atomic
.endif
CFLAGS += -I${LOCALBASE}/include/goldberg_emulator
CXXFLAGS += -I${LOCALBASE}/include/goldberg_emulator
post-extract:
cp -R ${FILESDIR}/sndio ${WRKDIST}/drivers
+2
View File
@@ -1,2 +1,4 @@
SHA256 (GodotSteam-GodotSteam-v4.3.tar.gz) = fv6JcbaZjh4Ncwrkm3ifrhkfsszNSDDv55p3oAkRqpc=
SHA256 (godotengine-godot-4.2.2-stable.tar.gz) = mQt7cWZWEiNksWclCMUWyJhJfFAhbXwAxg7q9QdoXA4=
SIZE (GodotSteam-GodotSteam-v4.3.tar.gz) = 252225
SIZE (godotengine-godot-4.2.2-stable.tar.gz) = 39246793
@@ -0,0 +1,168 @@
stub Steam::inputActionEventCallback
stub setDualSenseTriggerEffect
remove deprecated/incompatible namespaces ISteamHTMLSurface
InitiateGameConnection_DEPRECATED => InitiateGameConnection
fix/remove dualsense/SCE namespace
Index: godotsteam/godotsteam.cpp
--- godotsteam/godotsteam.cpp.orig
+++ godotsteam/godotsteam.cpp
@@ -1886,7 +1886,7 @@ void Steam::keyChar(uint32 unicode_char, BitField<HTML
if(this_handle == 0){
this_handle = browser_handle;
}
- SteamHTMLSurface()->KeyChar(this_handle, unicode_char, (ISteamHTMLSurface::EHTMLKeyModifiers)(int64_t)key_modifiers);
+ SteamHTMLSurface()->KeyChar(this_handle, unicode_char, (EHTMLKeyModifiers)(int64_t)key_modifiers);
}
}
@@ -1897,7 +1897,7 @@ void Steam::keyDown(uint32 native_key_code, BitField<H
if(this_handle == 0){
this_handle = browser_handle;
}
- SteamHTMLSurface()->KeyDown(this_handle, native_key_code, (ISteamHTMLSurface::EHTMLKeyModifiers)(int64_t)key_modifiers);
+ SteamHTMLSurface()->KeyDown(this_handle, native_key_code, (EHTMLKeyModifiers)(int64_t)key_modifiers);
}
}
@@ -1908,7 +1908,7 @@ void Steam::keyUp(uint32 native_key_code, BitField<HTM
if(this_handle == 0){
this_handle = browser_handle;
}
- SteamHTMLSurface()->KeyUp(this_handle, native_key_code, (ISteamHTMLSurface::EHTMLKeyModifiers)(int64_t)key_modifiers);
+ SteamHTMLSurface()->KeyUp(this_handle, native_key_code, (EHTMLKeyModifiers)(int64_t)key_modifiers);
}
}
@@ -1930,7 +1930,7 @@ void Steam::mouseDoubleClick(HTMLMouseButton mouse_but
if(this_handle == 0){
this_handle = browser_handle;
}
- SteamHTMLSurface()->MouseDoubleClick(this_handle, (ISteamHTMLSurface::EHTMLMouseButton)mouse_button);
+ SteamHTMLSurface()->MouseDoubleClick(this_handle, (EHTMLMouseButton)mouse_button);
}
}
@@ -1941,7 +1941,7 @@ void Steam::mouseDown(HTMLMouseButton mouse_button, ui
if(this_handle == 0){
this_handle = browser_handle;
}
- SteamHTMLSurface()->MouseDown(this_handle, (ISteamHTMLSurface::EHTMLMouseButton)mouse_button);
+ SteamHTMLSurface()->MouseDown(this_handle, (EHTMLMouseButton)mouse_button);
}
}
@@ -1963,7 +1963,7 @@ void Steam::mouseUp(HTMLMouseButton mouse_button, uint
if(this_handle == 0){
this_handle = browser_handle;
}
- SteamHTMLSurface()->MouseUp(this_handle, (ISteamHTMLSurface::EHTMLMouseButton)mouse_button);
+ SteamHTMLSurface()->MouseUp(this_handle, (EHTMLMouseButton)mouse_button);
}
}
@@ -2711,7 +2711,9 @@ bool Steam::setInputActionManifestFilePath(const Strin
}
// Set the trigger effect for a DualSense controller
-void Steam::setDualSenseTriggerEffect(uint64_t input_handle, int parameter_index, int trigger_mask, SCEPadTriggerEffectMode effect_mode, int position, int amplitude, int frequency){
+void Steam::setDualSenseTriggerEffect(uint64_t input_handle, int parameter_index, int trigger_mask, int effect_mode, int position, int amplitude, int frequency){
+ return;
+ /*
if(SteamInput() != NULL){
ScePadTriggerEffectParam these_parameters;
memset(&these_parameters, 0, sizeof(these_parameters));
@@ -2742,6 +2744,7 @@ void Steam::setDualSenseTriggerEffect(uint64_t input_h
these_parameters.command[parameter_index].commandData.vibrationParam.frequency = frequency;
SteamInput()->SetDualSenseTriggerEffect((InputHandle_t)input_handle, &these_parameters);
}
+ */
}
//! Waits on an IPC event from Steam sent when there is new data to be fetched from the data drop. Returns true when data was recievied before the timeout expires. Useful for games with a dedicated input thread.
@@ -7920,7 +7923,7 @@ Dictionary Steam::initiateGameConnection(uint64_t serv
int authSize = 2048;
auth.resize(authSize);
CSteamID server = (uint64)server_id;
- if(SteamUser()->InitiateGameConnection_DEPRECATED(&auth, authSize, server, server_ip, server_port, secure) > 0){
+ if(SteamUser()->InitiateGameConnection(&auth, authSize, server, server_ip, server_port, secure) > 0){
connection["auth_blob"] = auth;
connection["server_id"] = server_id;
connection["server_ip"] = server_ip;
@@ -8019,7 +8022,7 @@ void Steam::stopVoiceRecording(){
//! Notify the game server that we are disconnecting. NOTE: This is part of the old user authentication API and should not be mixed with the new API.
void Steam::terminateGameConnection(uint32 server_ip, uint16 server_port){
if(SteamUser() != NULL){
- SteamUser()->TerminateGameConnection_DEPRECATED(server_ip, server_port);
+ SteamUser()->TerminateGameConnection(server_ip, server_port);
}
}
@@ -9494,27 +9497,28 @@ void Steam::http_request_headers_received(HTTPRequestH
//
// Purpose: when callbacks are enabled this fires each time a controller action state changes
void Steam::inputActionEventCallback(SteamInputActionEvent_t* call_data){
- uint64_t input_handle = call_data->controllerHandle;
- int event_type = call_data->eEventType;
- uint64_t analog_handle = call_data->analogAction.actionHandle;
- uint64_t digital_handle = call_data->digitalAction.actionHandle;
+ return;
+ //uint64_t input_handle = call_data->controllerHandle;
+ //int event_type = call_data->eEventType;
+ //uint64_t analog_handle = call_data->analogAction.actionHandle;
+ //uint64_t digital_handle = call_data->digitalAction.actionHandle;
// Get the digital action data
- Dictionary digital_action;
- digital_action["state"] = call_data->digitalAction.digitalActionData.bState;
- digital_action["active"] = call_data->digitalAction.digitalActionData.bActive;
+ //Dictionary digital_action;
+ //digital_action["state"] = call_data->digitalAction.digitalActionData.bState;
+ //digital_action["active"] = call_data->digitalAction.digitalActionData.bActive;
// Get the analog action data
- Dictionary analog_action;
- analog_action["mode"] = call_data->analogAction.analogActionData.eMode;
- analog_action["x"] = call_data->analogAction.analogActionData.x;
- analog_action["y"] = call_data->analogAction.analogActionData.y;
- analog_action["active"] = call_data->analogAction.analogActionData.bActive;
+ //Dictionary analog_action;
+ //analog_action["mode"] = call_data->analogAction.analogActionData.eMode;
+ //analog_action["x"] = call_data->analogAction.analogActionData.x;
+ //analog_action["y"] = call_data->analogAction.analogActionData.y;
+ //analog_action["active"] = call_data->analogAction.analogActionData.bActive;
// Split into a dictionary since Godot won't allow more than 6 arguments sent back
- Dictionary action_information;
- action_information["analog_action_handle"] = analog_handle;
- action_information["analog_action_data"] = analog_action;
- action_information["digital_action_handle"] = digital_handle;
- action_information["digital_action_data"] = digital_action;
- emit_signal("input_action_event", input_handle, event_type, action_information);
+ //Dictionary action_information;
+ //action_information["analog_action_handle"] = analog_handle;
+ //action_information["analog_action_data"] = analog_action;
+ //action_information["digital_action_handle"] = digital_handle;
+ //action_information["digital_action_data"] = digital_action;
+ //emit_signal("input_action_event", input_handle, event_type, action_information);
}
//! Purpose: called when a new controller has been connected, will fire once per controller if multiple new controllers connect in the same frame
@@ -13599,13 +13603,13 @@ void Steam::_bind_methods(){
BIND_ENUM_CONSTANT(RESULT_PHONE_NUMBER_IS_VOIP);
// SCEPadTriggerEffectMode Enums
- BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_OFF);
- BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_FEEDBACK);
- BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_WEAPON);
- BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_VIBRATION);
- BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_FEEDBACK);
- BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_SLOPE_FEEDBACK);
- BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_VIBRATION);
+ //BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_OFF);
+ //BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_FEEDBACK);
+ //BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_WEAPON);
+ //BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_VIBRATION);
+ //BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_FEEDBACK);
+ //BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_SLOPE_FEEDBACK);
+ //BIND_ENUM_CONSTANT(PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_VIBRATION);
// SocketConnectionType Enums
BIND_ENUM_CONSTANT(NET_SOCKET_CONNECTION_TYPE_NOT_CONNECTED);
@@ -0,0 +1,178 @@
don't use isteamdualsense.h API while not part of games/goldberg_emulator
fix namespace - need to remove ISteamHTMLSurface:: to build
disable SCE_* namespace, which is from isteamdualsense which we don't have
(yet)
Index: godotsteam/godotsteam.h
--- godotsteam/godotsteam.h.orig
+++ godotsteam/godotsteam.h
@@ -22,7 +22,6 @@
// Include Steamworks API headers
#include "steam/steam_api.h"
#include "steam/steamnetworkingfakeip.h"
-#include "steam/isteamdualsense.h"
// Include Godot headers
#include "core/object/object.h"
@@ -482,59 +481,59 @@ class Steam: public Object {
// HTMLSurface enums
enum HTMLKeyModifiers {
- HTML_KEY_MODIFIER_NONE = ISteamHTMLSurface::k_eHTMLKeyModifier_None,
- HTML_KEY_MODIFIER_ALT_DOWN = ISteamHTMLSurface::k_eHTMLKeyModifier_AltDown,
- HTML_KEY_MODIFIER_CTRL_DOWN = ISteamHTMLSurface::k_eHTMLKeyModifier_CtrlDown,
- HTML_KEY_MODIFIER_SHIFT_DOWN = ISteamHTMLSurface::k_eHTMLKeyModifier_ShiftDown
+ HTML_KEY_MODIFIER_NONE = k_eHTMLKeyModifier_None,
+ HTML_KEY_MODIFIER_ALT_DOWN = k_eHTMLKeyModifier_AltDown,
+ HTML_KEY_MODIFIER_CTRL_DOWN = k_eHTMLKeyModifier_CtrlDown,
+ HTML_KEY_MODIFIER_SHIFT_DOWN = k_eHTMLKeyModifier_ShiftDown
};
enum HTMLMouseButton {
- HTML_MOUSE_BUTTON_LEFT = ISteamHTMLSurface::eHTMLMouseButton_Left,
- HTML_MOUSE_BUTTON_RIGHT = ISteamHTMLSurface::eHTMLMouseButton_Right,
- HTML_MOUSE_BUTTON_MIDDLE = ISteamHTMLSurface::eHTMLMouseButton_Middle
+ HTML_MOUSE_BUTTON_LEFT = eHTMLMouseButton_Left,
+ HTML_MOUSE_BUTTON_RIGHT = eHTMLMouseButton_Right,
+ HTML_MOUSE_BUTTON_MIDDLE = eHTMLMouseButton_Middle
};
enum MouseCursor {
- DC_USER = ISteamHTMLSurface::dc_user,
- DC_NONE = ISteamHTMLSurface::dc_none,
- DC_ARROW = ISteamHTMLSurface::dc_arrow,
- DC_IBEAM = ISteamHTMLSurface::dc_ibeam,
- DC_HOUR_GLASS = ISteamHTMLSurface::dc_hourglass,
- DC_WAIT_ARROW = ISteamHTMLSurface::dc_waitarrow,
- DC_CROSSHAIR = ISteamHTMLSurface::dc_crosshair,
- DC_UP = ISteamHTMLSurface::dc_up,
- DC_SIZE_NW = ISteamHTMLSurface::dc_sizenw,
- DC_SIZE_SE = ISteamHTMLSurface::dc_sizese,
- DC_SIZE_NE = ISteamHTMLSurface::dc_sizene,
- DC_SIZE_SW = ISteamHTMLSurface::dc_sizesw,
- DC_SIZE_W = ISteamHTMLSurface::dc_sizew,
- DC_SIZE_E = ISteamHTMLSurface::dc_sizee,
- DC_SIZE_N = ISteamHTMLSurface::dc_sizen,
- DC_SIZE_S = ISteamHTMLSurface::dc_sizes,
- DC_SIZE_WE = ISteamHTMLSurface::dc_sizewe,
- DC_SIZE_NS = ISteamHTMLSurface::dc_sizens,
- DC_SIZE_ALL = ISteamHTMLSurface::dc_sizeall,
- DC_NO = ISteamHTMLSurface::dc_no,
- DC_HAND = ISteamHTMLSurface::dc_hand,
- DC_BLANK = ISteamHTMLSurface::dc_blank,
- DC_MIDDLE_PAN = ISteamHTMLSurface::dc_middle_pan,
- DC_NORTH_PAN = ISteamHTMLSurface::dc_north_pan,
- DC_NORTH_EAST_PAN = ISteamHTMLSurface::dc_north_east_pan,
- DC_EAST_PAN = ISteamHTMLSurface::dc_east_pan,
- DC_SOUTH_EAST_PAN = ISteamHTMLSurface::dc_south_east_pan,
- DC_SOUTH_PAN = ISteamHTMLSurface::dc_south_pan,
- DC_SOUTH_WEST_PAN = ISteamHTMLSurface::dc_south_west_pan,
- DC_WEST_PAN = ISteamHTMLSurface::dc_west_pan,
- DC_NORTH_WEST_PAN = ISteamHTMLSurface::dc_north_west_pan,
- DC_ALIAS = ISteamHTMLSurface::dc_alias,
- DC_CELL = ISteamHTMLSurface::dc_cell,
- DC_COL_RESIZE = ISteamHTMLSurface::dc_colresize,
- DC_COPY_CUR = ISteamHTMLSurface::dc_copycur,
- DC_VERTICAL_TEXT = ISteamHTMLSurface::dc_verticaltext,
- DC_ROW_RESIZE = ISteamHTMLSurface::dc_rowresize,
- DC_ZOOM_IN = ISteamHTMLSurface::dc_zoomin,
- DC_ZOOM_OUT = ISteamHTMLSurface::dc_zoomout,
- DC_HELP = ISteamHTMLSurface::dc_help,
- DC_CUSTOM = ISteamHTMLSurface::dc_custom,
- DC_LAST = ISteamHTMLSurface::dc_last
+ DC_USER = dc_user,
+ DC_NONE = dc_none,
+ DC_ARROW = dc_arrow,
+ DC_IBEAM = dc_ibeam,
+ DC_HOUR_GLASS = dc_hourglass,
+ DC_WAIT_ARROW = dc_waitarrow,
+ DC_CROSSHAIR = dc_crosshair,
+ DC_UP = dc_up,
+ DC_SIZE_NW = dc_sizenw,
+ DC_SIZE_SE = dc_sizese,
+ DC_SIZE_NE = dc_sizene,
+ DC_SIZE_SW = dc_sizesw,
+ DC_SIZE_W = dc_sizew,
+ DC_SIZE_E = dc_sizee,
+ DC_SIZE_N = dc_sizen,
+ DC_SIZE_S = dc_sizes,
+ DC_SIZE_WE = dc_sizewe,
+ DC_SIZE_NS = dc_sizens,
+ DC_SIZE_ALL = dc_sizeall,
+ DC_NO = dc_no,
+ DC_HAND = dc_hand,
+ DC_BLANK = dc_blank,
+ DC_MIDDLE_PAN = dc_middle_pan,
+ DC_NORTH_PAN = dc_north_pan,
+ DC_NORTH_EAST_PAN = dc_north_east_pan,
+ DC_EAST_PAN = dc_east_pan,
+ DC_SOUTH_EAST_PAN = dc_south_east_pan,
+ DC_SOUTH_PAN = dc_south_pan,
+ DC_SOUTH_WEST_PAN = dc_south_west_pan,
+ DC_WEST_PAN = dc_west_pan,
+ DC_NORTH_WEST_PAN = dc_north_west_pan,
+ DC_ALIAS = dc_alias,
+ DC_CELL = dc_cell,
+ DC_COL_RESIZE = dc_colresize,
+ DC_COPY_CUR = dc_copycur,
+ DC_VERTICAL_TEXT = dc_verticaltext,
+ DC_ROW_RESIZE = dc_rowresize,
+ DC_ZOOM_IN = dc_zoomin,
+ DC_ZOOM_OUT = dc_zoomout,
+ DC_HELP = dc_help,
+ DC_CUSTOM = dc_custom,
+ DC_LAST = dc_last
};
// HTTP enums
@@ -1088,6 +1087,7 @@ class Steam: public Object {
INPUT_TYPE_COUNT = k_ESteamInputType_Count,
INPUT_TYPE_MAXIMUM_POSSIBLE_VALUE = k_ESteamInputType_MaximumPossibleValue
};
+ /*
enum SCEPadTriggerEffectMode {
PAD_TRIGGER_EFFECT_MODE_OFF = SCE_PAD_TRIGGER_EFFECT_MODE_OFF,
PAD_TRIGGER_EFFECT_MODE_FEEDBACK = SCE_PAD_TRIGGER_EFFECT_MODE_FEEDBACK,
@@ -1097,6 +1097,7 @@ class Steam: public Object {
PAD_TRIGGER_EFFECT_MODE_SLOPE_FEEDBACK = SCE_PAD_TRIGGER_EFFECT_MODE_SLOPE_FEEDBACK,
PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_VIBRATION = SCE_PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_VIBRATION
};
+ */
enum XboxOrigin {
XBOX_ORIGIN_A = k_EXboxOrigin_A,
XBOX_ORIGIN_B = k_EXboxOrigin_B,
@@ -1191,9 +1192,9 @@ class Steam: public Object {
};
enum P2PSessionError {
P2P_SESSION_ERROR_NONE = k_EP2PSessionErrorNone,
- P2P_SESSION_ERROR_NOT_RUNNING_APP = k_EP2PSessionErrorNotRunningApp_DELETED,
+ P2P_SESSION_ERROR_NOT_RUNNING_APP = k_EP2PSessionErrorNotRunningApp,
P2P_SESSION_ERROR_NO_RIGHTS_TO_APP = k_EP2PSessionErrorNoRightsToApp,
- P2P_SESSION_ERROR_DESTINATION_NOT_LOGGED_ON = k_EP2PSessionErrorDestinationNotLoggedIn_DELETED,
+ P2P_SESSION_ERROR_DESTINATION_NOT_LOGGED_ON = k_EP2PSessionErrorDestinationNotLoggedIn,
P2P_SESSION_ERROR_TIMEOUT = k_EP2PSessionErrorTimeout,
P2P_SESSION_ERROR_MAX = k_EP2PSessionErrorMax
};
@@ -1990,7 +1991,7 @@ class Steam: public Object {
void triggerVibration(uint64_t input_handle, uint16_t left_speed, uint16_t right_speed);
void triggerVibrationExtended(uint64_t input_handle, uint16_t left_speed, uint16_t right_speed, uint16_t left_trigger_speed, uint16_t right_trigger_speed);
bool setInputActionManifestFilePath(const String& manifest_path);
- void setDualSenseTriggerEffect(uint64_t input_handle, int parameter_index, int trigger_mask, SCEPadTriggerEffectMode effect_mode, int position, int amplitude, int frequency);
+ void setDualSenseTriggerEffect(uint64_t input_handle, int parameter_index, int trigger_mask, int effect_mode, int position, int amplitude, int frequency);
bool waitForData(bool wait_forever, uint32 timeout);
// Inventory ////////////////////////////
@@ -3002,7 +3003,7 @@ VARIANT_BITFIELD_CAST(Steam::RemoteStoragePlatform);
VARIANT_ENUM_CAST(Steam::RemoteStoragePublishedFileVisibility);
VARIANT_ENUM_CAST(Steam::Result);
-VARIANT_ENUM_CAST(Steam::SCEPadTriggerEffectMode);
+//VARIANT_ENUM_CAST(Steam::SCEPadTriggerEffectMode);
VARIANT_ENUM_CAST(Steam::SocketConnectionType);
VARIANT_ENUM_CAST(Steam::SocketState);
@@ -3029,4 +3030,4 @@ VARIANT_ENUM_CAST(Steam::WorkshopVote);
VARIANT_ENUM_CAST(Steam::XboxOrigin);
-#endif // GODOTSTEAM_H
\ No newline at end of file
+#endif // GODOTSTEAM_H