Quellcode durchsuchen

Move IDHandler JS module to platform from Websock

Fabio Alessandrelli vor 7 Jahren
Ursprung
Commit
6a1bf006a3
3 geänderte Dateien mit 69 neuen und 19 gelöschten Zeilen
  1. 0 19
      modules/websocket/register_types.cpp
  2. 7 0
      platform/javascript/SCsub
  3. 62 0
      platform/javascript/id_handler.js

+ 0 - 19
modules/websocket/register_types.cpp

@@ -60,25 +60,6 @@ void register_websocket_types() {
 	_SET_HINT(WSS_OUT_PKT, 1024, 16384);
 
 #ifdef JAVASCRIPT_ENABLED
-	EM_ASM({
-		var IDHandler = {};
-		IDHandler["ids"] = {};
-		IDHandler["has"] = function(id) {
-			return IDHandler.ids.hasOwnProperty(id);
-		};
-		IDHandler["add"] = function(obj) {
-			var id = crypto.getRandomValues(new Int32Array(32))[0];
-			IDHandler.ids[id] = obj;
-			return id;
-		};
-		IDHandler["get"] = function(id) {
-			return IDHandler.ids[id];
-		};
-		IDHandler["remove"] = function(id) {
-			delete IDHandler.ids[id];
-		};
-		Module["IDHandler"] = IDHandler;
-	});
 	EMWSPeer::make_default();
 	EMWSClient::make_default();
 	EMWSServer::make_default();

+ 7 - 0
platform/javascript/SCsub

@@ -20,6 +20,13 @@ for lib in js_libraries:
     env.Append(LINKFLAGS=['--js-library', env.File(lib).path])
 env.Depends(build, js_libraries)
 
+js_modules = [
+    'id_handler.js',
+]
+for module in js_modules:
+    env.Append(LINKFLAGS=['--pre-js', env.File(module).path])
+env.Depends(build, js_modules)
+
 wrapper_start = env.File('pre.js')
 wrapper_end = env.File('engine.js')
 js_wrapped = env.Textfile('#bin/godot', [wrapper_start, js, wrapper_end], TEXTFILESUFFIX='${PROGSUFFIX}.wrapped.js')

+ 62 - 0
platform/javascript/id_handler.js

@@ -0,0 +1,62 @@
+/*************************************************************************/
+/*  id_handler.js                                                        */
+/*************************************************************************/
+/*                       This file is part of:                           */
+/*                           GODOT ENGINE                                */
+/*                    http://www.godotengine.org                         */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.                 */
+/*                                                                       */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the       */
+/* "Software"), to deal in the Software without restriction, including   */
+/* without limitation the rights to use, copy, modify, merge, publish,   */
+/* distribute, sublicense, and/or sell copies of the Software, and to    */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions:                                             */
+/*                                                                       */
+/* The above copyright notice and this permission notice shall be        */
+/* included in all copies or substantial portions of the Software.       */
+/*                                                                       */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
+/*************************************************************************/
+
+var IDHandler = function() {
+
+	var ids = {};
+	var size = 0;
+
+	this.has = function(id) {
+		return ids.hasOwnProperty(id);
+	}
+
+	this.add = function(obj) {
+		size += 1;
+		var id = crypto.getRandomValues(new Int32Array(32))[0];
+		ids[id] = obj;
+		return id;
+	}
+
+	this.get = function(id) {
+		return ids[id];
+	}
+
+	this.remove = function(id) {
+		size -= 1;
+		delete ids[id];
+	}
+
+	this.size = function() {
+		return size;
+	}
+
+	this.ids = ids;
+};
+
+Module.IDHandler = new IDHandler;