Skip to content

Releases: ramokz/phantom-camera

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

v0.5

09 Oct 11:41
Compare
Choose a tag to compare

✨ New Features

Third Person Follow

3D-Follow-Third-Person.mp4

As the name implies, this mode is meant to be used for third person camera experiences.
It works by applying a SpringArm3D, where the properties, such as Collison Mask, Spring Length and Margin, can be controlled from the PhantomCamera3D.

More documentation, with an example code setup for orbit controls, can be found on the Third Person wiki page.
A working scene example can be found in 3DFollowThirdPersonExampleScene.tscn inside addon/examples directory.

⬆️ Improvements

Priority Override (Editor only)

image

image

Enabling this temporarily changes the currently active PhantomCamera without modifying the Priority value.
The intent is to avoid having to manually adjust a PhantomCamera's Priority value to preview it by, e.g., by setting the value to 99, which can lead to unintended behaviour if not reverted back again.

The Viewfinder will display a UI prompt whenever a PhantomCamera has this enabled. Pressing the UI prompt will select that PhantomCamera from the scene tree.

Note: The override is only functional when working in the editor and will be ignored when running the game.


Camera3D Resource

image

Camera3D properties can now be adjusted per PhantomCamera3d nodes using the new Camera3D resource. With the exception of the Cull Mask, these properties will also be tweened upon changing the active PhantomCamera3D.
The adjustable properties are:

  • Cull Mask
  • H Offset
  • V Offset
  • FOV

⚠️ Note

As part of this addition, some of the scene's Camera3D properties will be overridden by an active PhantomCamera3D node IF it has a Camera3D resource assigned to it – by default, they will not have that.
I.e. If there's existing code in the project that changes the Camera3D's properties, or if there is a pre-defined property setup on a Camera3D node, then be aware that this can either cause conflicting property changes or unintentionally override an existing setup.

🛠 Fixes

  • Movement jitter on high refresh rate monitors should no longer be occurring.
    • Fixed by updating the tween and follow logic only after the physics ticks.
  • Look At mode property didn't update when changed from the inspector.
    • Fixed by changing the variable name, which seems to conflict with the property's StringName.
  • Tweening the rotation between two PhantomCamera3Ds now uses the shortest rotation distance. Fixes an issue where the tweening would do an unexpected 180-degree spin.
    • Fixed by tweening using Quaternion instead of Euler values.

v0.4

20 Aug 12:41
7d97586
Compare
Choose a tag to compare

✨ New Features

Framed Follow


PhantomCamera2D

PhantomCamera3D
2D-Follow-Framed.mp4
3D-Follow-Framed.mp4

Enables dynamic framing of a given target using dead zones. Dead zones enable the camera to remain still until the target moves far enough away from the camera's view. This is determined by the horizontal and vertical dead zone size in their respective properties within the inspector.


Viewfinder

Viewfinder.mp4

Preview what the Camera2D / Camera3D sees when attached to a PhantomCamera. Accessible from the bottom panel labelled Phantom Camera. The viewfinder rendering of the scene will only work when the combination of a Camera, PhantomCameraHost and PhantomCamera are present in the scene.

Dead Zones

image

When Follow Mode is set to Framed, dead zones will also be visible in the viewfinder and, if enabled, when playing the game from the editor.

Note: Dead Zones will never be visible in build exports.

Empty States

image
When creating a new scene, the Viewfinder will not work by default due to the missing required nodes.
To improve the user experience, and to provide better guidance for why it isn't working, the Viewfinder provides a quick and simple button flow to adding any missing required nodes.

About 2D Support

Most of the setup is there, however, getting the 2D view to render in the viewfinder doesn't quite work yet.
Issue can be found here: #105

⬆️ Improvements

Setter & Getters Functions

Added a series of functions that allows for setting and getting properties, enabling easier code configuration of PhantomCamera nodes.
With this you can now assign, or remove, targets to a Follow Group, change the target offset, get its current priority and more.

See the PhantomCamera2D and PhantomCamera3D property pages for the full list of setter and getter functions.

v0.3.2

29 Apr 14:23
1aa1f81
Compare
Choose a tag to compare

⬆️ Improvements

Tween-On-Load

Tween on Load (Property)

When PhantomCameras are instantiated, there's now a property to prevent it from automatically triggering a transition.

This is to cover use cases such as avoid having the Camera drag behind a playable character, for however long the Duration property is set to, whenever a scene is loaded. Instead, it can now (optionally) do its follow / look at logic from the moment it enters the scene and is set with the highest priority.

Before & After Example

TweenOnLoad.mp4

v0.3.1

22 Apr 11:55
Compare
Choose a tag to compare
v0.3.1 Pre-release
Pre-release

⚠️ Breaking / Property Reset Changes

The property naming convention has been updated to match Godot's snake_case standard.

As a result, property values of (most) existing PhantomCamera nodes' will be reset upon opening the scene they exist in.

🩹 To Keep Existing Properties

To avoid having to redo all the parameters in the editor:

  1. Close Godot's Editor – this is to prevent Godot from accidentally resetting existing properties prematurely
  2. Update the property names in the scenes (.tscn) that have PhantomCamera nodes, like shown below
    PCAM_property_name_update
  3. Then update the plugin

⬆️ Improvements

Zoom support in AnimationPlayer

Can now animate the zoom property of a PhantomCamera2D using AnimationPlayer nodes.
Note: The output log will spam errors when doing this, but the effect should be working as intended regardless. Still under investigation!

v0.3

04 Apr 15:46
97a4c16
Compare
Choose a tag to compare
v0.3 Pre-release
Pre-release

✨ New Features

Path Follow

Support for following a target while being positionally confined to the closest point on Path2D / Path3D.


Tween Resource Support

Tween properties (Duration, Transition and Ease) are now resources. So their values can be saved as a file and be linked across multiple PhantomCamera nodes and updated from a single place.


Inactive Update Mode

Individually set how frequently PhantomCamera nodes should update when inactive.

⬆️ Improvements

Using AnimationPlayer (Documentation)

Short guide for how to tween between PhantomCameras using an AnimationPlayer (timeline) node: https://github.com/ramokz/phantom-camera/wiki/Using-AnimationPlayer