From 39892b4a7c115af07ea2b069ecb1f5b1838fba10 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sun, 25 Apr 2021 16:16:16 +0200 Subject: [PATCH] Added 2 more virtual methods to PropDataEntry. --- props/prop_data_entry.cpp | 21 +++++++++++++++++++++ props/prop_data_entry.h | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/props/prop_data_entry.cpp b/props/prop_data_entry.cpp index 1e5975a..091c7b5 100644 --- a/props/prop_data_entry.cpp +++ b/props/prop_data_entry.cpp @@ -33,6 +33,8 @@ SOFTWARE. #define Spatial Node3D #endif +#include "../prop_mesher.h" + Transform PropDataEntry::get_transform() const { return _transform; } @@ -59,6 +61,12 @@ Node *PropDataEntry::processor_get_node_for(const Transform &transform) { bool PropDataEntry::processor_evaluate_children() { return call("_processor_evaluate_children"); } +bool PropDataEntry::only_contains_mesh() { + return call("_only_contains_mesh"); +} +void PropDataEntry::add_to_mesher(Ref mesher) { + call("_add_to_mesher", mesher); +} bool PropDataEntry::_processor_handles(Node *node) { return false; @@ -71,6 +79,11 @@ Node *PropDataEntry::_processor_get_node_for(const Transform &transform) { bool PropDataEntry::_processor_evaluate_children() { return true; } +bool PropDataEntry::_only_contains_mesh() { + return false; +} +void PropDataEntry::_add_to_mesher(Ref mesher) { +} PropDataEntry::PropDataEntry() { } @@ -99,13 +112,21 @@ void PropDataEntry::_bind_methods() { BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::BOOL, "evaluate"), "_processor_evaluate_children")); + BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::BOOL, "is"), "_only_contains_mesh")); + BIND_VMETHOD(MethodInfo("_add_to_mesher", PropertyInfo(Variant::OBJECT, "mesher", PROPERTY_HINT_RESOURCE_TYPE, "PropMesher"))); + ClassDB::bind_method(D_METHOD("processor_handles", "node"), &PropDataEntry::processor_handles); ClassDB::bind_method(D_METHOD("processor_process", "prop_data", "node", "transform"), &PropDataEntry::processor_process); ClassDB::bind_method(D_METHOD("processor_get_node_for", "prop_data"), &PropDataEntry::processor_get_node_for); ClassDB::bind_method(D_METHOD("processor_evaluate_children"), &PropDataEntry::processor_evaluate_children); + ClassDB::bind_method(D_METHOD("only_contains_mesh"), &PropDataEntry::only_contains_mesh); + ClassDB::bind_method(D_METHOD("add_to_mesher", "mesher"), &PropDataEntry::add_to_mesher); ClassDB::bind_method(D_METHOD("_processor_handles", "node"), &PropDataEntry::_processor_handles); ClassDB::bind_method(D_METHOD("_processor_process", "prop_data", "node", "transform"), &PropDataEntry::_processor_process); ClassDB::bind_method(D_METHOD("_processor_get_node_for", "transform"), &PropDataEntry::_processor_get_node_for); ClassDB::bind_method(D_METHOD("_processor_evaluate_children"), &PropDataEntry::_processor_evaluate_children); + ClassDB::bind_method(D_METHOD("_only_contains_mesh"), &PropDataEntry::_only_contains_mesh); + ClassDB::bind_method(D_METHOD("_add_to_mesher", "mesher"), &PropDataEntry::_add_to_mesher); + } diff --git a/props/prop_data_entry.h b/props/prop_data_entry.h index e8874cc..78f2294 100644 --- a/props/prop_data_entry.h +++ b/props/prop_data_entry.h @@ -38,6 +38,7 @@ SOFTWARE. #endif class PropData; +class PropMesher; class PropDataEntry : public Resource { GDCLASS(PropDataEntry, Resource); @@ -54,11 +55,15 @@ public: void processor_process(Ref prop_data, Node *node, const Transform &transform); Node *processor_get_node_for(const Transform &transform); bool processor_evaluate_children(); + bool only_contains_mesh(); + void add_to_mesher(Ref mesher); virtual bool _processor_handles(Node *node); virtual void _processor_process(Ref prop_data, Node *node, const Transform &transform); virtual Node *_processor_get_node_for(const Transform &transform); virtual bool _processor_evaluate_children(); + virtual bool _only_contains_mesh(); + virtual void _add_to_mesher(Ref mesher); PropDataEntry(); ~PropDataEntry();