2 Commits

Author SHA1 Message Date
701077fa88 Null type support 2025-02-28 12:20:28 -08:00
c77584fd0d Fix some weird errors 2025-02-28 12:17:34 -08:00
2 changed files with 19 additions and 1 deletions

View File

@ -2,7 +2,10 @@
# This file is the BSON serializer for the Godot Engine,
# published under the MIT license. https://opensource.org/license/MIT
class_name BSON
extends Node
# Unfortunately, this has to be a node in order to be a singleton.
# I'd rather BSON wasn't in the scenetree, but it seems like that's
# the only way to do this. Hopefully this will change in the future.
static func to_bson(data: Dictionary) -> PackedByteArray:
@ -30,6 +33,8 @@ static func get_byte_type(value: Variant) -> int:
return 0x03
TYPE_BOOL:
return 0x08
TYPE_NIL:
return 0x0a
_:
push_error("BSON serialization error: Unsupported type: ", typeof(value))
return 0x00
@ -186,6 +191,9 @@ class Deserializer:
func get_bool() -> bool:
return (get_int8() == 1)
func get_null() -> void:
read_position += 1
func read_dictionary() -> Dictionary:
var object = {}
@ -212,6 +220,9 @@ class Deserializer:
0x08: object[key] = get_bool()
0x04: object[key] = read_array()
0x03: object[key] = read_dictionary()
0x0a:
object[key] = null
get_null()
_:
push_error("BSON deserialization error: Unsupported type "
+ str(type)
@ -259,6 +270,9 @@ class Deserializer:
0x08: array.append(get_bool())
0x04: array.append(read_array())
0x03: array.append(read_dictionary())
0x0a:
array.append(null)
get_null()
_: push_error("BSON deserialization error: Unsupported type: " + str(type))
if iter > expected_size:
push_warning("BSON deserialization warning: Array is the wrong length."

View File

@ -15,6 +15,10 @@ run/main_scene="res://BSON Examples/dunk.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/icon="res://icon.svg"
[autoload]
BSON="*res://addons/bson/bson.gd"
[editor_plugins]
enabled=PackedStringArray("res://addons/bson/plugin.cfg")