generated from Persson-dev/Godot-Xmake
add bullet decay
This commit is contained in:
@@ -19,6 +19,8 @@ class Bullet : public godot::Node3D {
|
|||||||
private:
|
private:
|
||||||
bool m_Stuck;
|
bool m_Stuck;
|
||||||
float m_LifeTime;
|
float m_LifeTime;
|
||||||
|
|
||||||
|
void SetTransparency(godot::Node* a_Root, float a_Transparency);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace blitz
|
} // namespace blitz
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#include <client/Bullet.h>
|
#include <client/Bullet.h>
|
||||||
|
|
||||||
#include <godot_cpp/classes/engine.hpp>
|
#include <godot_cpp/classes/engine.hpp>
|
||||||
|
#include <godot_cpp/classes/geometry_instance3d.hpp>
|
||||||
#include <godot_cpp/classes/physics_direct_space_state3d.hpp>
|
#include <godot_cpp/classes/physics_direct_space_state3d.hpp>
|
||||||
#include <godot_cpp/classes/physics_ray_query_parameters3d.hpp>
|
#include <godot_cpp/classes/physics_ray_query_parameters3d.hpp>
|
||||||
#include <godot_cpp/classes/world3d.hpp>
|
#include <godot_cpp/classes/world3d.hpp>
|
||||||
@@ -32,6 +33,9 @@ void Bullet::_process(float a_Delta) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto* head = get_node<Node3D>("Armature");
|
||||||
|
SetTransparency(head, m_LifeTime / MaxAlive);
|
||||||
|
|
||||||
if (m_Stuck)
|
if (m_Stuck)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -49,8 +53,18 @@ void Bullet::_process(float a_Delta) {
|
|||||||
m_Stuck = true;
|
m_Stuck = true;
|
||||||
Vector3 intersectPoint = result["position"];
|
Vector3 intersectPoint = result["position"];
|
||||||
|
|
||||||
auto* head = get_node<Node3D>("Armature");
|
|
||||||
head->set_global_position(intersectPoint);
|
head->set_global_position(intersectPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Bullet::SetTransparency(Node* a_Root, float a_Transparency) {
|
||||||
|
for (int i = 0; i < a_Root->get_child_count(); i++) {
|
||||||
|
SetTransparency(a_Root->get_child(i), a_Transparency);
|
||||||
|
}
|
||||||
|
|
||||||
|
GeometryInstance3D* mesh = Object::cast_to<GeometryInstance3D>(a_Root);
|
||||||
|
if (mesh) {
|
||||||
|
mesh->set_transparency(a_Transparency);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace blitz
|
} // namespace blitz
|
||||||
Reference in New Issue
Block a user