mirror of
https://github.com/godotengine/godot.git
synced 2024-11-10 22:23:07 +00:00
Better support in ScriptLanguage for GC based scripts
This commit is contained in:
parent
3b5b893a0e
commit
d57b09e47b
@ -27,7 +27,7 @@
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
#include "reference.h"
|
||||
|
||||
#include "script_language.h"
|
||||
|
||||
|
||||
bool Reference::init_ref() {
|
||||
@ -66,11 +66,21 @@ int Reference::reference_get_count() const {
|
||||
void Reference::reference(){
|
||||
|
||||
refcount.ref();
|
||||
if (get_script_instance()) {
|
||||
get_script_instance()->refcount_incremented();
|
||||
}
|
||||
|
||||
}
|
||||
bool Reference::unreference(){
|
||||
|
||||
return refcount.unref();
|
||||
bool die = refcount.unref();
|
||||
|
||||
if (get_script_instance()) {
|
||||
die = die && get_script_instance()->refcount_decremented();
|
||||
}
|
||||
|
||||
return die;
|
||||
|
||||
}
|
||||
|
||||
Reference::Reference() {
|
||||
|
@ -129,6 +129,9 @@ public:
|
||||
virtual void notification(int p_notification)=0;
|
||||
|
||||
|
||||
virtual void refcount_incremented() {}
|
||||
virtual bool refcount_decremented() { return true; } //return true if it can die
|
||||
|
||||
virtual Ref<Script> get_script() const=0;
|
||||
|
||||
virtual bool is_placeholder() const { return false; }
|
||||
|
Loading…
Reference in New Issue
Block a user