From 18ec109b86264afb08954d1dcbc87dbca99ec12b Mon Sep 17 00:00:00 2001 From: Sara Date: Wed, 20 Mar 2024 09:49:43 +0100 Subject: [PATCH] feat: added weapon muzzle, which will register itself with parent playercharacters --- src/register_types.cpp | 18 ++++++++++++------ src/weapon_muzzle.cpp | 16 ++++++++++++++++ src/weapon_muzzle.hpp | 15 +++++++++++++++ 3 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 src/weapon_muzzle.cpp create mode 100644 src/weapon_muzzle.hpp diff --git a/src/register_types.cpp b/src/register_types.cpp index cd341dd..f54187a 100644 --- a/src/register_types.cpp +++ b/src/register_types.cpp @@ -9,6 +9,7 @@ #include "tunnels_game_state.hpp" #include "tunnels_player.hpp" #include "weapon_data.hpp" +#include "weapon_muzzle.hpp" #include "utils/game_mode.hpp" #include "utils/game_root.hpp" #include "utils/game_state.hpp" @@ -35,16 +36,21 @@ void initialize_gdextension_types(ModuleInitializationLevel p_level) ClassDB::register_class(); ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); - ClassDB::register_class(); ClassDB::register_class(); ClassDB::register_class(); ClassDB::register_class(); + + ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + + ClassDB::register_class(); + ClassDB::register_class(); } extern "C" diff --git a/src/weapon_muzzle.cpp b/src/weapon_muzzle.cpp new file mode 100644 index 0000000..cb7d932 --- /dev/null +++ b/src/weapon_muzzle.cpp @@ -0,0 +1,16 @@ +#include "weapon_muzzle.hpp" +#include "player_character.hpp" +#include "utils/godot_macros.h" + +namespace godot { +void WeaponMuzzle::_bind_methods() { +#define CLASSNAME WeaponMuzzle +} + +void WeaponMuzzle::_enter_tree() { GDGAMEONLY(); + PlayerCharacter *owner = Object::cast_to(this->get_owner()); + if(!owner) + return; + owner->set_weapon_muzzle(this); +} +} diff --git a/src/weapon_muzzle.hpp b/src/weapon_muzzle.hpp new file mode 100644 index 0000000..3c8922b --- /dev/null +++ b/src/weapon_muzzle.hpp @@ -0,0 +1,15 @@ +#ifndef WEAPON_MUZZLE_HPP +#define WEAPON_MUZZLE_HPP + +#include "godot_cpp/classes/node3d.hpp" + +namespace godot { +class WeaponMuzzle : public Node3D { + GDCLASS(WeaponMuzzle, Node3D); + static void _bind_methods(); +public: + virtual void _enter_tree() override; +}; +} + +#endif // !WEAPON_MUZZLE_HPP