Skip to content

Releases: ramokz/phantom-camera

v0.6.2.2

19 Jan 18:48
Compare
Choose a tag to compare

🐛 Fixes

  • Resolved an issue where a crash could occur when you queue_free() a PCam node due to an invalid reference to the PCamHost node. (#175)
    • 🔍 💡 Thanks @ciso507 for reporting this and suggesting a fix. (#165)
  • Resolved an issue where changing the Camera3D resource properties via a PCam3D's setter methods wouldn't update the Camera3D if a PCam was the active one. (#184)
  • Resolved an issue where Look At (for PCam3D) didn't assign its target properly. (#182)

v0.6.2.1

09 Jan 18:47
Compare
Choose a tag to compare

🐛 Fixes

  • Resolved an issue where if you used a Third Person Follow PCam3D with both damping enabled, with a small damping value, and a follow target far away from a global position of (0, 0, 0) the camera would very slowly move towards its intended position from (0, 0, 0). Leading to a potentially long wait before you could realistically make use of the camera's intended behaviour. (#167)

v0.6.2

07 Jan 12:47
Compare
Choose a tag to compare

🛠️ Changes & Improvements

  • Improved the ability to seamlessly transition between areas a Limit applies. The previous version had an issue where there would be a quirky jump as you transition between neighbouring Limit areas. As a result from this change, the 2D damping logic has been reverted to pre-0.6, which means the damping applies an interpolation to the movement, rather than relying on the Camera2D's Position Smoothing. Like the previous change, this shouldn't have any notable impact.
    • 💡⛑️ Thanks @zen14774 for bringing up this discussion and help testing the solution (#157).
    • 💡 Thanks bissash05 (Twitter) for confirming and helping with identifying the issue (DM).
  • Added is_tweening signal — emitted whenever a PCam is tweening.
  • Allow for adjusting Follow Properties in the node inspector, such as Follow Offset and Damping, even without a Follow Target whenever the Follow Mode is not set to None. This is to allow for dynamically applying a Follow Target during runtime while allowing to set Follow Properties if they're known during compilation and not being forced to do so via code.
  • Added a few missing void return types to various functions.
  • Added a default value to Follow Target. Allows for resetting the property using the reset button to the left of the property button.
  • Added a type to the 2D and 3D Follow Target and Follow Path Target. It means that the pop-up menu selector only allows for selecting Node2D/Node3D and Path2D/Path3D nodes, respectively.
  • Removed unused icons.

🐛 Fixes

  • Resolved an issue where the Camera2D Limit size wouldn't reset properly while tweening between PCam2D's if both were using a CollisionShape2D as their limiter. Resulting in the camera snapping in one direction.
  • Resolved a regression with the Frame Preview not updating in 2D scenes when changing the Zoom property. This was due to a bug where the variable name zoom in PhantomCamera2D.gd didn't trigger the setter, and consequently the _draw function call, resulting in the preview not updating. The fix here was to rename the variable to camera_zoom instead.
  • Resolved an issue where loading a 2D scene where a Limit was being applied via either a TileMap or CollisionShape2D (Shape2D) would result in a PCam2D not being able to fetch the node, resulting in updates to the Limit Node not updating the PCam2D limit. The solution was to wait until the PCam2D had called its _ready() function before validating the Limit Path property when the scene is loaded.
  • Resolved an issue where tweens would transition for one additional frame for every transition.
    • 💡 ⛑️ Thanks @zen14774 for spotting this and testing the fix (#157)
  • Resolved an issue when downloading and loading the addon where either errors or a crash would occur. This was due to scale_with_editor_scale was enabled on some .svg icons, which scaled them to look correct on high resolution monitors. This issue should be resolved in Godot 4.3, but until then this property will be disabled to avoid user frustration.

v0.6.1

28 Dec 10:58
6ac8cb9
Compare
Choose a tag to compare

✨ New Features

Pixel Perfect (2D)

image

To support pixel perfect camera movement, a new toggle option to snap Camera2D to whole pixels has been added.
This should be particularly useful in pixel art projects, where assets should always be aligned to the monitor's pixels to avoid unintended stretching.

  • 🥇 Thanks to @GrogsyShovel for the contribution (#156, before/after examples can be found in the PR's description).

CollisionShape2D Limit Support

image

In addition to allowing TileMaps to apply the Camera2D Limit, a CollisionShape2D can also be used to apply the Limit values using its Shape2D property. It will automatically update the limit when the Shape2D is changed.

PhantomCamera Signals

image

Support for PCam signals have been added. This is meant to allow for receiving callbacks when specific events begins or ends for each PCam. This has been added for both PCam2D and Pcam3D nodes.

List of added signals:

  • became_active - Emitted when the PCam becomes active.
  • became_inactive - Emitted when the PCam becomes inactive.
  • tween_started - Emitted when the Camera starts to tween to the PCam.
  • tween_interrupted(PhantomCamera pcam) - Emitted when the tween is interrupted due to another PCam becoming active.
  • tween_completed - Emitted when the Camera has completed its tween to the PCam.

⚠️ Breaking Changes

  • Property name, such as the TileMap Limit, has been renamed with a generic Node Limit property - the same goes for setter/getter methods. As a result, existing property values will likely reset upon loading scenes that have any overrides, and setter/getter calls will produce errors if used in scripts until renamed to the new ones.
    This change is to allow other node types to be assigned to the property, such as the newly added CollisionShape2D, but also to make the names less specific and more in line with other property names.
    • The property value loss can be mitigated by manually updating property values in the .tscn files in a text editor.

🛠️ Changes & Improvements

  • Added the ability to reset most properties to a default value. This has not been applied to every property, such as Follow Mode, to avoid accidentally resetting critical property values.
  • TileMap Limit nodes will now update the Limit size after the TileSet is changed. Note: This will only be triggered after leaving the TileMap editor panel.
  • Updated TileMap Limit Margin to type Vector4i instead of Vector4. Changed due to Camera2D Limit property only supports integer values.
  • Moved Zoom property from phantom_camera_properties.gd to phantom_camera_2D.gd. Changed due to the Zoom property is only used in 2D scenes and PCam2D.
  • Updated and organized all the addon scripts by grouping each category, i.e. const, vars, func etc., into their own, collapsable, regions.

🐛 Fixes

  • Resolved an issue where Framed Follow in 3D scenes would not apply its distance and offset upon loading a scene. Resulting in the camera zooming into its target and effectively breaking on load.
    • 🥇 Thanks to @warent for discovering the issue (#140) and submitting a fix (#147)
  • Resolved an issue where tweening between PCam2Ds while the initial PCam2D's Follow Damping were enabled led to undesired transition easings and sudden camera jumps at the end of the tween.
  • Resolved an issue where using the getter method for Limit only returned Limit Left.

⚕️ New Contributors

v0.6

21 Dec 12:36
Compare
Choose a tag to compare

✨ New Features

editor-updater

Editor Updater

Whenever a new update of Phantom Camera is released on GitHub, the editor will show a prompt to update to the latest version directly from the editor.

Code and layout for this feature was replicated from the Dialogue Manager addon by @nathanhoad.


image image

Camera2D Limit + TileMap support

Utilizing the built-in Limit properties of Camera2D nodes, you can now limit the position of the camera to a specified area. Optionally, it also supports the built-in smoothing property. So whenever the edge of the limit is reached it will gradually ease to its limit, as opposed to immediately stop once it reaches the edge.

On top of the existing built-in feature set, TileMap node can also optionally be used as a way to limit the Camera2D movement. An optional margin can also be set to further adjust the limit's size.

The editor preview area of the clamped area can be toggled within the editor.

Example Scene
addons/phantom_camera/examples/example_scenes/2D/2DLimitExampleScene.tscn


image

PhantomCamera2D Frame Preview

PCam2D nodes will now by default show what it will frame (green rectangle) when instantiated, similar to the purple rectangle a Camera2D shows. This is to help determine the composition of the individual PCam2D without switching the priority around.
This can optionally be disabled per instance to reduce screen clutter.

🛠️ Changes & Improvements

  • PCam2D now uses the Position Smoothing property of the Camera2D instead of its own interpolation method. The damping should be very similar, but there might be a minor damping speed difference compared to releases prior to this.
  • Zoom property for PCam2D now has linked values, meaning adjusting the zoom by default now changes the width and height at the same time. Identical how Camera2D property behaves.

🐛 Fixes

  • Resolved an issue where the PCam2D Priority Override property wasn't being set.
  • Resolved an issue where Framed Follow mode would behave strangely if it wasn't the first PCam to have the highest priority when a scene starts.
  • Resolved an issue where the Camera would jump to and tween from unexpected positions if the Camera's parent nodes had any positional offsets.
  • Resolved an issue where Third Person Follow's SpringArm3D node wasn't updating its length during runtime when using the setter method.
  • Resolved an issue an on high DPI monitors where editor icons didn't scale properly and looked tiny compared to others.

⚕️ New Contributors

  • @GrogsyShovel made their first contribution in #142
    • Special shout out for being the first project contributor 🎉

v0.5.0.5

31 Oct 12:54
d2e03d9
Compare
Choose a tag to compare

🛠️ Fixes

  • Minor crash fix for 2D scenes where if the Camera2D, with a PCamHost as a child, is positioned below a PCam2D in a scene's hierarchy, it would result in a crash on startup.
    • Thanks @xchrix for spotting this.

v0.5.0.4

15 Oct 17:48
Compare
Choose a tag to compare

🛠️ Fixes

  • Minor fix for assigning Follow Group Nodes entirely via code not being triggered.

v0.5.0.3

13 Oct 19:17
Compare
Choose a tag to compare

🛠️ Fixes

  • Fixed issue where assigning targets to Follow Group or Look at Group entirely via code would never trigger their respective logic.
  • Fixed issue where removing the last Look At Group node from the array would cause continuous error output.
  • Fixed issue when applying a Look At target while using Third Person Follow mode would cause a null exception and crash upon loading.
    • Thanks @matt-seaton for spotting this.

⬆️ Improvements

  • Added ability to erase Follow and Path target nodes via setter method.
  • Updated .gitattributes so that anything but the addons/ directory content won't get downloaded.

v0.5.0.2

09 Oct 17:15
Compare
Choose a tag to compare

🛠️ Fixes

  • Fixed an issue where instantiating a Camera node and then a PhantomCameraHost node will trigger a series of errors until a PhantomCamera node was added as well.
  • Converted additional missing get_position() calls to get_global_position()
  • Converted additional missing get_rotation() calls to get_global_rotation()

Thanks @m4rr5 for spotting these!

v0.5.0.1

09 Oct 12:03
Compare
Choose a tag to compare

🛠️ Fixes

  • Fix where set_global_position() was incorrectly using set_position()
  • Fix for where 2D scenes would spam errors due to calling a non-existent 3D resource