Skip to content

Easy dataclasses with helpful features for Godot Engine

License

Notifications You must be signed in to change notification settings

3ddelano/dataclasses-godot

Repository files navigation

Dataclasses Godot Plugin

(Get it from Godot Asset Library - Dataclasses on AssetLibrary)

Easy to use dataclasses with helpful features

(similar to Python's dataclasses)

Godot3


Dataclasses logo

Features

  • Customization options
  • Create object from Dictionary
  • Serialize to Dictionary
  • Better printing of object

Installation

  • From Asset Library

    Search for "Dataclasses" in the AssetLib tab in Godot and click Download. Once it has downloaded click Install. In the popup that opens, click Install again. (You dont need to enable the plugin in ProjectSettings)

  • Manual Installation

    Copy the contents of addons/dataclasses-godot into the addons/ folder in the same directory as your project. (You dont need to enable the plugin in ProjectSettings)

Quick Start

# Main.gd
extends Control

class MyClass:
	extends Dataclass
	func _init().("MyClass"): pass

	# Compulsory
	var some_int: int
	var some_array: Array

	# Optional
	var optional_dict = null


func _ready():
	# Better printing of objects
	var obj = MyClass.new()
	obj.optional_dict = {foo = "bar"}
	print(obj)

	# Create object from Dictionary
	print(MyClass.new().from_dict({some_int = 123456789}))

	# Serialize to Dictionary
	print(MyClass.new().from_dict({some_array = [1,2,3,4, 5]}).to_dict())

Documentation

Class: Dataclass

Properties

Type Name Defaults Description
String _name_ "" Name of the class to display when printing
String _options_ Default values mentioned in Customization Options to customize behaviour of the dataclass

Methods

Returns Definition Description
self from_dict(dict: Dictionary) Create object from Dictionary
Dictionary to_dict() Serialize object to Dictionary

Metadata

Classes that inherit from Dataclass have the is_dataclass meta set to true

Customization

  • sort_keys: true

    Whether to sort properties when printing

  • include_null_in_dict: true

    Whether to include properties with null values in the to_dict() method

  • include_null_in_print: true

    Whether to include properties with null values when printing

  • print_newline: false

    Whether to print properties on newlines when printing

  • print_exclude: []

    Names of properties to exclude when printing

Customization Examples

  • Print properties of the object on newline
     # Main.gd
     class MyClass:
     	extends Dataclass
     	func _init().("MyClass", {print_newline = true}): pass
    
     	var some_int: int
     	var some_array: Array
     
     func _ready():
     	print(MyClass.new())

Run res://sample/Sample.tscn for an example

Other Projects

Support the project development

Buy Me A Coffee

Want to support in other ways? Contact me on Discord: @3ddelano#6033

For doubts / help / bugs / problems / suggestions do join: 3ddelano Cafe Discord server