merging okam changes
This commit is contained in:
parent
ebd743f7c2
commit
1572238adb
@ -56,28 +56,36 @@ Error EventQueue::push_call(uint32_t p_instance_ID, const StringName& p_method,
|
|||||||
|
|
||||||
buffer_end+=sizeof(Event);
|
buffer_end+=sizeof(Event);
|
||||||
|
|
||||||
if (args==1) {
|
if (args>=1) {
|
||||||
|
|
||||||
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
||||||
buffer_end+=sizeof(Variant);
|
buffer_end+=sizeof(Variant);
|
||||||
*v=p_arg1;
|
*v=p_arg1;
|
||||||
} else if (args==2) {
|
}
|
||||||
|
|
||||||
|
if (args>=2) {
|
||||||
|
|
||||||
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
||||||
buffer_end+=sizeof(Variant);
|
buffer_end+=sizeof(Variant);
|
||||||
*v=p_arg2;
|
*v=p_arg2;
|
||||||
} else if (args==3) {
|
}
|
||||||
|
|
||||||
|
if (args>=3) {
|
||||||
|
|
||||||
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
||||||
buffer_end+=sizeof(Variant);
|
buffer_end+=sizeof(Variant);
|
||||||
*v=p_arg3;
|
*v=p_arg3;
|
||||||
|
|
||||||
} else if (args==4) {
|
}
|
||||||
|
|
||||||
|
if (args>=4) {
|
||||||
|
|
||||||
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
||||||
buffer_end+=sizeof(Variant);
|
buffer_end+=sizeof(Variant);
|
||||||
*v=p_arg4;
|
*v=p_arg4;
|
||||||
} else if (args==5) {
|
}
|
||||||
|
|
||||||
|
if (args>=5) {
|
||||||
|
|
||||||
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
Variant * v = memnew_placement( &event_buffer[ buffer_end ], Variant );
|
||||||
buffer_end+=sizeof(Variant);
|
buffer_end+=sizeof(Variant);
|
||||||
|
@ -1198,7 +1198,7 @@ void KinematicBody2D::_bind_methods() {
|
|||||||
ObjectTypeDB::bind_method(_MD("move","rel_vec"),&KinematicBody2D::move);
|
ObjectTypeDB::bind_method(_MD("move","rel_vec"),&KinematicBody2D::move);
|
||||||
ObjectTypeDB::bind_method(_MD("move_to","position"),&KinematicBody2D::move_to);
|
ObjectTypeDB::bind_method(_MD("move_to","position"),&KinematicBody2D::move_to);
|
||||||
|
|
||||||
ObjectTypeDB::bind_method(_MD("can_move_to","position"),&KinematicBody2D::can_move_to);
|
ObjectTypeDB::bind_method(_MD("can_move_to","position","discrete"),&KinematicBody2D::can_move_to,DEFVAL(false));
|
||||||
|
|
||||||
ObjectTypeDB::bind_method(_MD("is_colliding"),&KinematicBody2D::is_colliding);
|
ObjectTypeDB::bind_method(_MD("is_colliding"),&KinematicBody2D::is_colliding);
|
||||||
|
|
||||||
|
@ -65,8 +65,13 @@ void VisibilityNotifier2D::_exit_viewport(Viewport* p_viewport){
|
|||||||
void VisibilityNotifier2D::set_rect(const Rect2& p_rect){
|
void VisibilityNotifier2D::set_rect(const Rect2& p_rect){
|
||||||
|
|
||||||
rect=p_rect;
|
rect=p_rect;
|
||||||
if (is_inside_tree())
|
if (is_inside_tree()) {
|
||||||
get_world_2d()->_update_notifier(this,get_global_transform().xform(rect));
|
get_world_2d()->_update_notifier(this,get_global_transform().xform(rect));
|
||||||
|
if (get_tree()->is_editor_hint()) {
|
||||||
|
update();
|
||||||
|
item_rect_changed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_change_notify("rect");
|
_change_notify("rect");
|
||||||
}
|
}
|
||||||
|
@ -490,10 +490,10 @@ Vector<Vector3> Navigation::get_simple_path(const Vector3& p_start, const Vector
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 Navigation::get_closest_point_to_segment(const Vector3& p_from,const Vector3& p_to) {
|
Vector3 Navigation::get_closest_point_to_segment(const Vector3& p_from,const Vector3& p_to,const bool& p_use_collision) {
|
||||||
|
|
||||||
|
|
||||||
bool use_collision=false;
|
bool use_collision=p_use_collision;
|
||||||
Vector3 closest_point;
|
Vector3 closest_point;
|
||||||
float closest_point_d=1e20;
|
float closest_point_d=1e20;
|
||||||
NavMesh *closest_navmesh=NULL;
|
NavMesh *closest_navmesh=NULL;
|
||||||
@ -633,7 +633,7 @@ void Navigation::_bind_methods() {
|
|||||||
ObjectTypeDB::bind_method(_MD("navmesh_remove","id"),&Navigation::navmesh_remove);
|
ObjectTypeDB::bind_method(_MD("navmesh_remove","id"),&Navigation::navmesh_remove);
|
||||||
|
|
||||||
ObjectTypeDB::bind_method(_MD("get_simple_path","start","end","optimize"),&Navigation::get_simple_path,DEFVAL(true));
|
ObjectTypeDB::bind_method(_MD("get_simple_path","start","end","optimize"),&Navigation::get_simple_path,DEFVAL(true));
|
||||||
ObjectTypeDB::bind_method(_MD("get_closest_point_to_segment","start","end"),&Navigation::get_closest_point_to_segment);
|
ObjectTypeDB::bind_method(_MD("get_closest_point_to_segment","start","end","use_collision"),&Navigation::get_closest_point_to_segment,DEFVAL(false));
|
||||||
ObjectTypeDB::bind_method(_MD("get_closest_point","to_point"),&Navigation::get_closest_point);
|
ObjectTypeDB::bind_method(_MD("get_closest_point","to_point"),&Navigation::get_closest_point);
|
||||||
ObjectTypeDB::bind_method(_MD("get_closest_point_normal","to_point"),&Navigation::get_closest_point_normal);
|
ObjectTypeDB::bind_method(_MD("get_closest_point_normal","to_point"),&Navigation::get_closest_point_normal);
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ public:
|
|||||||
void navmesh_remove(int p_id);
|
void navmesh_remove(int p_id);
|
||||||
|
|
||||||
Vector<Vector3> get_simple_path(const Vector3& p_start, const Vector3& p_end,bool p_optimize=true);
|
Vector<Vector3> get_simple_path(const Vector3& p_start, const Vector3& p_end,bool p_optimize=true);
|
||||||
Vector3 get_closest_point_to_segment(const Vector3& p_from,const Vector3& p_to);
|
Vector3 get_closest_point_to_segment(const Vector3& p_from,const Vector3& p_to,const bool& p_use_collision=false);
|
||||||
Vector3 get_closest_point(const Vector3& p_point);
|
Vector3 get_closest_point(const Vector3& p_point);
|
||||||
Vector3 get_closest_point_normal(const Vector3& p_point);
|
Vector3 get_closest_point_normal(const Vector3& p_point);
|
||||||
|
|
||||||
|
@ -2869,7 +2869,7 @@ void Control::_bind_methods() {
|
|||||||
BIND_CONSTANT( SIZE_EXPAND_FILL );
|
BIND_CONSTANT( SIZE_EXPAND_FILL );
|
||||||
|
|
||||||
ADD_SIGNAL( MethodInfo("resized") );
|
ADD_SIGNAL( MethodInfo("resized") );
|
||||||
ADD_SIGNAL( MethodInfo("input_event") );
|
ADD_SIGNAL( MethodInfo("input_event",PropertyInfo(Variant::INPUT_EVENT,"ev")) );
|
||||||
ADD_SIGNAL( MethodInfo("mouse_enter") );
|
ADD_SIGNAL( MethodInfo("mouse_enter") );
|
||||||
ADD_SIGNAL( MethodInfo("mouse_exit") );
|
ADD_SIGNAL( MethodInfo("mouse_exit") );
|
||||||
ADD_SIGNAL( MethodInfo("focus_enter") );
|
ADD_SIGNAL( MethodInfo("focus_enter") );
|
||||||
|
@ -229,6 +229,33 @@ void SpriteFramesEditor::_empty_pressed() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SpriteFramesEditor::_empty2_pressed() {
|
||||||
|
|
||||||
|
|
||||||
|
int from=-1;
|
||||||
|
|
||||||
|
if (tree->get_selected()) {
|
||||||
|
|
||||||
|
from = tree->get_selected()->get_metadata(0);
|
||||||
|
sel=from;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
from=frames->get_frame_count();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Ref<Texture> r;
|
||||||
|
|
||||||
|
undo_redo->create_action("Add Empty");
|
||||||
|
undo_redo->add_do_method(frames,"add_frame",r,from+1);
|
||||||
|
undo_redo->add_undo_method(frames,"remove_frame",from+1);
|
||||||
|
undo_redo->add_do_method(this,"_update_library");
|
||||||
|
undo_redo->add_undo_method(this,"_update_library");
|
||||||
|
undo_redo->commit_action();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void SpriteFramesEditor::_up_pressed() {
|
void SpriteFramesEditor::_up_pressed() {
|
||||||
|
|
||||||
if (!tree->get_selected())
|
if (!tree->get_selected())
|
||||||
@ -322,6 +349,8 @@ void SpriteFramesEditor::_update_library() {
|
|||||||
ti->set_text(0,"Frame "+itos(i));
|
ti->set_text(0,"Frame "+itos(i));
|
||||||
ti->set_icon(0,frames->get_frame(i));
|
ti->set_icon(0,frames->get_frame(i));
|
||||||
}
|
}
|
||||||
|
if (frames->get_frame(i).is_valid())
|
||||||
|
ti->set_tooltip(0,frames->get_frame(i)->get_path());
|
||||||
ti->set_metadata(0,i);
|
ti->set_metadata(0,i);
|
||||||
ti->set_icon_max_width(0,96);
|
ti->set_icon_max_width(0,96);
|
||||||
if (sel==i)
|
if (sel==i)
|
||||||
@ -355,6 +384,7 @@ void SpriteFramesEditor::_bind_methods() {
|
|||||||
ObjectTypeDB::bind_method(_MD("_input_event"),&SpriteFramesEditor::_input_event);
|
ObjectTypeDB::bind_method(_MD("_input_event"),&SpriteFramesEditor::_input_event);
|
||||||
ObjectTypeDB::bind_method(_MD("_load_pressed"),&SpriteFramesEditor::_load_pressed);
|
ObjectTypeDB::bind_method(_MD("_load_pressed"),&SpriteFramesEditor::_load_pressed);
|
||||||
ObjectTypeDB::bind_method(_MD("_empty_pressed"),&SpriteFramesEditor::_empty_pressed);
|
ObjectTypeDB::bind_method(_MD("_empty_pressed"),&SpriteFramesEditor::_empty_pressed);
|
||||||
|
ObjectTypeDB::bind_method(_MD("_empty2_pressed"),&SpriteFramesEditor::_empty2_pressed);
|
||||||
ObjectTypeDB::bind_method(_MD("_item_edited"),&SpriteFramesEditor::_item_edited);
|
ObjectTypeDB::bind_method(_MD("_item_edited"),&SpriteFramesEditor::_item_edited);
|
||||||
ObjectTypeDB::bind_method(_MD("_delete_pressed"),&SpriteFramesEditor::_delete_pressed);
|
ObjectTypeDB::bind_method(_MD("_delete_pressed"),&SpriteFramesEditor::_delete_pressed);
|
||||||
ObjectTypeDB::bind_method(_MD("_paste_pressed"),&SpriteFramesEditor::_paste_pressed);
|
ObjectTypeDB::bind_method(_MD("_paste_pressed"),&SpriteFramesEditor::_paste_pressed);
|
||||||
@ -387,9 +417,13 @@ SpriteFramesEditor::SpriteFramesEditor() {
|
|||||||
hbc->add_child(paste);
|
hbc->add_child(paste);
|
||||||
|
|
||||||
empty = memnew( Button );
|
empty = memnew( Button );
|
||||||
empty->set_text("Insert Empty");
|
empty->set_text("Insert Empty (Before)");
|
||||||
hbc->add_child(empty);
|
hbc->add_child(empty);
|
||||||
|
|
||||||
|
empty2 = memnew( Button );
|
||||||
|
empty2->set_text("Insert Empty (After)");
|
||||||
|
hbc->add_child(empty2);
|
||||||
|
|
||||||
move_up = memnew( Button );
|
move_up = memnew( Button );
|
||||||
move_up->set_text("Up");
|
move_up->set_text("Up");
|
||||||
hbc->add_child(move_up);
|
hbc->add_child(move_up);
|
||||||
@ -422,6 +456,7 @@ SpriteFramesEditor::SpriteFramesEditor() {
|
|||||||
_delete->connect("pressed", this,"_delete_pressed");
|
_delete->connect("pressed", this,"_delete_pressed");
|
||||||
paste->connect("pressed", this,"_paste_pressed");
|
paste->connect("pressed", this,"_paste_pressed");
|
||||||
empty->connect("pressed", this,"_empty_pressed");
|
empty->connect("pressed", this,"_empty_pressed");
|
||||||
|
empty2->connect("pressed", this,"_empty2_pressed");
|
||||||
move_up->connect("pressed", this,"_up_pressed");
|
move_up->connect("pressed", this,"_up_pressed");
|
||||||
move_down->connect("pressed", this,"_down_pressed");
|
move_down->connect("pressed", this,"_down_pressed");
|
||||||
file->connect("files_selected", this,"_file_load_request");
|
file->connect("files_selected", this,"_file_load_request");
|
||||||
|
@ -46,6 +46,7 @@ class SpriteFramesEditor : public PanelContainer {
|
|||||||
Button *_delete;
|
Button *_delete;
|
||||||
Button *paste;
|
Button *paste;
|
||||||
Button *empty;
|
Button *empty;
|
||||||
|
Button *empty2;
|
||||||
Button *move_up;
|
Button *move_up;
|
||||||
Button *move_down;
|
Button *move_down;
|
||||||
Tree *tree;
|
Tree *tree;
|
||||||
@ -65,6 +66,7 @@ class SpriteFramesEditor : public PanelContainer {
|
|||||||
void _file_load_request(const DVector<String>& p_path);
|
void _file_load_request(const DVector<String>& p_path);
|
||||||
void _paste_pressed();
|
void _paste_pressed();
|
||||||
void _empty_pressed();
|
void _empty_pressed();
|
||||||
|
void _empty2_pressed();
|
||||||
void _delete_pressed();
|
void _delete_pressed();
|
||||||
void _delete_confirm_pressed();
|
void _delete_confirm_pressed();
|
||||||
void _up_pressed();
|
void _up_pressed();
|
||||||
|
@ -208,13 +208,16 @@ class DaeExporter:
|
|||||||
|
|
||||||
|
|
||||||
imgid = self.new_id("image")
|
imgid = self.new_id("image")
|
||||||
|
|
||||||
|
print("FOR: "+imgpath)
|
||||||
|
|
||||||
if (not os.path.isfile(imgpath)):
|
# if (not os.path.isfile(imgpath)):
|
||||||
if imgpath.endswith((".bmp",".rgb",".png",".jpeg",".jpg",".jp2",".tga",".cin",".dpx",".exr",".hdr",".tif")):
|
# print("NOT FILE?")
|
||||||
imgpath="images/"+os.path.basename(imgpath)
|
# if imgpath.endswith((".bmp",".rgb",".png",".jpeg",".jpg",".jp2",".tga",".cin",".dpx",".exr",".hdr",".tif")):
|
||||||
else:
|
# imgpath="images/"+os.path.basename(imgpath)
|
||||||
imgpath="images/"+image.name+".png"
|
# else:
|
||||||
|
# imgpath="images/"+image.name+".png"
|
||||||
|
|
||||||
self.writel(S_IMGS,1,'<image id="'+imgid+'" name="'+image.name+'">')
|
self.writel(S_IMGS,1,'<image id="'+imgid+'" name="'+image.name+'">')
|
||||||
self.writel(S_IMGS,2,'<init_from>'+imgpath+'</init_from>"/>')
|
self.writel(S_IMGS,2,'<init_from>'+imgpath+'</init_from>"/>')
|
||||||
self.writel(S_IMGS,1,'</image>')
|
self.writel(S_IMGS,1,'</image>')
|
||||||
@ -529,8 +532,8 @@ class DaeExporter:
|
|||||||
|
|
||||||
if (not (f.material_index in surface_indices)):
|
if (not (f.material_index in surface_indices)):
|
||||||
surface_indices[f.material_index]=[]
|
surface_indices[f.material_index]=[]
|
||||||
print("Type: "+str(type(f.material_index)))
|
#print("Type: "+str(type(f.material_index)))
|
||||||
print("IDX: "+str(f.material_index)+"/"+str(len(mesh.materials)))
|
#print("IDX: "+str(f.material_index)+"/"+str(len(mesh.materials)))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
#Bizarre blender behavior i don't understand, so catching exception
|
#Bizarre blender behavior i don't understand, so catching exception
|
||||||
@ -914,14 +917,14 @@ class DaeExporter:
|
|||||||
if (node.data.shape_keys!=None):
|
if (node.data.shape_keys!=None):
|
||||||
sk = node.data.shape_keys
|
sk = node.data.shape_keys
|
||||||
if (sk.animation_data):
|
if (sk.animation_data):
|
||||||
print("HAS ANIM")
|
#print("HAS ANIM")
|
||||||
print("DRIVERS: "+str(len(sk.animation_data.drivers)))
|
#print("DRIVERS: "+str(len(sk.animation_data.drivers)))
|
||||||
for d in sk.animation_data.drivers:
|
for d in sk.animation_data.drivers:
|
||||||
if (d.driver):
|
if (d.driver):
|
||||||
for v in d.driver.variables:
|
for v in d.driver.variables:
|
||||||
for t in v.targets:
|
for t in v.targets:
|
||||||
if (t.id!=None and t.id.name in self.scene.objects):
|
if (t.id!=None and t.id.name in self.scene.objects):
|
||||||
print("LINKING "+str(node)+" WITH "+str(t.id.name))
|
#print("LINKING "+str(node)+" WITH "+str(t.id.name))
|
||||||
self.armature_for_morph[node]=self.scene.objects[t.id.name]
|
self.armature_for_morph[node]=self.scene.objects[t.id.name]
|
||||||
|
|
||||||
|
|
||||||
@ -1234,7 +1237,7 @@ class DaeExporter:
|
|||||||
il+=1
|
il+=1
|
||||||
|
|
||||||
self.writel(S_NODES,il,'<matrix sid="transform">'+strmtx(node.matrix_local)+'</matrix>')
|
self.writel(S_NODES,il,'<matrix sid="transform">'+strmtx(node.matrix_local)+'</matrix>')
|
||||||
print("NODE TYPE: "+node.type+" NAME: "+node.name)
|
#print("NODE TYPE: "+node.type+" NAME: "+node.name)
|
||||||
if (node.type=="MESH"):
|
if (node.type=="MESH"):
|
||||||
self.export_mesh_node(node,il)
|
self.export_mesh_node(node,il)
|
||||||
elif (node.type=="CURVE"):
|
elif (node.type=="CURVE"):
|
||||||
@ -1258,7 +1261,7 @@ class DaeExporter:
|
|||||||
return False
|
return False
|
||||||
if (self.config["use_active_layers"]):
|
if (self.config["use_active_layers"]):
|
||||||
valid=False
|
valid=False
|
||||||
print("NAME: "+node.name)
|
#print("NAME: "+node.name)
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
if (node.layers[i] and self.scene.layers[i]):
|
if (node.layers[i] and self.scene.layers[i]):
|
||||||
valid=True
|
valid=True
|
||||||
@ -1408,7 +1411,7 @@ class DaeExporter:
|
|||||||
# Change frames first, export objects last
|
# Change frames first, export objects last
|
||||||
# This improves performance enormously
|
# This improves performance enormously
|
||||||
|
|
||||||
print("anim from: "+str(start)+" to "+str(end)+" allowed: "+str(allowed))
|
#print("anim from: "+str(start)+" to "+str(end)+" allowed: "+str(allowed))
|
||||||
for t in range(start,end+1):
|
for t in range(start,end+1):
|
||||||
self.scene.frame_set(t)
|
self.scene.frame_set(t)
|
||||||
key = t * frame_len - frame_sub
|
key = t * frame_len - frame_sub
|
||||||
@ -1462,7 +1465,7 @@ class DaeExporter:
|
|||||||
bone_name=self.skeleton_info[node]["bone_ids"][bone]
|
bone_name=self.skeleton_info[node]["bone_ids"][bone]
|
||||||
|
|
||||||
if (not (bone_name in xform_cache)):
|
if (not (bone_name in xform_cache)):
|
||||||
print("has bone: "+bone_name)
|
#print("has bone: "+bone_name)
|
||||||
xform_cache[bone_name]=[]
|
xform_cache[bone_name]=[]
|
||||||
|
|
||||||
posebone = node.pose.bones[bone.name]
|
posebone = node.pose.bones[bone.name]
|
||||||
@ -1548,15 +1551,15 @@ class DaeExporter:
|
|||||||
bone.matrix_basis = Matrix()
|
bone.matrix_basis = Matrix()
|
||||||
|
|
||||||
|
|
||||||
print("allowed skeletons "+str(allowed_skeletons))
|
#print("allowed skeletons "+str(allowed_skeletons))
|
||||||
|
|
||||||
print(str(x))
|
#print(str(x))
|
||||||
|
|
||||||
tcn = self.export_animation(int(x.frame_range[0]),int(x.frame_range[1]+0.5),allowed_skeletons)
|
tcn = self.export_animation(int(x.frame_range[0]),int(x.frame_range[1]+0.5),allowed_skeletons)
|
||||||
framelen=(1.0/self.scene.render.fps)
|
framelen=(1.0/self.scene.render.fps)
|
||||||
start = x.frame_range[0]*framelen
|
start = x.frame_range[0]*framelen
|
||||||
end = x.frame_range[1]*framelen
|
end = x.frame_range[1]*framelen
|
||||||
print("Export anim: "+x.name)
|
#print("Export anim: "+x.name)
|
||||||
self.writel(S_ANIM_CLIPS,1,'<animation_clip name="'+x.name+'" start="'+str(start)+'" end="'+str(end)+'">')
|
self.writel(S_ANIM_CLIPS,1,'<animation_clip name="'+x.name+'" start="'+str(start)+'" end="'+str(end)+'">')
|
||||||
for z in tcn:
|
for z in tcn:
|
||||||
self.writel(S_ANIM_CLIPS,2,'<instance_animation url="#'+z+'"/>')
|
self.writel(S_ANIM_CLIPS,2,'<instance_animation url="#'+z+'"/>')
|
||||||
|
Loading…
Reference in New Issue
Block a user