38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#ifndef CAMERA_EFFECTS_HPP
|
|
#define CAMERA_EFFECTS_HPP
|
|
|
|
#include <godot_cpp/classes/camera3d.hpp>
|
|
#include <godot_cpp/classes/spring_arm3d.hpp>
|
|
#include <godot_cpp/templates/vector.hpp>
|
|
namespace gd = godot;
|
|
|
|
class CameraEffects : public gd::Camera3D {
|
|
GDCLASS(CameraEffects, gd::Camera3D);
|
|
static void _bind_methods();
|
|
public:
|
|
virtual void _ready() override;
|
|
virtual void _process(double delta) override;
|
|
void push_shake_effect(float time, float intensity);
|
|
void push_zoom_effect(float factor, float adjust_speed);
|
|
void set_shoulder(bool weapon_shoulder);
|
|
bool is_weapon_shoulder() const;
|
|
void select_target();
|
|
gd::Vector3 get_radians() const { return this->get_rotation(); }
|
|
private:
|
|
float shoulder_switch_speed{1.f};
|
|
double end_time{0.5f};
|
|
float intensity{1.f};
|
|
float base_fov{60.f};
|
|
float target_fov{60.f};
|
|
float fov_speed{0.f};
|
|
float target_range{10.f};
|
|
float rotation_range{0.f};
|
|
float target_rotation{0.f};
|
|
gd::Vector3 target{0.f, 0.f, 0.f};
|
|
gd::Vector3 home{0.f, 0.f, 0.f};
|
|
gd::Node3D *pivot{nullptr};
|
|
gd::SpringArm3D *spring{nullptr};
|
|
};
|
|
|
|
#endif // !CAMERA_EFFECTS_HPP
|