Годо: Как экспортировать кнопку инструмента с помощью GDExtension и C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Годо: Как экспортировать кнопку инструмента с помощью GDExtension и C++?

Сообщение Anonymous »

Я пытаюсь экспортировать кнопку, вызывающую функцию для моего пользовательского узла Godot. Цель этой кнопки — пересчитать сетку, когда мне нужно, чтобы она была пересчитана. Меня пока не так беспокоит обработка этой логики, моя первая проблема — заставить кнопку вообще работать. Вот файлы .h и .cpp того, что я пробовал на данный момент:
voxel_chunk.h

Код: Выделить всё

#pragma once

#include 

namespace godot {
class VoxelChunk : public Node3D{
GDCLASS(VoxelChunk, Node3D)

private:
void _generateWorld();

protected:
static void _bind_methods();

public:
Callable generateWorld();

VoxelChunk();
~VoxelChunk();
};
}
voxel_chunk.cpp

Код: Выделить всё

#include "voxel_chunk.h"
#include 

using namespace godot;

VoxelChunk::VoxelChunk() {
}

VoxelChunk::~VoxelChunk()
{
}

void VoxelChunk::_generateWorld()
{
UtilityFunctions::print("Generated");
}

Callable VoxelChunk::generateWorld(){
return callable_mp(this, &VoxelChunk::_generateWorld);
}

void VoxelChunk::_bind_methods() {
ClassDB::bind_method(D_METHOD("generateWorld"), &VoxelChunk::generateWorld);

ADD_PROPERTY(PropertyInfo(Variant::CALLABLE, "", PROPERTY_HINT_TOOL_BUTTON, "Generate Chunk", PROPERTY_USAGE_EDITOR), "", "generateWorld");
}
Все компилируется правильно, появляются пользовательский узел и кнопка, однако, когда я пытаюсь нажать кнопку, происходит одно из двух. Либо редактор выйдет из строя, либо я получу ошибку: ОШИБКА: Действие кнопки инструмента «» является недопустимым вызовом. Ожидаемым результатом должно быть то, что «Сгенерировано» будет напечатано на консоли.
Я новичок в использовании GDExtension и Godot с C++, поэтому, пожалуйста, простите меня, если ответ очевиден.

Подробнее здесь: https://stackoverflow.com/questions/798 ... sion-and-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»