8000 Add camera smoothing by mrezai · Pull Request #229 · Phazorknight/Cogito · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Add camera smoothing #229

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions COGITO/Assets/Animations/player_eyes.tres
10000
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Eyes/Camera:rotation")
tracks/0/path = NodePath("Eyes/CameraHolder/Camera:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
Expand All @@ -21,7 +21,7 @@ length = 0.3
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Eyes/Camera:rotation")
tracks/0/path = NodePath("Eyes/CameraHolder/Camera:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
Expand All @@ -37,7 +37,7 @@ length = 0.3
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Eyes/Camera:rotation")
tracks/0/path = NodePath("Eyes/CameraHolder/Camera:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
Expand All @@ -52,7 +52,7 @@ resource_name = "roll"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Eyes/Camera:rotation")
tracks/0/path = NodePath("Eyes/CameraHolder/Camera:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
Expand Down
53 changes: 50 additions & 3 deletions COGITO/CogitoObjects/cogito_player.gd
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ var slide_audio_player : AudioStreamPlayer3D
@onready var neck: Node3D = $Body/Neck
@onready var head: Node3D = $Body/Neck/Head
@onready var eyes: Node3D = $Body/Neck/Head/Eyes
@onready var camera: Camera3D = $Body/Neck/Head/Eyes/Camera
@onready var camera: Camera3D = $Body/Neck/Head/Eyes/CameraHolder/Camera
@onready var animationPlayer: AnimationPlayer = $Body/Neck/Head/Eyes/AnimationPlayer

@onready var standing_collision_shape: CollisionShape3D = $StandingCollisionShape
Expand All @@ -174,13 +174,24 @@ var slide_audio_player : AudioStreamPlayer3D
@onready var test_motion_result: PhysicsTestMotionResult3D = PhysicsTestMotionResult3D.new()

@onready var wieldables = %Wieldables

# Camera Smoothing
@onready var camera_holder = $Body/Neck/Head/Eyes/CameraHolder
@onready var camera_target = $Body/Neck/Head/Eyes
@onready var wieldables_target = $Body/Neck/Head

var is_transforms_update_needed : bool = false
var camera_gt_previous : Transform3D
var camera_gt_current : Transform3D
var wieldables_gt_previous : Transform3D
var wieldables_gt_current : Transform3D
#endregion


func _ready():
#Some Setup steps
CogitoSceneManager._current_player_node = self
player_interaction_component.interaction_raycast = $Body/Neck/Head/Eyes/Camera/InteractionRaycast
player_interaction_component.interaction_raycast = $Body/Neck/Head/Eyes/CameraHolder/Camera/InteractionRaycast
player_interaction_component.exclude_player(get_rid())

randomize()
Expand Down Expand Up @@ -216,7 +227,19 @@ func _ready():
print("Player has no reference to pause menu.")

call_deferred("slide_audio_init")


camera_holder.set_as_top_level(true)
camera_holder.global_transform = camera_target.global_transform

camera_gt_previous = camera_target.global_transform
camera_gt_current = camera_target.global_transform

wieldables.set_as_top_level(true)
wieldables.global_transform = wieldables_target.global_transform

wieldables_gt_previous = wieldables_target.global_transform
wieldables_gt_current = wieldables_target.global_transform


func slide_audio_init():
#setup sound effect for sliding
Expand Down Expand Up @@ -414,7 +437,31 @@ func _process_on_ladder(_delta):

var jumped_from_slide = false


func update_transforms():
camera_gt_previous = camera_gt_current
camera_gt_current = camera_target.global_transform

wieldables_gt_previous = wieldables_gt_current
wieldables_gt_current = wieldables_target.global_transform


func _process(delta: float) -> void:
if is_transforms_update_needed:
update_transforms()
is_transforms_update_needed = false

var interpolation_fraction : float = clamp(Engine.get_physics_interpolation_fraction(), 0, 1)

var camera_xform : Transform3D = camera_gt_previous.interpolate_with(camera_gt_current, interpolation_fraction)
camera_holder.global_transform = camera_xform

var wieldables_xform : Transform3D = wieldables_gt_previous.interpolate_with(wieldables_gt_current, interpolation_fraction)
wieldables.global_transform = wieldables_xform


func _physics_process(delta):
is_transforms_update_needed = true
#if is_movement_paused:
#return

Expand Down
13 changes: 7 additions & 6 deletions COGITO/PackedScenes/cogito_player.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,11 @@ libraries = {
"": ExtResource("10_tp6cj")
}

[node name="Camera" type="Camera3D" parent="Body/Neck/Head/Eyes"]
transform = Transform3D(1, 0, 0, 0, 1, 4.46638e-06, 0, -4.46638e-06, 1, 0, 0, 0)
[node name="CameraHolder" type="Node3D" parent="Body/Neck/Head/Eyes"]

[node name="InteractionRaycast" type="RayCast3D" parent="Body/Neck/Head/Eyes/Camera"]
[node name="Camera" type="Camera3D" parent="Body/Neck/Head/Eyes/CameraHolder"]

[node name="InteractionRaycast" type="RayCast3D" parent="Body/Neck/Head/Eyes/CameraHolder/Camera"]
target_position = Vector3(0, 0, -2.5)
collision_mask = 3
script = ExtResource("11_miluh")
Expand All @@ -128,7 +129,7 @@ wait_time = 0.5
one_shot = true

[node name="PlayerInteractionComponent" parent="." node_paths=PackedStringArray("interaction_raycast", "wieldable_container") instance=ExtResource("20_4f25o")]
interaction_raycast = NodePath("../Body/Neck/Head/Eyes/Camera/InteractionRaycast")
interaction_raycast = NodePath("../Body/Neck/Head/Eyes/CameraHolder/Camera/InteractionRaycast")
wieldable_container = NodePath("../Body/Neck/Head/Wieldables")

[node name="Player_HUD" parent="." node_paths=PackedStringArray("player") instance=ExtResource("21_j3p88")]
Expand All @@ -137,6 +138,6 @@ player = NodePath("..")
[node name="PauseMenu" parent="." instance=ExtResource("22_haksr")]

[connection signal="animation_finished" from="Body/Neck/Head/Eyes/AnimationPlayer" to="." method="_on_animation_player_animation_finished"]
[connection signal="interactable_seen" from="Body/Neck/Head/Eyes/Camera/InteractionRaycast" to="PlayerInteractionComponent" method="_on_interaction_raycast_interactable_seen"]
[connection signal="interactable_unseen" from="Body/Neck/Head/Eyes/Camera/InteractionRaycast" to="PlayerInteractionComponent" method="_on_interaction_raycast_interactable_unseen"]
[connection signal="interactable_seen" from="Body/Neck/Head/Eyes/CameraHolder/Camera/InteractionRaycast" to="PlayerInteractionComponent" method="_on_interaction_raycast_interactable_seen"]
[connection signal="interactable_unseen" from="Body/Neck/Head/Eyes/CameraHolder/Camera/InteractionRaycast" to="PlayerInteractionComponent" method="_on_interaction_raycast_interactable_unseen"]
[connection signal="timeout" from="SlidingTimer" to="." method="_on_sliding_timer_timeout"]
0