aboutsummaryrefslogtreecommitdiff
path: root/editor/plugins/path_editor_plugin.cpp
diff options
context:
space:
mode:
authorFerenc Arn2017-05-24 16:47:34 -0500
committerFerenc Arn2017-05-24 17:09:53 -0500
commitfdf301e78bd41415b30d1b2f55eadcd515aaa78d (patch)
treed349477804ef8b5b5b01241e63c3593113c03da4 /editor/plugins/path_editor_plugin.cpp
parent2e3145de65257ed39a5d01c5592ea0fb90cd00ba (diff)
downloadgodot-fdf301e78bd41415b30d1b2f55eadcd515aaa78d.tar.gz
godot-fdf301e78bd41415b30d1b2f55eadcd515aaa78d.tar.zst
godot-fdf301e78bd41415b30d1b2f55eadcd515aaa78d.zip
Diffstat (limited to 'editor/plugins/path_editor_plugin.cpp')
-rw-r--r--editor/plugins/path_editor_plugin.cpp42
1 files changed, 21 insertions, 21 deletions
diff --git a/editor/plugins/path_editor_plugin.cpp b/editor/plugins/path_editor_plugin.cpp
index 12b6dce79..1355a321d 100644
--- a/editor/plugins/path_editor_plugin.cpp
+++ b/editor/plugins/path_editor_plugin.cpp
@@ -33,7 +33,6 @@
#include "scene/resources/curve.h"
#include "spatial_editor_plugin.h"
-#if 0
String PathSpatialGizmo::get_handle_name(int p_idx) const {
Ref<Curve3D> c = path->get_curve();
@@ -111,7 +110,7 @@ void PathSpatialGizmo::set_handle(int p_idx,Camera *p_camera, const Point2& p_po
float snap = SpatialEditor::get_singleton()->get_translate_snap();
inters.snap(snap);
}
-
+
Vector3 local = gi.xform(inters);
c->set_point_pos(p_idx,local);
}
@@ -218,15 +217,16 @@ void PathSpatialGizmo::redraw(){
if (c.is_null())
return;
- Vector3Array v3a=c->tesselate();
- //Vector3Array v3a=c->get_baked_points();
+ PoolVector<Vector3> v3a=c->tesselate();
+ //PoolVector<Vector3> v3a=c->get_baked_points();
int v3s = v3a.size();
if (v3s==0)
return;
Vector<Vector3> v3p;
- Vector3Array::Read r = v3a.read();
+ PoolVector<Vector3>::Read r = v3a.read();
+ // BUG: the following won't work when v3s, avoid drawing as a temporary workaround.
for(int i=0;i<v3s-1;i++) {
v3p.push_back(r[i]);
@@ -287,7 +287,7 @@ Ref<SpatialEditorGizmo> PathEditorPlugin::create_spatial_gizmo(Spatial* p_spatia
return Ref<SpatialEditorGizmo>();
}
-bool PathEditorPlugin::forward_spatial_gui_input(Camera* p_camera,const InputEvent& p_event) {
+bool PathEditorPlugin::forward_spatial_gui_input(Camera* p_camera, const Ref<InputEvent> &p_event) {
if (!path)
return false;
@@ -299,15 +299,16 @@ bool PathEditorPlugin::forward_spatial_gui_input(Camera* p_camera,const InputEve
static const int click_dist = 10; //should make global
+ Ref<InputEventMouseButton> mb = p_event;
+
- if (p_event.type==InputEvent::MOUSE_BUTTON) {
+ if (mb.is_valid()) {
- const InputEventMouseButton &mb=p_event.mouse_button;
Point2 mbpos(mb->get_pos().x,mb->get_pos().y);
if (mb->is_pressed() && mb->get_button_index()==BUTTON_LEFT && (curve_create->is_pressed() || (curve_edit->is_pressed() && mb->get_control()))) {
//click into curve, break it down
- Vector3Array v3a = c->tesselate();
+ PoolVector<Vector3> v3a = c->tesselate();
int idx=0;
int rc=v3a.size();
int closest_seg=-1;
@@ -315,7 +316,7 @@ bool PathEditorPlugin::forward_spatial_gui_input(Camera* p_camera,const InputEve
float closest_d=1e20;
if (rc>=2) {
- Vector3Array::Read r = v3a.read();
+ PoolVector<Vector3>::Read r = v3a.read();
if (p_camera->unproject_position(gt.xform(c->get_point_pos(0))).distance_to(mbpos)<click_dist)
return false; //nope, existing
@@ -387,7 +388,7 @@ bool PathEditorPlugin::forward_spatial_gui_input(Camera* p_camera,const InputEve
if (c->get_point_count()==0)
org=path->get_transform().get_origin();
else
- org=gt.xform(c->get_point_pos(c->get_point_count()));
+ org=gt.xform(c->get_point_pos(c->get_point_count()-1));
Plane p(org,p_camera->get_transform().basis.get_axis(2));
Vector3 ray_from=p_camera->project_ray_origin(mbpos);
Vector3 ray_dir=p_camera->project_ray_normal(mbpos);
@@ -470,7 +471,7 @@ void PathEditorPlugin::edit(Object *p_object) {
bool PathEditorPlugin::handles(Object *p_object) const {
- return p_object->is_type("Path");
+ return p_object->is_class("Path");
}
void PathEditorPlugin::make_visible(bool p_visible) {
@@ -546,18 +547,18 @@ PathEditorPlugin::PathEditorPlugin(EditorNode *p_node) {
singleton=this;
path_material = Ref<SpatialMaterial>( memnew( SpatialMaterial ));
- path_material->set_parameter( SpatialMaterial::PARAM_DIFFUSE,Color(0.5,0.5,1.0,0.8) );
- path_material->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA, true);
+ path_material->set_albedo( Color(0.5,0.5,1.0,0.8) );
+ path_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
path_material->set_line_width(3);
- path_material->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- path_material->set_flag(Material::FLAG_UNSHADED,true);
+ path_material->set_cull_mode(SpatialMaterial::CULL_DISABLED);
+ path_material->set_flag(SpatialMaterial::FLAG_UNSHADED,true);
path_thin_material = Ref<SpatialMaterial>( memnew( SpatialMaterial ));
- path_thin_material->set_parameter( SpatialMaterial::PARAM_DIFFUSE,Color(0.5,0.5,1.0,0.4) );
- path_thin_material->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA, true);
+ path_thin_material->set_albedo( Color(0.5,0.5,1.0,0.4) );
+ path_thin_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
path_thin_material->set_line_width(1);
- path_thin_material->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- path_thin_material->set_flag(Material::FLAG_UNSHADED,true);
+ path_thin_material->set_cull_mode(SpatialMaterial::CULL_DISABLED);
+ path_thin_material->set_flag(SpatialMaterial::FLAG_UNSHADED,true);
//SpatialEditor::get_singleton()->add_gizmo_plugin(this);
@@ -616,4 +617,3 @@ PathEditorPlugin::~PathEditorPlugin()
{
}
-#endif