From 3c0439b2a07846fb9c033eebc2f859b512c60ef8 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Wed, 17 Apr 2024 00:55:17 +0200 Subject: [PATCH] Create `Priority` and `SamplerPriority` --- behaviours/priority.gd | 10 ++++++ behaviours/priority.svg | 39 ++++++++++++++++++++++ behaviours/priority.svg.import | 37 +++++++++++++++++++++ behaviours/priority.tscn | 6 ++++ behaviours/sampler.gd | 1 + behaviours/sampler.svg | 59 ++++++++++++++++++++++++++++++++++ behaviours/sampler.svg.import | 37 +++++++++++++++++++++ behaviours/sampler_priority.gd | 19 ++++++++++- 8 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 behaviours/priority.gd create mode 100644 behaviours/priority.svg create mode 100644 behaviours/priority.svg.import create mode 100644 behaviours/priority.tscn create mode 100644 behaviours/sampler.svg create mode 100644 behaviours/sampler.svg.import diff --git a/behaviours/priority.gd b/behaviours/priority.gd new file mode 100644 index 0000000..e1e9e39 --- /dev/null +++ b/behaviours/priority.gd @@ -0,0 +1,10 @@ +@icon("res://behaviours/priority.svg") +extends Node +class_name Priority + + +@export var priority: int = 0 + + +func get_ref() -> Node: + return get_parent() diff --git a/behaviours/priority.svg b/behaviours/priority.svg new file mode 100644 index 0000000..5223e43 --- /dev/null +++ b/behaviours/priority.svg @@ -0,0 +1,39 @@ + + + + + + + diff --git a/behaviours/priority.svg.import b/behaviours/priority.svg.import new file mode 100644 index 0000000..9148364 --- /dev/null +++ b/behaviours/priority.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctc4lx571jksr" +path="res://.godot/imported/priority.svg-d16c10b6303969bc43c2b8feaccb77ae.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://behaviours/priority.svg" +dest_files=["res://.godot/imported/priority.svg-d16c10b6303969bc43c2b8feaccb77ae.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/behaviours/priority.tscn b/behaviours/priority.tscn new file mode 100644 index 0000000..1c489db --- /dev/null +++ b/behaviours/priority.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://cm67ko1k6kn4u"] + +[ext_resource type="Script" path="res://behaviours/priority.gd" id="1_8u7ji"] + +[node name="Priority" type="Node"] +script = ExtResource("1_8u7ji") diff --git a/behaviours/sampler.gd b/behaviours/sampler.gd index 1b208a5..1c63eea 100644 --- a/behaviours/sampler.gd +++ b/behaviours/sampler.gd @@ -1,3 +1,4 @@ +@icon("res://behaviours/sampler.svg") extends Node class_name Sampler diff --git a/behaviours/sampler.svg b/behaviours/sampler.svg new file mode 100644 index 0000000..de84648 --- /dev/null +++ b/behaviours/sampler.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + diff --git a/behaviours/sampler.svg.import b/behaviours/sampler.svg.import new file mode 100644 index 0000000..4b58e6a --- /dev/null +++ b/behaviours/sampler.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cv32pf38ugoh1" +path="res://.godot/imported/sampler.svg-3634a55299eb9a683092cba4e7d215f9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://behaviours/sampler.svg" +dest_files=["res://.godot/imported/sampler.svg-3634a55299eb9a683092cba4e7d215f9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/behaviours/sampler_priority.gd b/behaviours/sampler_priority.gd index 4aafaf5..ca3ea44 100644 --- a/behaviours/sampler_priority.gd +++ b/behaviours/sampler_priority.gd @@ -5,4 +5,21 @@ class_name SamplerPriority ## Always sample the object with the highest priority in the queue. -## TODO \ No newline at end of file +@export var possibilities: Array[Priority] = [] + + +## Get a reference. +func sample() -> Priority: + if len(possibilities) == 0: + return null + + # FIXME: Change this to something more efficient when needed + var highest_possibility: Priority = null + for possibility in possibilities: + if possibility.priority > highest_possibility.priority: + highest_possibility = possibility + + if highest_possibility == null: + return null + + return highest_possibility.get_ref()