From c9b75431f313fae16e9f4c9e60d7f5eaed0aaec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 28 Mar 2022 15:48:38 +0200 Subject: Refactor GDScript/C# script templates logic to be editor-only Not a full refactor as it still goes through ScriptLanguage so it's hacky, but at least it can now compile without this. --- .../CharacterBody2D/basic_movement.gd | 30 +++++++++++++ .../CharacterBody3D/basic_movement.gd | 33 ++++++++++++++ .../editor/script_templates/EditorPlugin/plugin.gd | 13 ++++++ .../EditorScript/basic_editor_script.gd | 8 ++++ .../editor/script_templates/Node/default.gd | 13 ++++++ .../editor/script_templates/Object/empty.gd | 3 ++ modules/gdscript/editor/script_templates/SCsub | 16 +++++++ .../VisualShaderNodeCustom/basic.gd | 50 ++++++++++++++++++++++ 8 files changed, 166 insertions(+) create mode 100644 modules/gdscript/editor/script_templates/CharacterBody2D/basic_movement.gd create mode 100644 modules/gdscript/editor/script_templates/CharacterBody3D/basic_movement.gd create mode 100644 modules/gdscript/editor/script_templates/EditorPlugin/plugin.gd create mode 100644 modules/gdscript/editor/script_templates/EditorScript/basic_editor_script.gd create mode 100644 modules/gdscript/editor/script_templates/Node/default.gd create mode 100644 modules/gdscript/editor/script_templates/Object/empty.gd create mode 100644 modules/gdscript/editor/script_templates/SCsub create mode 100644 modules/gdscript/editor/script_templates/VisualShaderNodeCustom/basic.gd (limited to 'modules/gdscript/editor') diff --git a/modules/gdscript/editor/script_templates/CharacterBody2D/basic_movement.gd b/modules/gdscript/editor/script_templates/CharacterBody2D/basic_movement.gd new file mode 100644 index 0000000000..a379d915a9 --- /dev/null +++ b/modules/gdscript/editor/script_templates/CharacterBody2D/basic_movement.gd @@ -0,0 +1,30 @@ +# meta-description: Classic movement for gravity games (platformer, ...) + +extends _BASE_ + + +const SPEED = 300.0 +const JUMP_VELOCITY = -400.0 + +# Get the gravity from the project settings to be synced with RigidDynamicBody nodes. +var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity") + + +func _physics_process(delta: float) -> void: + # Add the gravity. + if not is_on_floor(): + velocity.y += gravity * delta + + # Handle Jump. + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY + + # Get the input direction and handle the movement/deceleration. + # As good practice, you should replace UI actions with custom gameplay actions. + var direction := Input.get_axis("ui_left", "ui_right") + if direction: + velocity.x = direction * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + + move_and_slide() diff --git a/modules/gdscript/editor/script_templates/CharacterBody3D/basic_movement.gd b/modules/gdscript/editor/script_templates/CharacterBody3D/basic_movement.gd new file mode 100644 index 0000000000..360b199e56 --- /dev/null +++ b/modules/gdscript/editor/script_templates/CharacterBody3D/basic_movement.gd @@ -0,0 +1,33 @@ +# meta-description: Classic movement for gravity games (FPS, TPS, ...) + +extends _BASE_ + + +const SPEED = 5.0 +const JUMP_VELOCITY = 4.5 + +# Get the gravity from the project settings to be synced with RigidDynamicBody nodes. +var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity") + + +func _physics_process(delta: float) -> void: + # Add the gravity. + if not is_on_floor(): + velocity.y -= gravity * delta + + # Handle Jump. + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY + + # Get the input direction and handle the movement/deceleration. + # As good practice, you should replace UI actions with custom gameplay actions. + var input_dir := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") + var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + velocity.x = direction.x * SPEED + velocity.z = direction.z * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + velocity.z = move_toward(velocity.z, 0, SPEED) + + move_and_slide() diff --git a/modules/gdscript/editor/script_templates/EditorPlugin/plugin.gd b/modules/gdscript/editor/script_templates/EditorPlugin/plugin.gd new file mode 100644 index 0000000000..b27b3e5655 --- /dev/null +++ b/modules/gdscript/editor/script_templates/EditorPlugin/plugin.gd @@ -0,0 +1,13 @@ +# meta-description: Basic plugin template +@tool +extends EditorPlugin + + +func _enter_tree() -> void: + # Initialization of the plugin goes here. + pass + + +func _exit_tree() -> void: + # Clean-up of the plugin goes here. + pass diff --git a/modules/gdscript/editor/script_templates/EditorScript/basic_editor_script.gd b/modules/gdscript/editor/script_templates/EditorScript/basic_editor_script.gd new file mode 100644 index 0000000000..fdb8550d43 --- /dev/null +++ b/modules/gdscript/editor/script_templates/EditorScript/basic_editor_script.gd @@ -0,0 +1,8 @@ +# meta-description: Basic editor script template +@tool +extends EditorScript + + +# Called when the script is executed (using File -> Run in Script Editor). +func _run() -> void: + pass diff --git a/modules/gdscript/editor/script_templates/Node/default.gd b/modules/gdscript/editor/script_templates/Node/default.gd new file mode 100644 index 0000000000..cb96a21537 --- /dev/null +++ b/modules/gdscript/editor/script_templates/Node/default.gd @@ -0,0 +1,13 @@ +# meta-description: Base template for Node with default Godot cycle methods + +extends _BASE_ + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/modules/gdscript/editor/script_templates/Object/empty.gd b/modules/gdscript/editor/script_templates/Object/empty.gd new file mode 100644 index 0000000000..387786b0a4 --- /dev/null +++ b/modules/gdscript/editor/script_templates/Object/empty.gd @@ -0,0 +1,3 @@ +# meta-description: Empty template suitable for all Objects + +extends _BASE_ diff --git a/modules/gdscript/editor/script_templates/SCsub b/modules/gdscript/editor/script_templates/SCsub new file mode 100644 index 0000000000..2266ef2d01 --- /dev/null +++ b/modules/gdscript/editor/script_templates/SCsub @@ -0,0 +1,16 @@ +#!/usr/bin/env python + +Import("env") + +import editor.template_builders as build_template_gd + +env["BUILDERS"]["MakeGDTemplateBuilder"] = Builder( + action=env.Run(build_template_gd.make_templates, "Generating GDScript templates header."), + suffix=".h", + src_suffix=".gd", +) + +# Template files +templates_sources = Glob("*/*.gd") + +env.Alias("editor_template_gd", [env.MakeGDTemplateBuilder("templates.gen.h", templates_sources)]) diff --git a/modules/gdscript/editor/script_templates/VisualShaderNodeCustom/basic.gd b/modules/gdscript/editor/script_templates/VisualShaderNodeCustom/basic.gd new file mode 100644 index 0000000000..283a95d3b4 --- /dev/null +++ b/modules/gdscript/editor/script_templates/VisualShaderNodeCustom/basic.gd @@ -0,0 +1,50 @@ +# meta-description: Visual shader's node plugin template + +@tool +class_name VisualShaderNode_CLASS_ +extends _BASE_ + + +func _get_name() -> String: + return "_CLASS_" + + +func _get_category() -> String: + return "" + + +func _get_description() -> String: + return "" + + +func _get_return_icon_type() -> int: + return PORT_TYPE_SCALAR + + +func _get_input_port_count() -> int: + return 0 + + +func _get_input_port_name(port: int) -> String: + return "" + + +func _get_input_port_type(port: int) -> int: + return PORT_TYPE_SCALAR + + +func _get_output_port_count() -> int: + return 1 + + +func _get_output_port_name(port: int) -> String: + return "result" + + +func _get_output_port_type(port: int) -> int: + return PORT_TYPE_SCALAR + + +func _get_code(input_vars: Array[String], output_vars: Array[String], + mode: int, type: int) -> String: + return output_vars[0] + " = 0.0;" -- cgit v1.2.3