Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
e1def94
Update README.md: tutorial for visualization
KerianFiter Jul 11, 2025
acd9b87
Update README.md: typo
KerianFiter Jul 11, 2025
88af42c
Fixed issues and added descriptions to the constellation
KerianFiter Jul 14, 2025
b4d05b9
Made DT constellation more compact
KerianFiter Jul 16, 2025
4ed5548
Fixed container size and outer link distance
KerianFiter Jul 16, 2025
1ad4b79
Added IsPlanned look on nodes, as well as default border
KerianFiter Jul 25, 2025
e08ad17
Fixed container size
KerianFiter Aug 7, 2025
e835fca
Removed audio player
KerianFiter Aug 13, 2025
af02bfa
Removed outdated code
KerianFiter Sep 11, 2025
6d8abb3
Add YouTube overview section to README
KerianFiter Sep 16, 2025
c2e9dff
Migration to Godot 4.5
KerianFiter Sep 18, 2025
dad6529
New functionality: change node background and border color for contex…
KerianFiter Sep 18, 2025
3c9f3f8
Don't hide legend on the web
KerianFiter Sep 18, 2025
7913ce0
Simplified code
KerianFiter Sep 25, 2025
9317757
Better comments
KerianFiter Sep 25, 2025
013ba76
Editable description prototype
KerianFiter Sep 25, 2025
489ac6e
Lock camera when editing description
KerianFiter Sep 25, 2025
eaecef7
Adding nodes to containers
KerianFiter Sep 25, 2025
76f1388
Editable component name
KerianFiter Sep 25, 2025
6178a57
Fixed layout bug
KerianFiter Sep 25, 2025
d79b618
Description as a component tooltip
KerianFiter Sep 25, 2025
6fafa93
Fixed dictionary issue
KerianFiter Sep 25, 2025
a182ac9
Speed improvements & toggle visual editing button working
KerianFiter Sep 26, 2025
8e68778
Enabled node removal. Node editing improvements. FusekiData updated b…
KerianFiter Sep 30, 2025
abed6ea
Right click a node to enable editing
KerianFiter Sep 30, 2025
83c9be3
Speed improvements, partial component removal working, bug fixes
KerianFiter Oct 2, 2025
a889f6f
Fixed empty description
KerianFiter Oct 2, 2025
14ba6d5
Set default description to empty
KerianFiter Oct 2, 2025
d4cf444
Upgraded to 4.5
KerianFiter Oct 2, 2025
1e1936d
Improved link handling
KerianFiter Oct 2, 2025
b48b629
Fixed removing nodes breaking other links
KerianFiter Oct 3, 2025
1c39fb0
Better DT component tooltip visibility
KerianFiter Oct 27, 2025
e6cebde
Small optimization
KerianFiter Oct 27, 2025
bcc32c3
Visual improvements and fixes (#6)
KerianFiter Feb 16, 2026
e1ebf07
Fixed CICD issues
KerianFiter Feb 18, 2026
307f859
Added build info
KerianFiter Feb 26, 2026
7b34ced
Update README.md
KerianFiter Feb 26, 2026
40aae45
Update README.md
KerianFiter Feb 26, 2026
e331b3f
Update README.md
KerianFiter Feb 26, 2026
00ea3a5
Quality improvements (#7)
KerianFiter Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed Audio/drop_001.ogg
Binary file not shown.
19 changes: 0 additions & 19 deletions Audio/drop_001.ogg.import

This file was deleted.

18 changes: 12 additions & 6 deletions Camera/CameraControl.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ class_name CameraControl
var movement_enabled : bool = true
var zoom_enabled : bool = true
var currently_zooming : bool = false
var target_zoom : Vector2 = Vector2(1.0, 1.0)

func _ready() -> void:
target_zoom = zoom
CameraSignals.disable_camera_movement.connect(_disable_camera_movement)
CameraSignals.enable_camera_movement.connect(_enable_camera_movement)
CameraSignals.enable_camera_zoom.connect(_enable_camera_zoom)
Expand All @@ -18,8 +20,11 @@ func _process(delta : float):
var inputmovementVector : Vector2 = handle_movement_input()
moveCamera(inputmovementVector, delta)
if zoom_enabled:
var inputZoomVector : Vector2 = handle_zoom_input(false)
zoom_camera(inputZoomVector)
var keyZoomVector : Vector2 = handle_zoom_input(false)
if keyZoomVector != Vector2.ZERO:
set_target_zoom(keyZoomVector * delta)

zoom = zoom.lerp(target_zoom, 15.0 * delta)

#Movement functions -----------------------------------------------------------
var current_velocity : Vector2 = Vector2(0, 0)
Expand Down Expand Up @@ -71,7 +76,8 @@ func _unhandled_input(event: InputEvent) -> void:
handle_mouse_movement(event)
if zoom_enabled:
var inputZoomVector : Vector2 = handle_zoom_input(true)
zoom_camera(inputZoomVector)
if inputZoomVector != Vector2.ZERO:
set_target_zoom(inputZoomVector)

func handle_mouse_movement(event : InputEventMouseMotion) -> void:
translate(-event.relative / zoom)
Expand All @@ -91,8 +97,8 @@ func handle_zoom_input(using_mouse : bool):
input_vector += Vector2(-CameraConfig.Zoom.ZOOM_SCROLL_SPEED, -CameraConfig.Zoom.ZOOM_SCROLL_SPEED)
return input_vector

func zoom_camera(input_vector: Vector2):
zoom = clamp(lerp(zoom, zoom + input_vector, 0.01), Vector2(CameraConfig.Zoom.MAX_ZOOM_OUT_SCALE, CameraConfig.Zoom.MAX_ZOOM_OUT_SCALE), Vector2(CameraConfig.Zoom.MAX_ZOOM_IN_SCALE, CameraConfig.Zoom.MAX_ZOOM_IN_SCALE))
func set_target_zoom(input_vector: Vector2):
target_zoom = clamp(target_zoom + input_vector, Vector2(CameraConfig.Zoom.MAX_ZOOM_OUT_SCALE, CameraConfig.Zoom.MAX_ZOOM_OUT_SCALE), Vector2(CameraConfig.Zoom.MAX_ZOOM_IN_SCALE, CameraConfig.Zoom.MAX_ZOOM_IN_SCALE))

#Signal handling ---------------------------------------------------------------
func _disable_camera_movement() -> void:
Expand All @@ -114,7 +120,7 @@ func _zoom_to_fit(target_rect: Rect2):

# Use the smaller scale to ensure the whole target fits
var zoom_factor = min(scale_x, scale_y)
zoom = Vector2(zoom_factor, zoom_factor)
target_zoom = Vector2(zoom_factor, zoom_factor)

# Center the camera on the target
position = target_rect.position + target_rect.size * 0.5
4 changes: 2 additions & 2 deletions Config/CameraConfig.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ class Movement:
class Zoom:
const MAX_ZOOM_IN_SCALE : float = 2
const MAX_ZOOM_OUT_SCALE : float = 0.3
const ZOOM_KEY_SPEED : float = 1
const ZOOM_SCROLL_SPEED : float = 5
const ZOOM_KEY_SPEED : float = 1.5
const ZOOM_SCROLL_SPEED : float = 0.2
1 change: 1 addition & 0 deletions Config/FusekiConfig.gd
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class JsonHead:
const C8 = "c8"
const C9 = "c9"
const C12 = "c12"
const C13 = "c13"
const C14 = "c14"
const C15 = "c15"
const C16 = "c16"
Expand Down
14 changes: 10 additions & 4 deletions Config/LegendsConfig.gd
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
extends Node

const LEGENDS : Dictionary = {
"Realtime relationship" : RT_LEGENDS
"Realtime Relationships" : RT_LEGENDS,
"Component Evolution" : BG_LEGENDS
}

const RT_LEGENDS : Dictionary = {
"Slower than realtime" : StyleConfig.RTBorder.SLOWER_THAN_RT_COLOR,
"Realtime" : StyleConfig.RTBorder.RT_COLOR,
"Faster than realtime" : StyleConfig.RTBorder.FASTER_THAN_RT_COLOR
"Slower than realtime" : StyleConfig.Timescale.SLOWER_THAN_REALTIME,
"Realtime" : StyleConfig.Timescale.REALTIME,
"Faster than realtime" : StyleConfig.Timescale.FASTER_THAN_REALTIME,
}

const BG_LEGENDS : Dictionary = {
"Implemented": StyleConfig.DTElement.DIMMED_COLOR,
"Planned": StyleConfig.DTElement.PLANNED_COLOR
}
56 changes: 43 additions & 13 deletions Config/StyleConfig.gd
Original file line number Diff line number Diff line change
@@ -1,33 +1,63 @@
extends Node

#Realtime relationship style
class RTBorder:
const BORDER_WIDTH : int = 5
# Deployment relationship style
class Deployment:
const ON_DEVICE : Color = Color(0.2, 0.6, 0.2)
const EDGE : Color = Color(0.2, 0.4, 0.8)
const FOG : Color = Color.LIGHT_STEEL_BLUE
const CLOUD : Color = Color.AQUA

const MAP : Dictionary = {
"ON_DEVICE": ON_DEVICE,
"EDGE": EDGE,
"FOG": FOG,
"CLOUD": CLOUD
}

# Implementation relationship style
class Implementation:
const PLANNED : Color = Color.YELLOW
const ACTIVE : Color = Color.ORANGE
const IMPLEMENTED : Color = Color.GREEN

const MAP : Dictionary = {
"PLANNED": PLANNED,
"ACTIVE": ACTIVE,
"IMPLEMENTED": IMPLEMENTED
}

const SLOWER_THAN_RT_COLOR : Color = Color.BLUE_VIOLET
const RT_COLOR : Color = Color.AQUAMARINE
const FASTER_THAN_RT_COLOR : Color = Color.GOLD
# Timescale relationship style
class Timescale:
const SLOWER_THAN_REALTIME : Color = Color.BLUE_VIOLET
const REALTIME : Color = Color.AQUAMARINE
const FASTER_THAN_REALTIME : Color = Color.GOLD

const MAP : Dictionary = {
"SLOWER_THAN_REALTIME": SLOWER_THAN_REALTIME,
"REALTIME": REALTIME,
"FASTER_THAN_REALTIME": FASTER_THAN_REALTIME
}

#DT/RT displayed element style
class DTElement:
const BORDER_WIDTH : int = 5
const BORDER_COLOR : Color = Color("454545")

const DIMMED_COLOR : Color = Color.GRAY
const HIGHLIGHT_COLOR : Color = Color.DIM_GRAY
const TEXT_HIGHLIGHT_COLOR : Color = Color.WHITE_SMOKE
const PLANNED_COLOR : Color = Color(Color.WHITE, 0.6)

#Visual link style
class Link:
const WIDTH : int = 5

const MEAN_OUTER_LINK_DISTANCE : int = 30 * WIDTH
const MEAN_OUTER_LINK_DISTANCE : int = 15 * WIDTH

const DIMMED_COLOR : Color = Color.GRAY
const HIGHLIGHT_COLOR : Color = Color.DIM_GRAY

#Legends style
class Legends:
const GO_AWAY_TEXT : String = "Hide legend"
const COME_IN_TEXT : String = "Show legend"

const RETRACT_BUTTON_COLOR : Color = Color.DARK_ORANGE
const PANEL_COLOR : Color = Color.GRAY
const CATEGORY_ANNONCE_COLOR : Color = Color.DIM_GRAY
const PANEL_COLOR : Color = Color.DARK_GRAY
const CATEGORY_ANNONCE_COLOR : Color = Color(0.3, 0.3, 0.3)
Loading
Loading