summaryrefslogtreecommitdiffstats
path: root/modules/webrtc/webrtc_peer_connection.cpp
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-09-28 12:57:45 +0200
committerGitHub <noreply@github.com>2021-09-28 12:57:45 +0200
commitd18cbdf5e4a1132bfc5f581195f6bf7c3b9bed79 (patch)
treee87200b01a5b55ec516b528be52f382954efe4e5 /modules/webrtc/webrtc_peer_connection.cpp
parent97f050067819c7d1fbef0cb38b071ff31b2b2188 (diff)
parent2d810e8cd948f1e25e514986dc6f9a7cb7c52026 (diff)
downloadredot-engine-d18cbdf5e4a1132bfc5f581195f6bf7c3b9bed79.tar.gz
Merge pull request #52481 from Faless/net/4.x_native_peers
[Net] Extension system for network peers, webrtc.
Diffstat (limited to 'modules/webrtc/webrtc_peer_connection.cpp')
-rw-r--r--modules/webrtc/webrtc_peer_connection.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/modules/webrtc/webrtc_peer_connection.cpp b/modules/webrtc/webrtc_peer_connection.cpp
index 3e2938bf7d..ad28aa76c7 100644
--- a/modules/webrtc/webrtc_peer_connection.cpp
+++ b/modules/webrtc/webrtc_peer_connection.cpp
@@ -30,17 +30,29 @@
#include "webrtc_peer_connection.h"
-WebRTCPeerConnection *(*WebRTCPeerConnection::_create)() = nullptr;
+#ifdef JAVASCRIPT_ENABLED
+#include "webrtc_peer_connection_js.h"
+#else
+#include "webrtc_peer_connection_extension.h"
+#endif
-Ref<WebRTCPeerConnection> WebRTCPeerConnection::create_ref() {
- return create();
+StringName WebRTCPeerConnection::default_extension;
+
+void WebRTCPeerConnection::set_default_extension(const StringName &p_extension) {
+ default_extension = p_extension;
}
WebRTCPeerConnection *WebRTCPeerConnection::create() {
- if (!_create) {
- return nullptr;
+#ifdef JAVASCRIPT_ENABLED
+ return memnew(WebRTCPeerConnectionJS);
+#else
+ if (default_extension == String()) {
+ WARN_PRINT_ONCE("No default WebRTC extension configured.");
+ return memnew(WebRTCPeerConnectionExtension);
}
- return _create();
+ Object *obj = ClassDB::instantiate(default_extension);
+ return Object::cast_to<WebRTCPeerConnectionExtension>(obj);
+#endif
}
void WebRTCPeerConnection::_bind_methods() {