mirror of
https://github.com/Relintai/voxelman.git
synced 2024-11-14 10:17:20 +01:00
More work on porting PropTool.
This commit is contained in:
parent
2bf00fd547
commit
d8d34d5bce
3
SCsub
3
SCsub
@ -58,12 +58,13 @@ sources = [
|
|||||||
|
|
||||||
"world/voxel_world_editor.cpp",
|
"world/voxel_world_editor.cpp",
|
||||||
|
|
||||||
|
"prop_tool/prop_tool.cpp",
|
||||||
"prop_tool/prop_tool_entity.cpp",
|
"prop_tool/prop_tool_entity.cpp",
|
||||||
"prop_tool/prop_tool_prop.cpp",
|
"prop_tool/prop_tool_prop.cpp",
|
||||||
"prop_tool/prop_tool_scene.cpp",
|
"prop_tool/prop_tool_scene.cpp",
|
||||||
"prop_tool/prop_tool_light.cpp",
|
"prop_tool/prop_tool_light.cpp",
|
||||||
"prop_tool/prop_tool_mesh.cpp",
|
"prop_tool/prop_tool_mesh.cpp",
|
||||||
#"prop_tool/prop_tool_editor_plugin.cpp",
|
"prop_tool/prop_tool_editor_plugin.cpp",
|
||||||
]
|
]
|
||||||
|
|
||||||
if ARGUMENTS.get('custom_modules_shared', 'no') == 'yes':
|
if ARGUMENTS.get('custom_modules_shared', 'no') == 'yes':
|
||||||
|
@ -151,10 +151,6 @@ void PropTool::set_target_prop(const Ref<PropData> &prop) {
|
|||||||
rebuild_hierarchy();
|
rebuild_hierarchy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropTool::get_plugin() {
|
|
||||||
//return _plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PropTool::target_prop_set(const Ref<PropData> &prop) {
|
void PropTool::target_prop_set(const Ref<PropData> &prop) {
|
||||||
_target_prop = prop;
|
_target_prop = prop;
|
||||||
|
|
||||||
@ -189,6 +185,14 @@ void PropTool::load_scene_for(PropTool *t, const Ref<PropData> &prop) {
|
|||||||
//s->set_owner(this);
|
//s->set_owner(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PropToolEditorPlugin *PropTool::get_plugin() {
|
||||||
|
return _plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PropTool::set_plugin(PropToolEditorPlugin *plugin) {
|
||||||
|
_plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
PropTool::PropTool() {
|
PropTool::PropTool() {
|
||||||
_snap_to_mesh = false;
|
_snap_to_mesh = false;
|
||||||
_snap_axis = Vector3(0, -1, 0);
|
_snap_axis = Vector3(0, -1, 0);
|
||||||
@ -197,3 +201,9 @@ PropTool::PropTool(EditorNode *p_editor) {
|
|||||||
_snap_to_mesh = false;
|
_snap_to_mesh = false;
|
||||||
_snap_axis = Vector3(0, -1, 0);
|
_snap_axis = Vector3(0, -1, 0);
|
||||||
}
|
}
|
||||||
|
PropTool::~PropTool() {
|
||||||
|
_target_prop.unref();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PropTool::_bind_methods() {
|
||||||
|
}
|
@ -45,10 +45,12 @@ public:
|
|||||||
void rebuild_hierarchy();
|
void rebuild_hierarchy();
|
||||||
void refresh_set(bool value);
|
void refresh_set(bool value);
|
||||||
void set_target_prop(const Ref<PropData> &prop);
|
void set_target_prop(const Ref<PropData> &prop);
|
||||||
void get_plugin();
|
|
||||||
void target_prop_set(const Ref<PropData> &prop);
|
void target_prop_set(const Ref<PropData> &prop);
|
||||||
void load_scene_for(PropTool *t, const Ref<PropData> &prop);
|
void load_scene_for(PropTool *t, const Ref<PropData> &prop);
|
||||||
|
|
||||||
|
PropToolEditorPlugin *get_plugin();
|
||||||
|
void set_plugin(PropToolEditorPlugin *plugin);
|
||||||
|
|
||||||
PropTool();
|
PropTool();
|
||||||
PropTool(EditorNode *p_editor);
|
PropTool(EditorNode *p_editor);
|
||||||
~PropTool();
|
~PropTool();
|
||||||
|
@ -22,7 +22,11 @@ SOFTWARE.
|
|||||||
|
|
||||||
#include "prop_tool_editor_plugin.h"
|
#include "prop_tool_editor_plugin.h"
|
||||||
|
|
||||||
|
#include "core/os/dir_access.h"
|
||||||
|
#include "core/os/file_access.h"
|
||||||
#include "editor/editor_scale.h"
|
#include "editor/editor_scale.h"
|
||||||
|
#include "prop_tool.h"
|
||||||
|
#include "scene/resources/packed_scene.h"
|
||||||
|
|
||||||
void PropToolEditorPlugin::edit(Object *p_object) {
|
void PropToolEditorPlugin::edit(Object *p_object) {
|
||||||
Ref<PropData> pedited_prop(p_object);
|
Ref<PropData> pedited_prop(p_object);
|
||||||
@ -61,57 +65,44 @@ String PropToolEditorPlugin::create_or_get_scene_path(const Ref<PropData> &data)
|
|||||||
|
|
||||||
String path = temp_path + data->get_path().get_file().get_basename() + ".tscn";
|
String path = temp_path + data->get_path().get_file().get_basename() + ".tscn";
|
||||||
|
|
||||||
//Directory dir : Directory = Directory.new()
|
if (!FileAccess::exists(path))
|
||||||
|
create_scene(data);
|
||||||
|
|
||||||
//if not dir.file_exists(path):
|
return path;
|
||||||
// create_scene(data)
|
|
||||||
|
|
||||||
return path
|
|
||||||
}
|
}
|
||||||
PropTool *PropToolEditorPlugin::create_or_get_scene(const Ref<PropData> &data) {
|
PropTool *PropToolEditorPlugin::create_or_get_scene(const Ref<PropData> &data) {
|
||||||
/*
|
|
||||||
ERR_FAIL_COND_V(!data.is_valid(), NULL);
|
ERR_FAIL_COND_V(!data.is_valid(), NULL);
|
||||||
|
|
||||||
String path = temp_path + data->get_path().get_file().get_basename() + ".tscn";
|
String path = temp_path + data->get_path().get_file().get_basename() + ".tscn";
|
||||||
|
|
||||||
var dir : Directory = Directory.new();
|
|
||||||
|
|
||||||
Ref<PackedScene> ps;
|
Ref<PackedScene> ps;
|
||||||
|
|
||||||
if not dir.file_exists(path):;
|
if (!FileAccess::exists(path))
|
||||||
ps = create_scene(data);
|
ps = create_scene(data);
|
||||||
else:;
|
else
|
||||||
ps = ResourceLoader.load(path, "PackedScene");
|
ps = ResourceLoader::load(path, "PackedScene");
|
||||||
|
|
||||||
if ps == null:;
|
if (!ps.is_valid())
|
||||||
return null;
|
return NULL;
|
||||||
|
|
||||||
var pt : PropTool = ps.instance() as PropTool;
|
PropTool *pt = Object::cast_to<PropTool>(ps->instance());
|
||||||
pt.plugin = self;
|
pt->set_plugin(this);
|
||||||
return pt;
|
return pt;
|
||||||
*/
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
Ref<PackedScene> PropToolEditorPlugin::create_scene(const Ref<PropData> &data) {
|
Ref<PackedScene> PropToolEditorPlugin::create_scene(const Ref<PropData> &data) {
|
||||||
/*
|
PropTool *pt = memnew(PropTool);
|
||||||
func create_scene(data: PropData) -> PackedScene:
|
|
||||||
var pt : PropTool = PropTool.new()
|
|
||||||
|
|
||||||
pt.plugin = self
|
pt->set_plugin(this);
|
||||||
pt.set_target_prop(data)
|
pt->set_target_prop(data);
|
||||||
|
|
||||||
var ps : PackedScene = PackedScene.new()
|
Ref<PackedScene> ps;
|
||||||
ps.pack(pt)
|
ps.instance();
|
||||||
|
ps->pack(pt);
|
||||||
|
|
||||||
var err = ResourceSaver.save(temp_path + data.resource_path.get_file().get_basename() + ".tscn", ps)
|
Error err = ResourceSaver::save(temp_path + data->get_path().get_file().get_basename() + ".tscn", ps);
|
||||||
|
|
||||||
pt.queue_free()
|
pt->queue_delete();
|
||||||
return ps
|
return ps;
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
return Ref<PackedScene>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PropToolEditorPlugin::PropToolEditorPlugin(EditorNode *p_node) {
|
PropToolEditorPlugin::PropToolEditorPlugin(EditorNode *p_node) {
|
||||||
|
@ -36,6 +36,8 @@ SOFTWARE.
|
|||||||
|
|
||||||
#include "editor/plugins/spatial_editor_plugin.h"
|
#include "editor/plugins/spatial_editor_plugin.h"
|
||||||
|
|
||||||
|
class PropTool;
|
||||||
|
|
||||||
class PropToolEditorPlugin : public EditorPlugin {
|
class PropToolEditorPlugin : public EditorPlugin {
|
||||||
GDCLASS(PropToolEditorPlugin, EditorPlugin);
|
GDCLASS(PropToolEditorPlugin, EditorPlugin);
|
||||||
|
|
||||||
@ -54,8 +56,6 @@ public:
|
|||||||
~PropToolEditorPlugin();
|
~PropToolEditorPlugin();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _notification(int p_what);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
String temp_path;
|
String temp_path;
|
||||||
|
|
||||||
|
@ -64,12 +64,13 @@ SOFTWARE.
|
|||||||
|
|
||||||
#include "world/voxel_world_editor.h"
|
#include "world/voxel_world_editor.h"
|
||||||
|
|
||||||
|
#include "prop_tool/prop_tool.h"
|
||||||
|
#include "prop_tool/prop_tool_editor_plugin.h"
|
||||||
#include "prop_tool/prop_tool_entity.h"
|
#include "prop_tool/prop_tool_entity.h"
|
||||||
#include "prop_tool/prop_tool_light.h"
|
#include "prop_tool/prop_tool_light.h"
|
||||||
#include "prop_tool/prop_tool_mesh.h"
|
#include "prop_tool/prop_tool_mesh.h"
|
||||||
#include "prop_tool/prop_tool_prop.h"
|
#include "prop_tool/prop_tool_prop.h"
|
||||||
#include "prop_tool/prop_tool_scene.h"
|
#include "prop_tool/prop_tool_scene.h"
|
||||||
//#include "prop_tool/prop_tool_editor_plugin.h"
|
|
||||||
|
|
||||||
void register_voxelman_types() {
|
void register_voxelman_types() {
|
||||||
ClassDB::register_class<VoxelmanQueue>();
|
ClassDB::register_class<VoxelmanQueue>();
|
||||||
@ -112,6 +113,7 @@ void register_voxelman_types() {
|
|||||||
|
|
||||||
ClassDB::register_class<GroundClutterFoliage>();
|
ClassDB::register_class<GroundClutterFoliage>();
|
||||||
|
|
||||||
|
ClassDB::register_class<PropTool>();
|
||||||
ClassDB::register_class<PropToolEntity>();
|
ClassDB::register_class<PropToolEntity>();
|
||||||
ClassDB::register_class<PropToolProp>();
|
ClassDB::register_class<PropToolProp>();
|
||||||
ClassDB::register_class<PropToolMesh>();
|
ClassDB::register_class<PropToolMesh>();
|
||||||
@ -122,9 +124,9 @@ void register_voxelman_types() {
|
|||||||
EditorPlugins::add_by_type<VoxelWorldEditorPlugin>();
|
EditorPlugins::add_by_type<VoxelWorldEditorPlugin>();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
// EditorPlugins::add_by_type<PropToolEditorPlugin>();
|
EditorPlugins::add_by_type<PropToolEditorPlugin>();
|
||||||
//#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregister_voxelman_types() {
|
void unregister_voxelman_types() {
|
||||||
|
Loading…
Reference in New Issue
Block a user