From 7c2bd1d52caece71a3676b7f10e8bfd225e3454d Mon Sep 17 00:00:00 2001 From: MidnightBloxxer <138817584+MidnightBloxxer@users.noreply.github.com> Date: Fri, 14 Jul 2023 15:20:41 -0400 Subject: [PATCH] Initial version (v0.0.1) --- .gitignore | 1 + LICENSE | 24 ++++++++++++++++++++++++ parallax_node.gd | 34 ++++++++++++++++++++++++++++++++++ parallax_node.svg | 1 + plugin.cfg | 7 +++++++ plugin.gd | 12 ++++++++++++ 6 files changed, 79 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 parallax_node.gd create mode 100644 parallax_node.svg create mode 100644 plugin.cfg create mode 100644 plugin.gd diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a238273 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.import \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3c577b0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to \ No newline at end of file diff --git a/parallax_node.gd b/parallax_node.gd new file mode 100644 index 0000000..391f3ad --- /dev/null +++ b/parallax_node.gd @@ -0,0 +1,34 @@ +## Alternative node type to [ParallaxLayer] and [ParallaxBackground] +## that works independently and doesn't effect it's position based on +## the camera's current zoom. +@icon('res://addons/parallax_node/parallax_node.svg') +class_name ParallaxNode extends Node2D + + +## Factor by how close the parallax should be to the actual camera +## movement. 1 is exactly the same as no parallax, 0 is static on +## the screen, and 0.5 is like 1 but it moves slower. +@export var parallax_factor: Vector2 = Vector2.ONE + +## Whether or not to automatically get the current camera +## every frame, could be beneifical to keep this off in certain +## circumstances, but is on by default for maximum performance. +@export var ignore_camera_changes: bool = true + +## Internal variable used to track the current camera. +var camera: Camera2D + + +func _ready() -> void: + camera = get_viewport().get_camera_2d() + + +func _process(delta: float) -> void: + if not ignore_camera_changes: + camera = get_viewport().get_camera_2d() + + if camera == null: + position = Vector2.ZERO + return + + position = (camera.get_screen_center_position() - (get_viewport_rect().size / 2.0)) * (Vector2.ONE - parallax_factor) diff --git a/parallax_node.svg b/parallax_node.svg new file mode 100644 index 0000000..6e1b3fc --- /dev/null +++ b/parallax_node.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugin.cfg b/plugin.cfg new file mode 100644 index 0000000..ab8f97e --- /dev/null +++ b/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="ParallaxNode" +description="Alternative new node to the built-in ParallaxBackground & ParallaxLayer system, one that is much simpler and is not affected by the camera's zoom in non intuitive ways." +author="Midnight" +version="0.0.1" +script="plugin.gd" diff --git a/plugin.gd b/plugin.gd new file mode 100644 index 0000000..4feb3a1 --- /dev/null +++ b/plugin.gd @@ -0,0 +1,12 @@ +@tool +extends EditorPlugin + + +func _enter_tree() -> void: + # add_custom_type('ParallaxNode', 'Node2D', preload('parallax_node.gd'), preload('parallax_node.svg')) + pass + + +func _exit_tree() -> void: + # remove_custom_type('ParallaxNode') + pass