diff options
385 files changed, 44199 insertions, 8260 deletions
diff --git a/core/func_ref.cpp b/core/func_ref.cpp index 644d8b5b63..ca890111be 100644 --- a/core/func_ref.cpp +++ b/core/func_ref.cpp @@ -61,11 +61,7 @@ void FuncRef::_bind_methods() { MethodInfo mi; mi.name="call_func"; Vector<Variant> defargs; - for(int i=0;i<10;i++) { - mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); - defargs.push_back(Variant()); - } - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"call_func:Variant",&FuncRef::call_func,mi,defargs); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"call_func:Variant",&FuncRef::call_func,mi,defargs); } diff --git a/core/globals.cpp b/core/globals.cpp index e760bc00d4..b822f52f15 100644 --- a/core/globals.cpp +++ b/core/globals.cpp @@ -1332,17 +1332,18 @@ Variant _GLOBAL_DEF( const String& p_var, const Variant& p_default) { void Globals::add_singleton(const Singleton &p_singleton) { singletons.push_back(p_singleton); + singleton_ptrs[p_singleton.name]=p_singleton.ptr; } Object* Globals::get_singleton_object(const String& p_name) const { - for(const List<Singleton>::Element *E=singletons.front();E;E=E->next()) { - if (E->get().name == p_name) { - return E->get().ptr; - }; - }; - return NULL; + const Map<StringName,Object*>::Element *E=singleton_ptrs.find(p_name); + if (!E) + return NULL; + else + return E->get(); + }; bool Globals::has_singleton(const String& p_name) const { @@ -1375,6 +1376,25 @@ Vector<String> Globals::get_optimizer_presets() const { } +void Globals::_add_property_info_bind(const Dictionary& p_info) { + + ERR_FAIL_COND(!p_info.has("name")); + ERR_FAIL_COND(!p_info.has("type")); + + PropertyInfo pinfo; + pinfo.name = p_info["name"]; + ERR_FAIL_COND(!props.has(pinfo.name)); + pinfo.type = Variant::Type(p_info["type"].operator int()); + ERR_FAIL_INDEX(pinfo.type, Variant::VARIANT_MAX); + + if (p_info.has("hint")) + pinfo.hint = PropertyHint(p_info["hint"].operator int()); + if (p_info.has("hint_string")) + pinfo.hint_string = p_info["hint_string"]; + + set_custom_property_info(pinfo.name, pinfo); +} + void Globals::set_custom_property_info(const String& p_prop,const PropertyInfo& p_info) { ERR_FAIL_COND(!props.has(p_prop)); @@ -1399,6 +1419,7 @@ void Globals::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_order","name"),&Globals::get_order); ObjectTypeDB::bind_method(_MD("set_persisting","name","enable"),&Globals::set_persisting); ObjectTypeDB::bind_method(_MD("is_persisting","name"),&Globals::is_persisting); + ObjectTypeDB::bind_method(_MD("add_property_info", "hint"),&Globals::_add_property_info_bind); ObjectTypeDB::bind_method(_MD("clear","name"),&Globals::clear); ObjectTypeDB::bind_method(_MD("localize_path","path"),&Globals::localize_path); ObjectTypeDB::bind_method(_MD("globalize_path","path"),&Globals::globalize_path); diff --git a/core/globals.h b/core/globals.h index 68bb859ace..5e0bdb0e54 100644 --- a/core/globals.h +++ b/core/globals.h @@ -91,11 +91,14 @@ protected: Error _save_settings_binary(const String& p_file,const Map<String,List<String> > &props,const CustomMap& p_custom=CustomMap()); List<Singleton> singletons; + Map<StringName,Object*> singleton_ptrs; Error _save_custom_bnd(const String& p_file); bool _load_resource_pack(const String& p_pack); + void _add_property_info_bind(const Dictionary& p_info); + protected: static void _bind_methods(); diff --git a/core/input_map.cpp b/core/input_map.cpp index 08ee8138a3..3a0f9596f5 100644 --- a/core/input_map.cpp +++ b/core/input_map.cpp @@ -290,6 +290,10 @@ bool InputMap::event_is_joy_motion_action_pressed(const InputEvent& p_event) con } +const Map<StringName, InputMap::Action>& InputMap::get_action_map() const { + return input_map; +} + void InputMap::load_from_globals() { input_map.clear();; diff --git a/core/input_map.h b/core/input_map.h index dc5a911963..a224765d8c 100644 --- a/core/input_map.h +++ b/core/input_map.h @@ -35,12 +35,14 @@ class InputMap : public Object { OBJ_TYPE( InputMap, Object ); - static InputMap *singleton; - +public: struct Action { int id; List<InputEvent> inputs; }; +private: + static InputMap *singleton; + mutable Map<StringName, Action> input_map; mutable Map<int,StringName> input_id_map; @@ -72,7 +74,7 @@ public: bool event_is_action(const InputEvent& p_event, const StringName& p_action) const; bool event_is_joy_motion_action_pressed(const InputEvent& p_event) const; - + const Map<StringName, Action>& get_action_map() const; void load_from_globals(); void load_default(); diff --git a/core/io/compression.cpp b/core/io/compression.cpp index a17e358cbb..ca44d24911 100644 --- a/core/io/compression.cpp +++ b/core/io/compression.cpp @@ -60,6 +60,10 @@ int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size,M strm.avail_in=p_src_size; int aout = deflateBound(&strm,p_src_size);; + /*if (aout>p_src_size) { + deflateEnd(&strm); + return -1; + }*/ strm.avail_out=aout; strm.next_in=(Bytef*)p_src; strm.next_out=p_dst; @@ -107,19 +111,21 @@ int Compression::get_max_compressed_buffer_size(int p_src_size,Mode p_mode){ -void Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size,Mode p_mode){ +int Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size,Mode p_mode){ switch(p_mode) { case MODE_FASTLZ: { + int ret_size=0; + if (p_dst_max_size<16) { uint8_t dst[16]; - fastlz_decompress(p_src,p_src_size,dst,16); + ret_size = fastlz_decompress(p_src,p_src_size,dst,16); copymem(p_dst,dst,p_dst_max_size); } else { - fastlz_decompress(p_src,p_src_size,p_dst,p_dst_max_size); + ret_size = fastlz_decompress(p_src,p_src_size,p_dst,p_dst_max_size); } - return; + return ret_size; } break; case MODE_DEFLATE: { @@ -130,7 +136,7 @@ void Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t * strm.avail_in= 0; strm.next_in=Z_NULL; int err = inflateInit(&strm); - ERR_FAIL_COND(err!=Z_OK); + ERR_FAIL_COND_V(err!=Z_OK,-1); strm.avail_in=p_src_size; strm.avail_out=p_dst_max_size; @@ -138,11 +144,12 @@ void Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t * strm.next_out=p_dst; err = inflate(&strm,Z_FINISH); + int total = strm.total_out; inflateEnd(&strm); - ERR_FAIL_COND(err!=Z_STREAM_END); - return; + ERR_FAIL_COND_V(err!=Z_STREAM_END,-1); + return total; } break; } - ERR_FAIL(); + ERR_FAIL_V(-1); } diff --git a/core/io/compression.h b/core/io/compression.h index 07a293c940..e0a4d31a51 100644 --- a/core/io/compression.h +++ b/core/io/compression.h @@ -43,7 +43,7 @@ public: static int compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size,Mode p_mode=MODE_FASTLZ); static int get_max_compressed_buffer_size(int p_src_size,Mode p_mode=MODE_FASTLZ); - static void decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size,Mode p_mode=MODE_FASTLZ); + static int decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size,Mode p_mode=MODE_FASTLZ); Compression(); }; diff --git a/core/io/networked_multiplayer_peer.cpp b/core/io/networked_multiplayer_peer.cpp index 851064b6e8..47e5f3729c 100644 --- a/core/io/networked_multiplayer_peer.cpp +++ b/core/io/networked_multiplayer_peer.cpp @@ -5,25 +5,34 @@ void NetworkedMultiplayerPeer::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_transfer_mode","mode"), &NetworkedMultiplayerPeer::set_transfer_mode ); ObjectTypeDB::bind_method(_MD("set_target_peer","id"), &NetworkedMultiplayerPeer::set_target_peer ); - ObjectTypeDB::bind_method(_MD("set_channel","id"), &NetworkedMultiplayerPeer::set_channel ); ObjectTypeDB::bind_method(_MD("get_packet_peer"), &NetworkedMultiplayerPeer::get_packet_peer ); - ObjectTypeDB::bind_method(_MD("get_packet_channel"), &NetworkedMultiplayerPeer::get_packet_channel ); ObjectTypeDB::bind_method(_MD("poll"), &NetworkedMultiplayerPeer::poll ); ObjectTypeDB::bind_method(_MD("get_connection_status"), &NetworkedMultiplayerPeer::get_connection_status ); + ObjectTypeDB::bind_method(_MD("get_unique_id"), &NetworkedMultiplayerPeer::get_unique_id ); + + ObjectTypeDB::bind_method(_MD("set_refuse_new_connections","enable"), &NetworkedMultiplayerPeer::set_refuse_new_connections ); + ObjectTypeDB::bind_method(_MD("is_refusing_new_connections"), &NetworkedMultiplayerPeer::is_refusing_new_connections ); BIND_CONSTANT( TRANSFER_MODE_UNRELIABLE ); + BIND_CONSTANT( TRANSFER_MODE_UNRELIABLE_ORDERED ); BIND_CONSTANT( TRANSFER_MODE_RELIABLE ); - BIND_CONSTANT( TRANSFER_MODE_ORDERED ); BIND_CONSTANT( CONNECTION_DISCONNECTED ); BIND_CONSTANT( CONNECTION_CONNECTING ); BIND_CONSTANT( CONNECTION_CONNECTED ); - ADD_SIGNAL( MethodInfo("peer_connected",PropertyInfo(Variant::STRING,"id"))); - ADD_SIGNAL( MethodInfo("peer_disconnected",PropertyInfo(Variant::STRING,"id"))); + BIND_CONSTANT( TARGET_PEER_BROADCAST ); + BIND_CONSTANT( TARGET_PEER_SERVER ); + + + ADD_SIGNAL( MethodInfo("peer_connected",PropertyInfo(Variant::INT,"id"))); + ADD_SIGNAL( MethodInfo("peer_disconnected",PropertyInfo(Variant::INT,"id"))); + ADD_SIGNAL( MethodInfo("server_disconnected")); + ADD_SIGNAL( MethodInfo("connection_succeeded") ); + ADD_SIGNAL( MethodInfo("connection_failed") ); } NetworkedMultiplayerPeer::NetworkedMultiplayerPeer() { diff --git a/core/io/networked_multiplayer_peer.h b/core/io/networked_multiplayer_peer.h index 7071a52d7b..485200a9a9 100644 --- a/core/io/networked_multiplayer_peer.h +++ b/core/io/networked_multiplayer_peer.h @@ -11,10 +11,14 @@ protected: static void _bind_methods(); public: + enum { + TARGET_PEER_BROADCAST=0, + TARGET_PEER_SERVER=1 + }; enum TransferMode { TRANSFER_MODE_UNRELIABLE, + TRANSFER_MODE_UNRELIABLE_ORDERED, TRANSFER_MODE_RELIABLE, - TRANSFER_MODE_ORDERED }; enum ConnectionStatus { @@ -25,17 +29,20 @@ public: virtual void set_transfer_mode(TransferMode p_mode)=0; - virtual void set_target_peer(const StringName& p_peer_id)=0; - virtual void set_channel(int p_channel)=0; - + virtual void set_target_peer(int p_peer_id)=0; - virtual StringName get_packet_peer() const=0; - virtual int get_packet_channel() const=0; + virtual int get_packet_peer() const=0; virtual bool is_server() const=0; virtual void poll()=0; + virtual int get_unique_id() const=0; + + virtual void set_refuse_new_connections(bool p_enable)=0; + virtual bool is_refusing_new_connections() const=0; + + virtual ConnectionStatus get_connection_status() const=0; NetworkedMultiplayerPeer(); diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index a620dc0fef..0544fd6ba8 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -2175,6 +2175,9 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path,const RES& p_ if (takeover_paths) { r->set_path(p_path+"::"+itos(r->get_subindex()),true); } +#ifdef TOOLS_ENABLED + r->set_edited(false); +#endif } else { save_unicode_string(r->get_path()); //actual external } diff --git a/core/io/resource_format_xml.cpp b/core/io/resource_format_xml.cpp index 0d545b16f5..44fbaf02ac 100644 --- a/core/io/resource_format_xml.cpp +++ b/core/io/resource_format_xml.cpp @@ -2800,6 +2800,10 @@ Error ResourceFormatSaverXMLInstance::save(const String &p_path,const RES& p_res if (takeover_paths) { res->set_path(p_path+"::"+itos(idx),true); } +#ifdef TOOLS_ENABLED + res->set_edited(false); +#endif + } write_string("\n",false); diff --git a/core/io/stream_peer.cpp b/core/io/stream_peer.cpp index 306e7d8c9d..baaeacaf18 100644 --- a/core/io/stream_peer.cpp +++ b/core/io/stream_peer.cpp @@ -222,6 +222,7 @@ void StreamPeer::put_double(double p_val){ void StreamPeer::put_utf8_string(const String& p_string) { CharString cs=p_string.utf8(); + put_u32(p_string.length()); put_data((const uint8_t*)cs.get_data(),cs.length()); } @@ -348,8 +349,10 @@ String StreamPeer::get_string(int p_bytes){ ERR_FAIL_COND_V(p_bytes<0,String()); Vector<char> buf; - buf.resize(p_bytes+1); - get_data((uint8_t*)&buf[0],p_bytes); + Error err = buf.resize(p_bytes+1); + ERR_FAIL_COND_V(err!=OK,String()); + err = get_data((uint8_t*)&buf[0],p_bytes); + ERR_FAIL_COND_V(err!=OK,String()); buf[p_bytes]=0; return buf.ptr(); @@ -359,8 +362,10 @@ String StreamPeer::get_utf8_string(int p_bytes){ ERR_FAIL_COND_V(p_bytes<0,String()); Vector<uint8_t> buf; - buf.resize(p_bytes); - get_data(buf.ptr(),p_bytes); + Error err = buf.resize(p_bytes); + ERR_FAIL_COND_V(err!=OK,String()); + err = get_data(buf.ptr(),p_bytes); + ERR_FAIL_COND_V(err!=OK,String()); String ret; ret.parse_utf8((const char*)buf.ptr(),buf.size()); @@ -371,8 +376,10 @@ Variant StreamPeer::get_var(){ int len = get_32(); Vector<uint8_t> var; - var.resize(len); - get_data(var.ptr(),len); + Error err = var.resize(len); + ERR_FAIL_COND_V(err!=OK,Variant()); + err = get_data(var.ptr(),len); + ERR_FAIL_COND_V(err!=OK,Variant()); Variant ret; decode_variant(ret,var.ptr(),len); @@ -420,3 +427,128 @@ void StreamPeer::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_utf8_string","bytes"),&StreamPeer::get_utf8_string); ObjectTypeDB::bind_method(_MD("get_var:Variant"),&StreamPeer::get_var); } +//////////////////////////////// + + +void StreamPeerBuffer::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("seek","pos"),&StreamPeerBuffer::seek); + ObjectTypeDB::bind_method(_MD("get_size"),&StreamPeerBuffer::get_size); + ObjectTypeDB::bind_method(_MD("get_pos"),&StreamPeerBuffer::get_pos); + ObjectTypeDB::bind_method(_MD("resize","size"),&StreamPeerBuffer::resize); + ObjectTypeDB::bind_method(_MD("set_data_array","data"),&StreamPeerBuffer::set_data_array); + ObjectTypeDB::bind_method(_MD("get_data_array"),&StreamPeerBuffer::get_data_array); + ObjectTypeDB::bind_method(_MD("clear"),&StreamPeerBuffer::clear); + ObjectTypeDB::bind_method(_MD("duplicate:StreamPeerBuffer"),&StreamPeerBuffer::duplicate); + +} + + +Error StreamPeerBuffer::put_data(const uint8_t* p_data,int p_bytes) { + + if (p_bytes<=0) + return OK; + + if (pointer+p_bytes > data.size()) { + data.resize(pointer+p_bytes); + + } + + DVector<uint8_t>::Write w = data.write(); + copymem(&w[pointer],p_data,p_bytes); + + pointer+=p_bytes; + return OK; +} + +Error StreamPeerBuffer::put_partial_data(const uint8_t* p_data,int p_bytes, int &r_sent){ + + r_sent=p_bytes; + return put_data(p_data,p_bytes); +} + +Error StreamPeerBuffer::get_data(uint8_t* p_buffer, int p_bytes){ + + int recv; + get_partial_data(p_buffer,p_bytes,recv); + if (recv!=p_bytes) + return ERR_INVALID_PARAMETER; + + return OK; + +} +Error StreamPeerBuffer::get_partial_data(uint8_t* p_buffer, int p_bytes,int &r_received){ + + + if (pointer+p_bytes > data.size()) { + r_received=data.size()-pointer; + if (r_received<=0) { + r_received=0; + return OK; //you got 0 + } + } else { + r_received=p_bytes; + } + + DVector<uint8_t>::Read r = data.read(); + copymem(p_buffer,r.ptr(),r_received); +} + +int StreamPeerBuffer::get_available_bytes() const { + + return data.size()-pointer; +} + +void StreamPeerBuffer::seek(int p_pos){ + + ERR_FAIL_COND(p_pos < 0); + ERR_FAIL_COND(p_pos > data.size()); + pointer=p_pos; +} +int StreamPeerBuffer::get_size() const{ + + return data.size(); +} + +int StreamPeerBuffer::get_pos() const { + + return pointer; +} + +void StreamPeerBuffer::resize(int p_size){ + + data.resize(p_size); +} + +void StreamPeerBuffer::set_data_array(const DVector<uint8_t> & p_data){ + + data=p_data; + pointer=0; +} + +DVector<uint8_t> StreamPeerBuffer::get_data_array() const{ + + return data; +} + + +void StreamPeerBuffer::clear() { + + data.resize(0); + pointer=0; +} + + +Ref<StreamPeerBuffer> StreamPeerBuffer::duplicate() const { + + Ref<StreamPeerBuffer> spb; + spb.instance(); + spb->data=data; + return spb; +} + + +StreamPeerBuffer::StreamPeerBuffer() { + + pointer=0; +} diff --git a/core/io/stream_peer.h b/core/io/stream_peer.h index 970e6695a5..f28e6f594d 100644 --- a/core/io/stream_peer.h +++ b/core/io/stream_peer.h @@ -91,4 +91,40 @@ public: StreamPeer() { big_endian=false; } }; + +class StreamPeerBuffer : public StreamPeer { + + OBJ_TYPE(StreamPeerBuffer,StreamPeer); + + DVector<uint8_t> data; + int pointer; +protected: + + static void _bind_methods(); +public: + Error put_data(const uint8_t* p_data,int p_bytes); + Error put_partial_data(const uint8_t* p_data,int p_bytes, int &r_sent); + + Error get_data(uint8_t* p_buffer, int p_bytes); + Error get_partial_data(uint8_t* p_buffer, int p_bytes,int &r_received); + + virtual int get_available_bytes() const; + + void seek(int p_pos); + int get_size() const; + int get_pos() const; + void resize(int p_size); + + + void set_data_array(const DVector<uint8_t> & p_data); + DVector<uint8_t> get_data_array() const; + + void clear(); + + Ref<StreamPeerBuffer> duplicate() const; + + StreamPeerBuffer(); +}; + + #endif // STREAM_PEER_H diff --git a/core/math/math_2d.h b/core/math/math_2d.h index fbf700fb9c..90aae9fe50 100644 --- a/core/math/math_2d.h +++ b/core/math/math_2d.h @@ -618,6 +618,15 @@ struct Matrix32 { operator String() const; + Matrix32(real_t xx, real_t xy, real_t yx, real_t yy, real_t ox, real_t oy) { + + elements[0][0] = xx; + elements[0][1] = xy; + elements[1][0] = yx; + elements[1][1] = yy; + elements[2][0] = ox; + elements[2][1] = oy; + } Matrix32(real_t p_rot, const Vector2& p_pos); Matrix32() { elements[0][0]=1.0; elements[1][1]=1.0; } diff --git a/core/math/vector3.cpp b/core/math/vector3.cpp index 8afd73f482..b4a13d8f6d 100644 --- a/core/math/vector3.cpp +++ b/core/math/vector3.cpp @@ -65,13 +65,9 @@ int Vector3::max_axis() const { void Vector3::snap(float p_val) { - x+=p_val/2.0; - x-=Math::fmod(x,p_val); - y+=p_val/2.0; - y-=Math::fmod(y,p_val); - z+=p_val/2.0; - z-=Math::fmod(z,p_val); - + x=Math::stepify(x,p_val); + y=Math::stepify(y,p_val); + z=Math::stepify(z,p_val); } Vector3 Vector3::snapped(float p_val) const { diff --git a/core/method_bind.h b/core/method_bind.h index 072953743c..04ff5c22c6 100644 --- a/core/method_bind.h +++ b/core/method_bind.h @@ -52,6 +52,7 @@ enum MethodFlags { METHOD_FLAG_REVERSE=16, // used for events METHOD_FLAG_VIRTUAL=32, METHOD_FLAG_FROM_SCRIPT=64, + METHOD_FLAG_VARARG=128, METHOD_FLAGS_DEFAULT=METHOD_FLAG_NORMAL, }; @@ -229,7 +230,7 @@ public: Vector<StringName> get_argument_names() const; #endif void set_hint_flags(uint32_t p_hint) { hint_flags=p_hint; } - uint32_t get_hint_flags() const { return hint_flags|(is_const()?METHOD_FLAG_CONST:0); } + uint32_t get_hint_flags() const { return hint_flags|(is_const()?METHOD_FLAG_CONST:0)|(is_vararg()?METHOD_FLAG_VARARG:0); } virtual String get_instance_type() const=0; _FORCE_INLINE_ int get_argument_count() const { return argument_count; }; @@ -267,7 +268,7 @@ public: _FORCE_INLINE_ int get_method_id() const { return method_id; } _FORCE_INLINE_ bool is_const() const { return _const; } _FORCE_INLINE_ bool has_return() const { return _returns; } - + virtual bool is_vararg() const { return false; } void set_default_arguments(const Vector<Variant>& p_defargs); @@ -277,7 +278,7 @@ public: template<class T> -class MethodBindNative : public MethodBind { +class MethodBindVarArg : public MethodBind { public: typedef Variant (T::*NativeCall)(const Variant**,int ,Variant::CallError &); protected: @@ -319,7 +320,9 @@ public: } #ifdef PTRCALL_ENABLED - virtual void ptrcall(Object* p_object,const void** p_args,void* r_ret) {} //todo + virtual void ptrcall(Object* p_object,const void** p_args,void* r_ret) { + ERR_FAIL(); //can't call + } //todo #endif @@ -327,14 +330,16 @@ public: virtual bool is_const() const { return false; } virtual String get_instance_type() const { return T::get_type_static(); } - MethodBindNative() { call_method=NULL; _set_returns(true);} + virtual bool is_vararg() const { return true; } + + MethodBindVarArg() { call_method=NULL; _set_returns(true);} }; template<class T > -MethodBind* create_native_method_bind( Variant (T::*p_method)(const Variant**,int ,Variant::CallError &), const MethodInfo& p_info ) { +MethodBind* create_vararg_method_bind( Variant (T::*p_method)(const Variant**,int ,Variant::CallError &), const MethodInfo& p_info ) { - MethodBindNative<T > * a = memnew( (MethodBindNative<T >) ); + MethodBindVarArg<T > * a = memnew( (MethodBindVarArg<T >) ); a->set_method(p_method); a->set_method_info(p_info); return a; diff --git a/core/object.cpp b/core/object.cpp index 26319d42dd..81fdc2a90c 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -59,30 +59,112 @@ struct _ObjectDebugLock { #endif + +PropertyInfo::operator Dictionary() const { + + Dictionary d; + d["name"]=name; + d["type"]=type; + d["hint"]=hint; + d["hint_string"]=hint_string; + d["usage"]=usage; + return d; + +} + +PropertyInfo PropertyInfo::from_dict(const Dictionary& p_dict) { + + PropertyInfo pi; + + if (p_dict.has("type")) + pi.type=Variant::Type(int(p_dict["type"])); + + if (p_dict.has("name")) + pi.name=p_dict["name"]; + + if (p_dict.has("hint")) + pi.hint=PropertyHint(int(p_dict["hint"])); + + if (p_dict.has("hint_string")) + + pi.hint_string=p_dict["hint_string"]; + + if (p_dict.has("usage")) + pi.usage=p_dict["usage"]; + + return pi; +} + + Array convert_property_list(const List<PropertyInfo> * p_list) { Array va; for (const List<PropertyInfo>::Element *E=p_list->front();E;E=E->next()) { - const PropertyInfo &pi = E->get(); - Dictionary d; - d["name"]=pi.name; - d["type"]=pi.type; - d["hint"]=pi.hint; - d["hint_string"]=pi.hint_string; - d["usage"]=pi.usage; - va.push_back(d); + + va.push_back(Dictionary(E->get())); } return va; } +MethodInfo::operator Dictionary() const { + + + Dictionary d; + d["name"]=name; + d["args"]=convert_property_list(&arguments); + Array da; + for(int i=0;i<default_arguments.size();i++) + da.push_back(default_arguments[i]); + d["default_args"]=da; + d["flags"]=flags; + d["id"]=id; + Dictionary r = return_val; + d["return"]=r; + return d; + +} + MethodInfo::MethodInfo() { id=0; flags=METHOD_FLAG_NORMAL; } +MethodInfo MethodInfo::from_dict(const Dictionary& p_dict) { + + MethodInfo mi; + + if (p_dict.has("name")) + mi.name=p_dict["name"]; + Array args; + if (p_dict.has("args")) { + args=p_dict["args"]; + } + + for(int i=0;i<args.size();i++) { + Dictionary d = args[i]; + mi.arguments.push_back(PropertyInfo::from_dict(d)); + } + Array defargs; + if (p_dict.has("default_args")) { + defargs=p_dict["default_args"]; + } + for(int i=0;i<defargs.size();i++) { + mi.default_arguments.push_back(defargs[i]); + } + + if (p_dict.has("return")) { + mi.return_val=PropertyInfo::from_dict(p_dict["return"]); + } + + if (p_dict.has("flags")) + mi.flags=p_dict["flags"]; + + return mi; +} + MethodInfo::MethodInfo(const String& p_name) { id=0; @@ -1012,25 +1094,6 @@ Array Object::_get_property_list_bind() const { } -static Dictionary _get_dict_from_method(const MethodInfo &mi) { - - Dictionary d; - d["name"]=mi.name; - d["args"]=convert_property_list(&mi.arguments); - Array da; - for(int i=0;i<mi.default_arguments.size();i++) - da.push_back(mi.default_arguments[i]); - d["default_args"]=da; - d["flags"]=mi.flags; - d["id"]=mi.id; - Dictionary r; - r["type"]=mi.return_val.type; - r["hint"]=mi.return_val.hint; - r["hint_string"]=mi.return_val.hint_string; - d["return_type"]=r; - return d; - -} Array Object::_get_method_list_bind() const { @@ -1040,7 +1103,7 @@ Array Object::_get_method_list_bind() const { for(List<MethodInfo>::Element *E=ml.front();E;E=E->next()) { - Dictionary d = _get_dict_from_method(E->get()); + Dictionary d = E->get(); //va.push_back(d); ret.push_back(d); } @@ -1305,7 +1368,7 @@ Array Object::_get_signal_list() const{ Array ret; for (List<MethodInfo>::Element *E=signal_list.front();E;E=E->next()) { - ret.push_back(_get_dict_from_method(E->get())); + ret.push_back(Dictionary(E->get())); } return ret; @@ -1630,42 +1693,26 @@ void Object::_bind_methods() { MethodInfo mi; mi.name="emit_signal"; mi.arguments.push_back( PropertyInfo( Variant::STRING, "signal")); - Vector<Variant> defargs; - for(int i=0;i<VARIANT_ARG_MAX;i++) { - mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); - defargs.push_back(Variant()); - } - - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"emit_signal",&Object::_emit_signal,mi,defargs); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"emit_signal",&Object::_emit_signal,mi); } { MethodInfo mi; mi.name="call"; mi.arguments.push_back( PropertyInfo( Variant::STRING, "method")); - Vector<Variant> defargs; - for(int i=0;i<10;i++) { - mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); - defargs.push_back(Variant()); - } - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"call:Variant",&Object::_call_bind,mi,defargs); + + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"call:Variant",&Object::_call_bind,mi); } { MethodInfo mi; mi.name="call_deferred"; mi.arguments.push_back( PropertyInfo( Variant::STRING, "method")); - Vector<Variant> defargs; - for(int i=0;i<VARIANT_ARG_MAX;i++) { - mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); - defargs.push_back(Variant()); - } - - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"call_deferred",&Object::_call_deferred_bind,mi,defargs); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"call_deferred",&Object::_call_deferred_bind,mi); } ObjectTypeDB::bind_method(_MD("callv:Variant","method","arg_array"),&Object::callv); diff --git a/core/object.h b/core/object.h index 400ab3070e..ac3fc51b3e 100644 --- a/core/object.h +++ b/core/object.h @@ -70,6 +70,14 @@ enum PropertyHint { PROPERTY_HINT_OBJECT_ID, PROPERTY_HINT_TYPE_STRING, ///< a type string, the hint is the base type to choose PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE, ///< so something else can provide this (used in scripts) + PROPERTY_HINT_METHOD_OF_VARIANT_TYPE, ///< a method of a type + PROPERTY_HINT_METHOD_OF_BASE_TYPE, ///< a method of a base type + PROPERTY_HINT_METHOD_OF_INSTANCE, ///< a method of an instance + PROPERTY_HINT_METHOD_OF_SCRIPT, ///< a method of a script & base + PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE, ///< a property of a type + PROPERTY_HINT_PROPERTY_OF_BASE_TYPE, ///< a property of a base type + PROPERTY_HINT_PROPERTY_OF_INSTANCE, ///< a property of an instance + PROPERTY_HINT_PROPERTY_OF_SCRIPT, ///< a property of a script & base PROPERTY_HINT_MAX, }; @@ -118,6 +126,11 @@ struct PropertyInfo { _FORCE_INLINE_ PropertyInfo added_usage(int p_fl) const { PropertyInfo pi=*this; pi.usage|=p_fl; return pi; } + + operator Dictionary() const; + + static PropertyInfo from_dict(const Dictionary& p_dict); + PropertyInfo() { type=Variant::NIL; hint=PROPERTY_HINT_NONE; usage = PROPERTY_USAGE_DEFAULT; } PropertyInfo( Variant::Type p_type, const String p_name, PropertyHint p_hint=PROPERTY_HINT_NONE, const String& p_hint_string="",uint32_t p_usage=PROPERTY_USAGE_DEFAULT) { type=p_type; name=p_name; hint=p_hint; hint_string=p_hint_string; usage=p_usage; @@ -142,6 +155,9 @@ struct MethodInfo { inline bool operator<(const MethodInfo& p_method) const { return id==p_method.id?(name < p_method.name):(id<p_method.id); } + operator Dictionary() const; + + static MethodInfo from_dict(const Dictionary& p_dict); MethodInfo(); MethodInfo(const String& p_name); MethodInfo(const String& p_name, const PropertyInfo& p_param1); diff --git a/core/object_type_db.cpp b/core/object_type_db.cpp index ba98797a89..b6a69e3bd4 100644 --- a/core/object_type_db.cpp +++ b/core/object_type_db.cpp @@ -642,7 +642,7 @@ void ObjectTypeDB::get_property_list(StringName p_type, List<PropertyInfo> *p_li TypeInfo *check=type; while(check) { - for(List<PropertyInfo>::Element *E=type->property_list.front();E;E=E->next()) { + for(List<PropertyInfo>::Element *E=check->property_list.front();E;E=E->next()) { if (p_validator) { diff --git a/core/object_type_db.h b/core/object_type_db.h index 3fcd38aa31..725b424c9a 100644 --- a/core/object_type_db.h +++ b/core/object_type_db.h @@ -415,13 +415,13 @@ public: #endif template<class M> - static MethodBind* bind_native_method(uint32_t p_flags, StringName p_name, M p_method,const MethodInfo& p_info=MethodInfo(),const Vector<Variant>& p_default_args=Vector<Variant>()) { + static MethodBind* bind_vararg_method(uint32_t p_flags, StringName p_name, M p_method,const MethodInfo& p_info=MethodInfo(),const Vector<Variant>& p_default_args=Vector<Variant>()) { GLOBAL_LOCK_FUNCTION; - MethodBind *bind = create_native_method_bind(p_method,p_info); + MethodBind *bind = create_vararg_method_bind(p_method,p_info); ERR_FAIL_COND_V(!bind,NULL); String rettype; diff --git a/core/os/input.cpp b/core/os/input.cpp index 531db73838..401ab7ffe2 100644 --- a/core/os/input.cpp +++ b/core/os/input.cpp @@ -53,6 +53,8 @@ void Input::_bind_methods() { ObjectTypeDB::bind_method(_MD("is_mouse_button_pressed","button"),&Input::is_mouse_button_pressed); ObjectTypeDB::bind_method(_MD("is_joy_button_pressed","device","button"),&Input::is_joy_button_pressed); ObjectTypeDB::bind_method(_MD("is_action_pressed","action"),&Input::is_action_pressed); + ObjectTypeDB::bind_method(_MD("is_action_just_pressed","action"),&Input::is_action_just_pressed); + ObjectTypeDB::bind_method(_MD("is_action_just_released","action"),&Input::is_action_just_released); ObjectTypeDB::bind_method(_MD("add_joy_mapping","mapping", "update_existing"),&Input::add_joy_mapping, DEFVAL(false)); ObjectTypeDB::bind_method(_MD("remove_joy_mapping","guid"),&Input::remove_joy_mapping); ObjectTypeDB::bind_method(_MD("is_joy_known","device"),&Input::is_joy_known); diff --git a/core/os/input.h b/core/os/input.h index 16bcc0ff9a..665fb4ad99 100644 --- a/core/os/input.h +++ b/core/os/input.h @@ -55,12 +55,14 @@ public: static Input *get_singleton(); - virtual bool is_key_pressed(int p_scancode)=0; - virtual bool is_mouse_button_pressed(int p_button)=0; - virtual bool is_joy_button_pressed(int p_device, int p_button)=0; - virtual bool is_action_pressed(const StringName& p_action)=0; - - virtual float get_joy_axis(int p_device,int p_axis)=0; + virtual bool is_key_pressed(int p_scancode) const=0; + virtual bool is_mouse_button_pressed(int p_button) const=0; + virtual bool is_joy_button_pressed(int p_device, int p_button) const=0; + virtual bool is_action_pressed(const StringName& p_action) const=0; + virtual bool is_action_just_pressed(const StringName& p_action) const=0; + virtual bool is_action_just_released(const StringName& p_action) const=0; + + virtual float get_joy_axis(int p_device,int p_axis) const=0; virtual String get_joy_name(int p_idx)=0; virtual Array get_connected_joysticks()=0; virtual void joy_connection_changed(int p_idx, bool p_connected, String p_name, String p_guid)=0; @@ -80,9 +82,9 @@ public: virtual void warp_mouse_pos(const Vector2& p_to)=0; - virtual Vector3 get_accelerometer()=0; - virtual Vector3 get_magnetometer()=0; - virtual Vector3 get_gyroscope()=0; + virtual Vector3 get_accelerometer() const=0; + virtual Vector3 get_magnetometer() const=0; + virtual Vector3 get_gyroscope() const=0; virtual void action_press(const StringName& p_action)=0; virtual void action_release(const StringName& p_action)=0; diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp index 8c79657c64..9d920724e1 100644 --- a/core/os/input_event.cpp +++ b/core/os/input_event.cpp @@ -34,8 +34,56 @@ */ bool InputEvent::operator==(const InputEvent &p_event) const { + if (type != p_event.type){ + return false; + } - return true; + switch(type) { + case NONE: + return true; + case KEY: + return key.unicode == p_event.key.unicode + && key.scancode == p_event.key.scancode + && key.echo == p_event.key.echo + && key.pressed == p_event.key.pressed + && key.mod == p_event.key.mod; + case MOUSE_MOTION: + return mouse_motion.x == p_event.mouse_motion.x + && mouse_motion.y == p_event.mouse_motion.y + && mouse_motion.relative_x == p_event.mouse_motion.relative_y + && mouse_motion.button_mask == p_event.mouse_motion.button_mask + && key.mod == p_event.key.mod; + case MOUSE_BUTTON: + return mouse_button.pressed == p_event.mouse_button.pressed + && mouse_button.x == p_event.mouse_button.x + && mouse_button.y == p_event.mouse_button.y + && mouse_button.button_index == p_event.mouse_button.button_index + && mouse_button.button_mask == p_event.mouse_button.button_mask + && key.mod == p_event.key.mod; + case JOYSTICK_MOTION: + return joy_motion.axis == p_event.joy_motion.axis + && joy_motion.axis_value == p_event.joy_motion.axis_value; + case JOYSTICK_BUTTON: + return joy_button.pressed == p_event.joy_button.pressed + && joy_button.button_index == p_event.joy_button.button_index + && joy_button.pressure == p_event.joy_button.pressure; + case SCREEN_TOUCH: + return screen_touch.pressed == p_event.screen_touch.pressed + && screen_touch.index == p_event.screen_touch.index + && screen_touch.x == p_event.screen_touch.x + && screen_touch.y == p_event.screen_touch.y; + case SCREEN_DRAG: + return screen_drag.index == p_event.screen_drag.index + && screen_drag.x == p_event.screen_drag.x + && screen_drag.y == p_event.screen_drag.y; + case ACTION: + return action.action == p_event.action.action + && action.pressed == p_event.action.pressed; + default: + ERR_PRINT("No logic to compare InputEvents of this type, this shouldn't happen."); + } + + return false; } InputEvent::operator String() const { diff --git a/core/os/os.cpp b/core/os/os.cpp index 5f86962048..ee32476234 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -587,6 +587,9 @@ OS::OS() { _time_scale=1.0; _pixel_snap=false; _allow_hidpi=true; + _fixed_frames=0; + _idle_frames=0; + _in_fixed=false; Math::seed(1234567); } diff --git a/core/os/os.h b/core/os/os.h index 2521d67e29..8e9293b3c8 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -62,6 +62,10 @@ class OS { bool _pixel_snap; bool _allow_hidpi; + uint64_t _fixed_frames; + uint64_t _idle_frames; + bool _in_fixed; + char *last_error; public: @@ -282,6 +286,10 @@ public: uint64_t get_frames_drawn(); + uint64_t get_fixed_frames() const { return _fixed_frames; } + uint64_t get_idle_frames() const { return _idle_frames; } + bool is_in_fixed_frame() const { return _in_fixed; } + bool is_stdout_verbose() const; enum CursorShape { diff --git a/core/path_db.cpp b/core/path_db.cpp index d0feda5c82..132cc83a35 100644 --- a/core/path_db.cpp +++ b/core/path_db.cpp @@ -363,6 +363,7 @@ NodePath::NodePath(const String& p_path) { from=i+1; } + } path=path.substr(0,subpath_pos); @@ -380,6 +381,8 @@ NodePath::NodePath(const String& p_path) { last_is_slash=false; } + + } if (slices==0 && !absolute && !property) @@ -413,6 +416,7 @@ NodePath::NodePath(const String& p_path) { } else { last_is_slash=false; } + } diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp index 97bd5f2a32..3de26573f4 100644 --- a/core/register_core_types.cpp +++ b/core/register_core_types.cpp @@ -118,6 +118,7 @@ void register_core_types() { ObjectTypeDB::register_type<Resource>(); ObjectTypeDB::register_type<FuncRef>(); ObjectTypeDB::register_virtual_type<StreamPeer>(); + ObjectTypeDB::register_type<StreamPeerBuffer>(); ObjectTypeDB::register_create_type<StreamPeerTCP>(); ObjectTypeDB::register_create_type<TCP_Server>(); ObjectTypeDB::register_create_type<PacketPeerUDP>(); diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp index 99d1e22c07..1ac0907967 100644 --- a/core/script_debugger_remote.cpp +++ b/core/script_debugger_remote.cpp @@ -219,7 +219,8 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script,bool p_can_continue) { if (F->get().get_type()==Variant::OBJECT) { packet_peer_stream->put_var("*"+E->get()); - packet_peer_stream->put_var(safe_get_instance_id(F->get())); + String pretty_print = F->get().operator String(); + packet_peer_stream->put_var(pretty_print.ascii().get_data()); } else { packet_peer_stream->put_var(E->get()); packet_peer_stream->put_var(F->get()); @@ -242,7 +243,8 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script,bool p_can_continue) { if (F->get().get_type()==Variant::OBJECT) { packet_peer_stream->put_var("*"+E->get()); - packet_peer_stream->put_var(safe_get_instance_id(F->get())); + String pretty_print = F->get().operator String(); + packet_peer_stream->put_var(pretty_print.ascii().get_data()); } else { packet_peer_stream->put_var(E->get()); packet_peer_stream->put_var(F->get()); diff --git a/core/script_language.cpp b/core/script_language.cpp index 75d8b6d285..fa1d01d3eb 100644 --- a/core/script_language.cpp +++ b/core/script_language.cpp @@ -33,6 +33,7 @@ int ScriptServer::_language_count=0; bool ScriptServer::scripting_enabled=true; bool ScriptServer::reload_scripts_on_save=false; +ScriptEditRequestFunction ScriptServer::edit_request_func=NULL; void Script::_notification( int p_what) { diff --git a/core/script_language.h b/core/script_language.h index 0e3f298790..1b037e908c 100644 --- a/core/script_language.h +++ b/core/script_language.h @@ -38,6 +38,8 @@ class ScriptLanguage; +typedef void (*ScriptEditRequestFunction)(const String& p_path); + class ScriptServer { enum { @@ -50,6 +52,8 @@ class ScriptServer { static bool reload_scripts_on_save; public: + static ScriptEditRequestFunction edit_request_func; + static void set_scripting_enabled(bool p_enabled); static bool is_scripting_enabled(); static int get_language_count(); @@ -88,6 +92,8 @@ public: virtual bool can_instance() const=0; + virtual Ref<Script> get_base_script() const=0; //for script inheritance + virtual StringName get_instance_base_type() const=0; // this may not work in all scripts, will return empty if so virtual ScriptInstance* instance_create(Object *p_this)=0; virtual bool instance_has(const Object *p_this) const=0; @@ -113,7 +119,8 @@ public: virtual bool get_property_default_value(const StringName& p_property,Variant& r_value) const=0; virtual void update_exports() {} //editor tool - virtual void get_method_list(List<MethodInfo> *p_list) const=0; + virtual void get_script_method_list(List<MethodInfo> *p_list) const=0; + virtual void get_script_property_list(List<PropertyInfo> *p_list) const=0; Script() {} @@ -121,6 +128,8 @@ public: class ScriptInstance { public: + + virtual bool set(const StringName& p_name, const Variant& p_value)=0; virtual bool get(const StringName& p_name, Variant &r_ret) const=0; virtual void get_property_list(List<PropertyInfo> *p_properties) const=0; @@ -148,6 +157,17 @@ public: virtual bool is_placeholder() const { return false; } + enum RPCMode { + RPC_MODE_DISABLED, + RPC_MODE_REMOTE, + RPC_MODE_SYNC, + RPC_MODE_MASTER, + RPC_MODE_SLAVE, + }; + + virtual RPCMode get_rpc_mode(const StringName& p_method) const=0; + virtual RPCMode get_rset_mode(const StringName& p_variable) const=0; + virtual ScriptLanguage *get_language()=0; virtual ~ScriptInstance(); }; @@ -279,6 +299,9 @@ public: virtual bool is_placeholder() const { return true; } + virtual RPCMode get_rpc_mode(const StringName& p_method) const { return RPC_MODE_DISABLED; } + virtual RPCMode get_rset_mode(const StringName& p_variable) const { return RPC_MODE_DISABLED; } + PlaceHolderScriptInstance(ScriptLanguage *p_language, Ref<Script> p_script,Object *p_owner); ~PlaceHolderScriptInstance(); diff --git a/core/string_db.cpp b/core/string_db.cpp index 9a693f88e9..bf92c4eac4 100644 --- a/core/string_db.cpp +++ b/core/string_db.cpp @@ -183,7 +183,8 @@ StringName::StringName(const char *p_name) { ERR_FAIL_COND(!configured); - ERR_FAIL_COND( !p_name || !p_name[0]); + if (!p_name || p_name[0]==0) + return; //empty, ignore _global_lock(); @@ -288,6 +289,9 @@ StringName::StringName(const String& p_name) { ERR_FAIL_COND(!configured); + if (p_name==String()) + return; + _global_lock(); uint32_t hash = p_name.hash(); diff --git a/core/translation.cpp b/core/translation.cpp index 01789747ea..4592d00598 100644 --- a/core/translation.cpp +++ b/core/translation.cpp @@ -32,11 +32,23 @@ #include "os/os.h" static const char* locale_list[]={ +"aa", // Afar +"aa_DJ", // Afar (Djibouti) +"aa_ER", // Afar (Eritrea) +"aa_ET", // Afar (Ethiopia) +"af", // Afrikaans +"af_ZA", // Afrikaans (South Africa) +"agr_PE", // Aguaruna (Peru) +"ak_GH", // Akan (Ghana) +"am_ET", // Amharic (Ethiopia) +"an_ES", // Aragonese (Spain) +"anp_IN", // Angika (India) "ar", // Arabic "ar_AE", // Arabic (United Arab Emirates) "ar_BH", // Arabic (Bahrain) "ar_DZ", // Arabic (Algeria) "ar_EG", // Arabic (Egypt) +"ar_IN", // Arabic (India) "ar_IQ", // Arabic (Iraq) "ar_JO", // Arabic (Jordan) "ar_KW", // Arabic (Kuwait) @@ -47,48 +59,91 @@ static const char* locale_list[]={ "ar_QA", // Arabic (Qatar) "ar_SA", // Arabic (Saudi Arabia) "ar_SD", // Arabic (Sudan) +"ar_SS", // Arabic (South Soudan) "ar_SY", // Arabic (Syria) "ar_TN", // Arabic (Tunisia) "ar_YE", // Arabic (Yemen) +"as_IN", // Assamese (India) +"ast_ES", // Asturian (Spain) +"ayc_PE", // Southern Aymara (Peru) +"ay_PE", // Aymara (Peru) +"az_AZ", // Azerbaijani (Azerbaijan) "be", // Belarusian "be_BY", // Belarusian (Belarus) +"bem_ZM", // Bemba (Zambia) +"ber_DZ", // Berber languages (Algeria) +"ber_MA", // Berber languages (Morocco) "bg", // Bulgarian "bg_BG", // Bulgarian (Bulgaria) +"bhb_IN", // Bhili (India) +"bho_IN", // Bhojpuri (India) +"bi_TV", // Bislama (Tuvalu) "bn", // Bengali "bn_BD", // Bengali (Bangladesh) "bn_IN", // Bengali (India) +"bo", // Tibetan +"bo_CN", // Tibetan (China) +"bo_IN", // Tibetan (India) +"br_FR", // Breton (France) +"brx_IN", // Bodo (India) +"bs_BA", // Bosnian (Bosnia and Herzegovina) +"byn_ER", // Bilin (Eritrea) "ca", // Catalan +"ca_AD", // Catalan (Andorra) "ca_ES", // Catalan (Spain) +"ca_FR", // Catalan (France) +"ca_IT", // Catalan (Italy) +"ce_RU", // Chechen (Russia) +"chr_US", // Cherokee (United States) +"cmn_TW", // Mandarin Chinese (Taiwan) +"crh_UA", // Crimean Tatar (Ukraine) +"csb_PL", // Kashubian (Poland) "cs", // Czech "cs_CZ", // Czech (Czech Republic) +"cv_RU", // Chuvash (Russia) +"cy_GB", // Welsh (United Kingdom) "da", // Danish "da_DK", // Danish (Denmark) "de", // German "de_AT", // German (Austria) +"de_BE", // German (Belgium) "de_CH", // German (Switzerland) "de_DE", // German (Germany) +"de_IT", // German (Italy) "de_LU", // German (Luxembourg) +"doi_IN", // Dogri (India) +"dv_MV", // Dhivehi (Maldives) +"dz_BT", // Dzongkha (Bhutan) "el", // Greek "el_CY", // Greek (Cyprus) "el_GR", // Greek (Greece) "en", // English +"en_AG", // English (Antigua and Barbuda) "en_AU", // English (Australia) +"en_BW", // English (Botswana) "en_CA", // English (Canada) +"en_DK", // English (Denmark) "en_GB", // English (United Kingdom) +"en_HK", // English (Hong Kong) "en_IE", // English (Ireland) +"en_IL", // English (Israel) "en_IN", // English (India) -"en_MT", // English (Malta) +"en_NG", // English (Nigeria) "en_NZ", // English (New Zealand) "en_PH", // English (Philippines) "en_SG", // English (Singapore) "en_US", // English (United States) "en_ZA", // English (South Africa) +"en_ZM", // English (Zambia) +"en_ZW", // English (Zimbabwe) +"eo", // Esperanto "es", // Spanish "es_AR", // Spanish (Argentina) "es_BO", // Spanish (Bolivia) "es_CL", // Spanish (Chile) "es_CO", // Spanish (Colombia) "es_CR", // Spanish (Costa Rica) +"es_CU", // Spanish (Cuba) "es_DO", // Spanish (Dominican Republic) "es_EC", // Spanish (Ecuador) "es_ES", // Spanish (Spain) @@ -106,100 +161,252 @@ static const char* locale_list[]={ "es_VE", // Spanish (Venezuela) "et", // Estonian "et_EE", // Estonian (Estonia) +"eu", // Basque +"eu_ES", // Basque (Spain) +"fa", // Persian +"fa_IR", // Persian (Iran) +"ff_SN", // Fulah (Senegal) "fi", // Finnish "fi_FI", // Finnish (Finland) +"fil_PH", // Filipino (Philippines) +"fo_FO", // Faroese (Faroe Islands) "fr", // French "fr_BE", // French (Belgium) "fr_CA", // French (Canada) "fr_CH", // French (Switzerland) "fr_FR", // French (France) "fr_LU", // French (Luxembourg) +"fur_IT", // Friulian (Italy) +"fy_DE", // Western Frisian (Germany) +"fy_NL", // Western Frisian (Netherlands) "ga", // Irish "ga_IE", // Irish (Ireland) -"hi", // Hindi (India) +"gd_GB", // Scottish Gaelic (United Kingdom) +"gez_ER", // Geez (Eritrea) +"gez_ET", // Geez (Ethiopia) +"gl_ES", // Galician (Spain) +"gu_IN", // Gujarati (India) +"gv_GB", // Manx (United Kingdom) +"hak_TW", // Hakka Chinese (Taiwan) +"ha_NG", // Hausa (Nigeria) +"he", // Hebrew +"he_IL", // Hebrew (Israel) +"hi", // Hindi "hi_IN", // Hindi (India) +"hne_IN", // Chhattisgarhi (India) "hr", // Croatian "hr_HR", // Croatian (Croatia) +"hsb_DE", // Upper Sorbian (Germany) +"ht_HT", // Haitian (Haiti) "hu", // Hungarian "hu_HU", // Hungarian (Hungary) -"in", // Indonesian -"in_ID", // Indonesian (Indonesia) +"hus_MX", // Huastec (Mexico) +"hy_AM", // Armenian (Armenia) +"ia_FR", // Interlingua (France) +"id", // Indonesian +"id_ID", // Indonesian (Indonesia) +"ig_NG", // Igbo (Nigeria) +"ik_CA", // Inupiaq (Canada) "is", // Icelandic "is_IS", // Icelandic (Iceland) "it", // Italian "it_CH", // Italian (Switzerland) "it_IT", // Italian (Italy) -"iw", // Hebrew -"iw_IL", // Hebrew (Israel) +"iu_CA", // Inuktitut (Canada) "ja", // Japanese "ja_JP", // Japanese (Japan) -"ja_JP_JP", // Japanese (Japan,JP) +"kab_DZ", // Kabyle (Algeria) +"ka_GE", // Georgian (Georgia) +"kk_KZ", // Kazakh (Kazakhstan) +"kl_GL", // Kalaallisut (Greenland) +"km_KH", // Central Khmer (Cambodia) +"kn_IN", // Kannada (India) +"kok_IN", // Konkani (India) "ko", // Korean "ko_KR", // Korean (South Korea) +"ks_IN", // Kashmiri (India) +"ku", // Kurdish +"ku_TR", // Kurdish (Turkey) +"kw_GB", // Cornish (United Kingdom) +"ky_KG", // Kirghiz (Kyrgyzstan) +"lb_LU", // Luxembourgish (Luxembourg) +"lg_UG", // Ganda (Uganda) +"li_BE", // Limburgan (Belgium) +"li_NL", // Limburgan (Netherlands) +"lij_IT", // Ligurian (Italy) +"ln_CD", // Lingala (Congo) +"lo_LA", // Lao (Laos) "lt", // Lithuanian "lt_LT", // Lithuanian (Lithuania) "lv", // Latvian "lv_LV", // Latvian (Latvia) +"lzh_TW", // Literary Chinese (Taiwan) +"mag_IN", // Magahi (India) +"mai_IN", // Maithili (India) +"mg_MG", // Malagasy (Madagascar) +"mh_MH", // Marshallese (Marshall Islands) +"mhr_RU", // Eastern Mari (Russia) +"mi_NZ", // Maori (New Zealand) +"miq_NI", // Mískito (Nicaragua) "mk", // Macedonian "mk_MK", // Macedonian (Macedonia) +"ml_IN", // Malayalam (India) +"mni_IN", // Manipuri (India) +"mn_MN", // Mongolian (Mongolia) +"mr_IN", // Marathi (India) "ms", // Malay "ms_MY", // Malay (Malaysia) "mt", // Maltese "mt_MT", // Maltese (Malta) +"my_MM", // Burmese (Myanmar) +"myv_RU", // Erzya (Russia) +"nah_MX", // Nahuatl languages (Mexico) +"nan_TW", // Min Nan Chinese (Taiwan) +"nb", // Norwegian Bokmål +"nb_NO", // Norwegian Bokmål (Norway) +"nds_DE", // Low German (Germany) +"nds_NL", // Low German (Netherlands) +"ne_NP", // Nepali (Nepal) +"nhn_MX", // Central Nahuatl (Mexico) +"niu_NU", // Niuean (Niue) +"niu_NZ", // Niuean (New Zealand) "nl", // Dutch +"nl_AW", // Dutch (Aruba) "nl_BE", // Dutch (Belgium) "nl_NL", // Dutch (Netherlands) -"no", // Norwegian -"no_NO", // Norwegian (Norway) -"no_NO_NY", // Norwegian (Norway,Nynorsk) +"nn", // Norwegian Nynorsk +"nn_NO", // Norwegian Nynorsk (Norway) +"nr_ZA", // South Ndebele (South Africa) +"nso_ZA", // Pedi (South Africa) +"oc_FR", // Occitan (France) +"om", // Oromo +"om_ET", // Oromo (Ethiopia) +"om_KE", // Oromo (Kenya) +"or_IN", // Oriya (India) +"os_RU", // Ossetian (Russia) +"pa_IN", // Panjabi (India) +"pap", // Papiamento +"pap_AN", // Papiamento (Netherlands Antilles) +"pap_AW", // Papiamento (Aruba) +"pap_CW", // Papiamento (Curaçao) +"pa_PK", // Panjabi (Pakistan) "pl", // Polish "pl_PL", // Polish (Poland) +"ps_AF", // Pushto (Afghanistan) "pt", // Portuguese "pt_BR", // Portuguese (Brazil) "pt_PT", // Portuguese (Portugal) +"quy_PE", // Ayacucho Quechua (Peru) +"quz_PE", // Cusco Quechua (Peru) +"raj_IN", // Rajasthani (India) "ro", // Romanian "ro_RO", // Romanian (Romania) "ru", // Russian "ru_RU", // Russian (Russia) +"ru_UA", // Russian (Ukraine) +"rw_RW", // Kinyarwanda (Rwanda) +"sa_IN", // Sanskrit (India) +"sat_IN", // Santali (India) +"sc_IT", // Sardinian (Italy) +"sd_IN", // Sindhi (India) +"se_NO", // Northern Sami (Norway) +"sgs_LT", // Samogitian (Lithuania) +"shs_CA", // Shuswap (Canada) +"sid_ET", // Sidamo (Ethiopia) +"si_LK", // Sinhala (Sri Lanka) "sk", // Slovak "sk_SK", // Slovak (Slovakia) "sl", // Slovenian "sl_SI", // Slovenian (Slovenia) +"so", // Somali +"so_DJ", // Somali (Djibouti) +"so_ET", // Somali (Ethiopia) +"so_KE", // Somali (Kenya) +"so_SO", // Somali (Somalia) +"son_ML", // Songhai languages (Mali) "sq", // Albanian "sq_AL", // Albanian (Albania) +"sq_KV", // Albanian (Kosovo) +"sq_MK", // Albanian (Macedonia) "sr", // Serbian -"sr_BA", // Serbian (Bosnia and Herzegovina) -"sr_CS", // Serbian (Serbia and Montenegro) "sr_ME", // Serbian (Montenegro) "sr_RS", // Serbian (Serbia) +"ss_ZA", // Swati (South Africa) +"st_ZA", // Southern Sotho (South Africa) "sv", // Swedish +"sv_FI", // Swedish (Finland) "sv_SE", // Swedish (Sweden) +"sw_KE", // Swahili (Kenya) +"sw_TZ", // Swahili (Tanzania) +"szl_PL", // Silesian (Poland) +"ta", // Tamil +"ta_IN", // Tamil (India) +"ta_LK", // Tamil (Sri Lanka) +"tcy_IN", // Tulu (India) +"te_IN", // Telugu (India) +"tg_TJ", // Tajik (Tajikistan) +"the_NP", // Chitwania Tharu (Nepal) "th", // Thai "th_TH", // Thai (Thailand) -"th_TH_TH", // Thai (Thailand,TH) +"ti", // Tigrinya +"ti_ER", // Tigrinya (Eritrea) +"ti_ET", // Tigrinya (Ethiopia) +"tig_ER", // Tigre (Eritrea) +"tk_TM", // Turkmen (Turkmenistan) +"tl_PH", // Tagalog (Philippines) +"tn_ZA", // Tswana (South Africa) "tr", // Turkish +"tr_CY", // Turkish (Cyprus) "tr_TR", // Turkish (Turkey) +"ts_ZA", // Tsonga (South Africa) +"tt_RU", // Tatar (Russia) +"ug_CN", // Uighur (China) "uk", // Ukrainian "uk_UA", // Ukrainian (Ukraine) +"unm_US", // Unami (United States) "ur", // Urdu "ur_IN", // Urdu (India) "ur_PK", // Urdu (Pakistan) +"uz", // Uzbek +"uz_UZ", // Uzbek (Uzbekistan) +"ve_ZA", // Venda (South Africa) "vi", // Vietnamese "vi_VN", // Vietnamese (Vietnam) +"wa_BE", // Walloon (Belgium) +"wae_CH", // Walser (Switzerland) +"wal_ET", // Wolaytta (Ethiopia) +"wo_SN", // Wolof (Senegal) +"xh_ZA", // Xhosa (South Africa) +"yi_US", // Yiddish (United States) +"yo_NG", // Yoruba (Nigeria) +"yue_HK", // Yue Chinese (Hong Kong) "zh", // Chinese "zh_CN", // Chinese (China) "zh_HK", // Chinese (Hong Kong) "zh_SG", // Chinese (Singapore) "zh_TW", // Chinese (Taiwan) +"zu_ZA", // Zulu (South Africa) 0 }; static const char* locale_names[]={ +"Afar", +"Afar (Djibouti)", +"Afar (Eritrea)", +"Afar (Ethiopia)", +"Afrikaans", +"Afrikaans (South Africa)", +"Aguaruna (Peru)", +"Akan (Ghana)", +"Amharic (Ethiopia)", +"Aragonese (Spain)", +"Angika (India)", "Arabic", "Arabic (United Arab Emirates)", "Arabic (Bahrain)", "Arabic (Algeria)", "Arabic (Egypt)", +"Arabic (India)", "Arabic (Iraq)", "Arabic (Jordan)", "Arabic (Kuwait)", @@ -210,48 +417,91 @@ static const char* locale_names[]={ "Arabic (Qatar)", "Arabic (Saudi Arabia)", "Arabic (Sudan)", +"Arabic (South Soudan)", "Arabic (Syria)", "Arabic (Tunisia)", "Arabic (Yemen)", +"Assamese (India)", +"Asturian (Spain)", +"Southern Aymara (Peru)", +"Aymara (Peru)", +"Azerbaijani (Azerbaijan)", "Belarusian", "Belarusian (Belarus)", +"Bemba (Zambia)", +"Berber languages (Algeria)", +"Berber languages (Morocco)", "Bulgarian", "Bulgarian (Bulgaria)", +"Bhili (India)", +"Bhojpuri (India)", +"Bislama (Tuvalu)", "Bengali", "Bengali (Bangladesh)", "Bengali (India)", +"Tibetan", +"Tibetan (China)", +"Tibetan (India)", +"Breton (France)", +"Bodo (India)", +"Bosnian (Bosnia and Herzegovina)", +"Bilin (Eritrea)", "Catalan", +"Catalan (Andorra)", "Catalan (Spain)", +"Catalan (France)", +"Catalan (Italy)", +"Chechen (Russia)", +"Cherokee (United States)", +"Mandarin Chinese (Taiwan)", +"Crimean Tatar (Ukraine)", +"Kashubian (Poland)", "Czech", "Czech (Czech Republic)", +"Chuvash (Russia)", +"Welsh (United Kingdom)", "Danish", "Danish (Denmark)", "German", "German (Austria)", +"German (Belgium)", "German (Switzerland)", "German (Germany)", +"German (Italy)", "German (Luxembourg)", +"Dogri (India)", +"Dhivehi (Maldives)", +"Dzongkha (Bhutan)", "Greek", "Greek (Cyprus)", "Greek (Greece)", "English", +"English (Antigua and Barbuda)", "English (Australia)", +"English (Botswana)", "English (Canada)", +"English (Denmark)", "English (United Kingdom)", +"English (Hong Kong)", "English (Ireland)", +"English (Israel)", "English (India)", -"English (Malta)", +"English (Nigeria)", "English (New Zealand)", "English (Philippines)", "English (Singapore)", "English (United States)", "English (South Africa)", +"English (Zambia)", +"English (Zimbabwe)", +"Esperanto", "Spanish", "Spanish (Argentina)", "Spanish (Bolivia)", "Spanish (Chile)", "Spanish (Colombia)", "Spanish (Costa Rica)", +"Spanish (Cuba)", "Spanish (Dominican Republic)", "Spanish (Ecuador)", "Spanish (Spain)", @@ -269,91 +519,231 @@ static const char* locale_names[]={ "Spanish (Venezuela)", "Estonian", "Estonian (Estonia)", +"Basque", +"Basque (Spain)", +"Persian", +"Persian (Iran)", +"Fulah (Senegal)", "Finnish", "Finnish (Finland)", +"Filipino (Philippines)", +"Faroese (Faroe Islands)", "French", "French (Belgium)", "French (Canada)", "French (Switzerland)", "French (France)", "French (Luxembourg)", +"Friulian (Italy)", +"Western Frisian (Germany)", +"Western Frisian (Netherlands)", "Irish", "Irish (Ireland)", +"Scottish Gaelic (United Kingdom)", +"Geez (Eritrea)", +"Geez (Ethiopia)", +"Galician (Spain)", +"Gujarati (India)", +"Manx (United Kingdom)", +"Hakka Chinese (Taiwan)", +"Hausa (Nigeria)", +"Hebrew", +"Hebrew (Israel)", +"Hindi", "Hindi (India)", -"Hindi (India)", +"Chhattisgarhi (India)", "Croatian", "Croatian (Croatia)", +"Upper Sorbian (Germany)", +"Haitian (Haiti)", "Hungarian", "Hungarian (Hungary)", +"Huastec (Mexico)", +"Armenian (Armenia)", +"Interlingua (France)", "Indonesian", "Indonesian (Indonesia)", +"Igbo (Nigeria)", +"Inupiaq (Canada)", "Icelandic", "Icelandic (Iceland)", "Italian", "Italian (Switzerland)", "Italian (Italy)", -"Hebrew", -"Hebrew (Israel)", +"Inuktitut (Canada)", "Japanese", "Japanese (Japan)", -"Japanese (Japan JP)", +"Kabyle (Algeria)", +"Georgian (Georgia)", +"Kazakh (Kazakhstan)", +"Kalaallisut (Greenland)", +"Central Khmer (Cambodia)", +"Kannada (India)", +"Konkani (India)", "Korean", "Korean (South Korea)", +"Kashmiri (India)", +"Kurdish", +"Kurdish (Turkey)", +"Cornish (United Kingdom)", +"Kirghiz (Kyrgyzstan)", +"Luxembourgish (Luxembourg)", +"Ganda (Uganda)", +"Limburgan (Belgium)", +"Limburgan (Netherlands)", +"Ligurian (Italy)", +"Lingala (Congo)", +"Lao (Laos)", "Lithuanian", "Lithuanian (Lithuania)", "Latvian", "Latvian (Latvia)", +"Literary Chinese (Taiwan)", +"Magahi (India)", +"Maithili (India)", +"Malagasy (Madagascar)", +"Marshallese (Marshall Islands)", +"Eastern Mari (Russia)", +"Maori (New Zealand)", +"Mískito (Nicaragua)", "Macedonian", "Macedonian (Macedonia)", +"Malayalam (India)", +"Manipuri (India)", +"Mongolian (Mongolia)", +"Marathi (India)", "Malay", "Malay (Malaysia)", "Maltese", "Maltese (Malta)", +"Burmese (Myanmar)", +"Erzya (Russia)", +"Nahuatl languages (Mexico)", +"Min Nan Chinese (Taiwan)", +"Norwegian Bokmål", +"Norwegian Bokmål (Norway)", +"Low German (Germany)", +"Low German (Netherlands)", +"Nepali (Nepal)", +"Central Nahuatl (Mexico)", +"Niuean (Niue)", +"Niuean (New Zealand)", "Dutch", +"Dutch (Aruba)", "Dutch (Belgium)", "Dutch (Netherlands)", -"Norwegian", -"Norwegian (Norway)", -"Norwegian (Norway Nynorsk)", +"Norwegian Nynorsk", +"Norwegian Nynorsk (Norway)", +"South Ndebele (South Africa)", +"Pedi (South Africa)", +"Occitan (France)", +"Oromo", +"Oromo (Ethiopia)", +"Oromo (Kenya)", +"Oriya (India)", +"Ossetian (Russia)", +"Panjabi (India)", +"Papiamento", +"Papiamento (Netherlands Antilles)", +"Papiamento (Aruba)", +"Papiamento (Curaçao)", +"Panjabi (Pakistan)", "Polish", "Polish (Poland)", +"Pushto (Afghanistan)", "Portuguese", "Portuguese (Brazil)", "Portuguese (Portugal)", +"Ayacucho Quechua (Peru)", +"Cusco Quechua (Peru)", +"Rajasthani (India)", "Romanian", "Romanian (Romania)", "Russian", "Russian (Russia)", +"Russian (Ukraine)", +"Kinyarwanda (Rwanda)", +"Sanskrit (India)", +"Santali (India)", +"Sardinian (Italy)", +"Sindhi (India)", +"Northern Sami (Norway)", +"Samogitian (Lithuania)", +"Shuswap (Canada)", +"Sidamo (Ethiopia)", +"Sinhala (Sri Lanka)", "Slovak", "Slovak (Slovakia)", "Slovenian", "Slovenian (Slovenia)", +"Somali", +"Somali (Djibouti)", +"Somali (Ethiopia)", +"Somali (Kenya)", +"Somali (Somalia)", +"Songhai languages (Mali)", "Albanian", "Albanian (Albania)", +"Albanian (Kosovo)", +"Albanian (Macedonia)", "Serbian", -"Serbian (Bosnia and Herzegovina)", -"Serbian (Serbia and Montenegro)", "Serbian (Montenegro)", "Serbian (Serbia)", +"Swati (South Africa)", +"Southern Sotho (South Africa)", "Swedish", +"Swedish (Finland)", "Swedish (Sweden)", +"Swahili (Kenya)", +"Swahili (Tanzania)", +"Silesian (Poland)", +"Tamil", +"Tamil (India)", +"Tamil (Sri Lanka)", +"Tulu (India)", +"Telugu (India)", +"Tajik (Tajikistan)", +"Chitwania Tharu (Nepal)", "Thai", "Thai (Thailand)", -"Thai (Thailand TH)", +"Tigrinya", +"Tigrinya (Eritrea)", +"Tigrinya (Ethiopia)", +"Tigre (Eritrea)", +"Turkmen (Turkmenistan)", +"Tagalog (Philippines)", +"Tswana (South Africa)", "Turkish", +"Turkish (Cyprus)", "Turkish (Turkey)", +"Tsonga (South Africa)", +"Tatar (Russia)", +"Uighur (China)", "Ukrainian", "Ukrainian (Ukraine)", +"Unami (United States)", "Urdu", "Urdu (India)", "Urdu (Pakistan)", +"Uzbek", +"Uzbek (Uzbekistan)", +"Venda (South Africa)", "Vietnamese", "Vietnamese (Vietnam)", +"Walloon (Belgium)", +"Walser (Switzerland)", +"Wolaytta (Ethiopia)", +"Wolof (Senegal)", +"Xhosa (South Africa)", +"Yiddish (United States)", +"Yoruba (Nigeria)", +"Yue Chinese (Hong Kong)", "Chinese", "Chinese (China)", "Chinese (Hong Kong)", "Chinese (Singapore)", "Chinese (Taiwan)", +"Zulu (South Africa)", 0 }; diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp index d6d32ccaef..e8a71d4991 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -52,26 +52,46 @@ void UndoRedo::_discard_redo() { } - -void UndoRedo::create_action(const String& p_name,bool p_mergeable) { +void UndoRedo::create_action(const String& p_name,MergeMode p_mode) { if (action_level==0) { _discard_redo(); - if (p_mergeable && actions.size() && actions[actions.size()-1].name==p_name) { - //old will replace new (it's mergeable after all) - // should check references though! + // Check if the merge operation is valid + if (p_mode!=MERGE_DISABLE && actions.size() && actions[actions.size()-1].name==p_name) { + current_action=actions.size()-2; - actions[current_action+1].do_ops.clear(); - //actions[current_action+1].undo_ops.clear(); - no, this is kept - merging=true; + + if (p_mode==MERGE_ENDS) { + + // Clear all do ops from last action, and delete all object references + List<Operation>::Element *E=actions[current_action+1].do_ops.front(); + + while (E) { + + if (E->get().type==Operation::TYPE_REFERENCE) { + + Object *obj=ObjectDB::get_instance(E->get().object); + + if (obj) + memdelete(obj); + } + + E=E->next(); + actions[current_action+1].do_ops.pop_front(); + } + } + + merge_mode=p_mode; } else { + Action new_action; new_action.name=p_name; actions.push_back(new_action); - merging=false; + + merge_mode=MERGE_DISABLE; } } @@ -102,8 +122,10 @@ void UndoRedo::add_undo_method(Object *p_object,const String& p_method,VARIANT_A VARIANT_ARGPTRS ERR_FAIL_COND(action_level<=0); ERR_FAIL_COND((current_action+1)>=actions.size()); - if (merging) - return; //- no undo if merging + + // No undo if the merge mode is MERGE_ENDS + if (merge_mode==MERGE_ENDS) + return; Operation undo_op; undo_op.object=p_object->get_instance_ID(); @@ -139,6 +161,10 @@ void UndoRedo::add_undo_property(Object *p_object,const String& p_property,const ERR_FAIL_COND(action_level<=0); ERR_FAIL_COND((current_action+1)>=actions.size()); + // No undo if the merge mode is MERGE_ENDS + if (merge_mode==MERGE_ENDS) + return; + Operation undo_op; undo_op.object=p_object->get_instance_ID(); if (p_object->cast_to<Resource>()) @@ -167,6 +193,11 @@ void UndoRedo::add_undo_reference(Object *p_object) { ERR_FAIL_COND(action_level<=0); ERR_FAIL_COND((current_action+1)>=actions.size()); + + // No undo if the merge mode is MERGE_ENDS + if (merge_mode==MERGE_ENDS) + return; + Operation undo_op; undo_op.object=p_object->get_instance_ID(); if (p_object->cast_to<Resource>()) @@ -352,7 +383,7 @@ UndoRedo::UndoRedo() { action_level=0; current_action=-1; max_steps=-1; - merging=true; + merge_mode=MERGE_DISABLE; callback=NULL; callback_ud=NULL; @@ -448,7 +479,7 @@ Variant UndoRedo::_add_undo_method(const Variant** p_args, int p_argcount, Varia void UndoRedo::_bind_methods() { - ObjectTypeDB::bind_method(_MD("create_action","name","mergeable"),&UndoRedo::create_action, DEFVAL(false) ); + ObjectTypeDB::bind_method(_MD("create_action","name","merge_mode"),&UndoRedo::create_action, DEFVAL(MERGE_DISABLE) ); ObjectTypeDB::bind_method(_MD("commit_action"),&UndoRedo::commit_action); //ObjectTypeDB::bind_method(_MD("add_do_method","p_object", "p_method", "VARIANT_ARG_LIST"),&UndoRedo::add_do_method); @@ -459,13 +490,9 @@ void UndoRedo::_bind_methods() { mi.name="add_do_method"; mi.arguments.push_back( PropertyInfo( Variant::OBJECT, "object")); mi.arguments.push_back( PropertyInfo( Variant::STRING, "method")); - Vector<Variant> defargs; - for(int i=0;i<VARIANT_ARG_MAX;++i) { - mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); - defargs.push_back(Variant()); - } - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"add_do_method",&UndoRedo::_add_do_method,mi,defargs); + + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"add_do_method",&UndoRedo::_add_do_method,mi); } { @@ -473,13 +500,9 @@ void UndoRedo::_bind_methods() { mi.name="add_undo_method"; mi.arguments.push_back( PropertyInfo( Variant::OBJECT, "object")); mi.arguments.push_back( PropertyInfo( Variant::STRING, "method")); - Vector<Variant> defargs; - for(int i=0;i<VARIANT_ARG_MAX;++i) { - mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); - defargs.push_back(Variant()); - } - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"add_undo_method",&UndoRedo::_add_undo_method,mi,defargs); + + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"add_undo_method",&UndoRedo::_add_undo_method,mi); } ObjectTypeDB::bind_method(_MD("add_do_property","object", "property", "value:Variant"),&UndoRedo::add_do_property); @@ -489,4 +512,8 @@ void UndoRedo::_bind_methods() { ObjectTypeDB::bind_method(_MD("clear_history"),&UndoRedo::clear_history); ObjectTypeDB::bind_method(_MD("get_current_action_name"),&UndoRedo::get_current_action_name); ObjectTypeDB::bind_method(_MD("get_version"),&UndoRedo::get_version); + + BIND_CONSTANT(MERGE_DISABLE); + BIND_CONSTANT(MERGE_ENDS); + BIND_CONSTANT(MERGE_ALL); } diff --git a/core/undo_redo.h b/core/undo_redo.h index 7f63ba9ed6..208eb6ed5e 100644 --- a/core/undo_redo.h +++ b/core/undo_redo.h @@ -41,6 +41,12 @@ class UndoRedo : public Object { OBJ_SAVE_TYPE( UndoRedo ); public: + enum MergeMode { + MERGE_DISABLE, + MERGE_ENDS, + MERGE_ALL + }; + typedef void (*CommitNotifyCallback)(void *p_ud,const String& p_name); Variant _add_do_method(const Variant** p_args, int p_argcount, Variant::CallError& r_error); Variant _add_undo_method(const Variant** p_args, int p_argcount, Variant::CallError& r_error); @@ -76,7 +82,7 @@ private: int current_action; int action_level; int max_steps; - bool merging; + MergeMode merge_mode; uint64_t version; void _pop_history_tail(); @@ -98,7 +104,7 @@ protected: public: - void create_action(const String& p_name="",bool p_mergeable=false); + void create_action(const String& p_name="",MergeMode p_mode=MERGE_DISABLE); void add_do_method(Object *p_object,const String& p_method,VARIANT_ARG_LIST); void add_undo_method(Object *p_object,const String& p_method,VARIANT_ARG_LIST); @@ -128,4 +134,6 @@ public: ~UndoRedo(); }; +VARIANT_ENUM_CAST( UndoRedo::MergeMode ); + #endif // UNDO_REDO_H diff --git a/core/variant.h b/core/variant.h index b8b028a760..90be593bd9 100644 --- a/core/variant.h +++ b/core/variant.h @@ -426,7 +426,7 @@ public: static void get_constructor_list(Variant::Type p_type, List<MethodInfo> *p_list); static void get_numeric_constants_for_type(Variant::Type p_type, List<StringName> *p_constants); static bool has_numeric_constant(Variant::Type p_type, const StringName& p_value); - static int get_numeric_constant_value(Variant::Type p_type, const StringName& p_value); + static int get_numeric_constant_value(Variant::Type p_type, const StringName& p_value,bool *r_valid=NULL); typedef String (*ObjectDeConstruct)(const Variant& p_object,void *ud); typedef void (*ObjectConstruct)(const String& p_text,void *ud,Variant& r_value); diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 069c20bc6e..e7e71e8251 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -54,10 +54,10 @@ struct _VariantCall { int arg_count; Vector<Variant> default_args; Vector<Variant::Type> arg_types; - -#ifdef DEBUG_ENABLED Vector<StringName> arg_names; Variant::Type return_type; + +#ifdef DEBUG_ENABLED bool returns; #endif VariantFunc func; @@ -1324,14 +1324,22 @@ bool Variant::has_numeric_constant(Variant::Type p_type, const StringName& p_val return cd.value.has(p_value); } -int Variant::get_numeric_constant_value(Variant::Type p_type, const StringName& p_value) { +int Variant::get_numeric_constant_value(Variant::Type p_type, const StringName& p_value, bool *r_valid) { + + if (r_valid) + *r_valid=false; ERR_FAIL_INDEX_V(p_type,Variant::VARIANT_MAX,0); _VariantCall::ConstantData& cd = _VariantCall::constant_data[p_type]; Map<StringName,int>::Element *E = cd.value.find(p_value); - ERR_FAIL_COND_V(!E,0); + if (!E) { + return -1; + } + if (r_valid) + *r_valid=true; + return E->get(); } diff --git a/core/variant_op.cpp b/core/variant_op.cpp index c537ed230f..fd64b58bd5 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -3046,7 +3046,7 @@ bool Variant::iter_next(Variant& r_iter,bool &valid) const { const String *str=reinterpret_cast<const String*>(_data._mem); int idx = r_iter; idx++; - if (idx >= str->size()) + if (idx >= str->length()) return false; r_iter = idx; return true; diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 4b6f5f510d..1b54a70be8 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -5922,14 +5922,24 @@ </method> </methods> <signals> + <signal name="button_down"> + <description> + Emitted when the button starts being held down. + </description> + </signal> + <signal name="button_up"> + <description> + Emitted when the button stops being held down. + </description> + </signal> <signal name="pressed"> <description> - This signal is emitted every time the button is pressed or toggled. + This signal is emitted every time the button is toggled or pressed (i.e. activated, so on [code]button_down[/code] if "Click on press" is active and on [code]button_up[/code] otherwise). </description> </signal> <signal name="released"> <description> - This signal is emitted when the button was released. + Emitted when the button was released. This is only emitted by non-toggle buttons and if "Click on press" is active. </description> </signal> <signal name="toggled"> @@ -6026,7 +6036,7 @@ </argument> <argument index="2" name="rect" type="Rect2"> </argument> - <argument index="3" name="align" type="Vector2" default="Vector2((0, 0))"> + <argument index="3" name="align" type="Vector2" default="Vector2(0, 0)"> </argument> <argument index="4" name="advance" type="float" default="-1"> </argument> @@ -6807,6 +6817,12 @@ <description> </description> </method> + <method name="is_limit_smoothing_enabled" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="is_rotating" qualifiers="const"> <return type="bool"> </return> @@ -6878,6 +6894,14 @@ Set the scrolling limit in pixels. </description> </method> + <method name="set_limit_smoothing_enabled"> + <argument index="0" name="limit_smoothing_enabled" type="bool"> + </argument> + <description> + Smooth camera when reaching camera limits. + This requires camera smoothing being enabled to have a noticeable effect. + </description> + </method> <method name="set_offset"> <argument index="0" name="offset" type="Vector2"> </argument> @@ -6984,8 +7008,10 @@ </argument> <argument index="3" name="width" type="float" default="1"> </argument> + <argument index="4" name="antialiased" type="bool" default="false"> + </argument> <description> - Draw a line from a 2D point to another, with a given color and width. + Draw a line from a 2D point to another, with a given color and width. It can be optionally antialiased. </description> </method> <method name="draw_polygon"> @@ -9318,7 +9344,7 @@ <method name="get_cursor_shape" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="pos" type="Vector2" default="Vector2((0, 0))"> + <argument index="0" name="pos" type="Vector2" default="Vector2(0, 0)"> </argument> <description> Return the cursor shape at a certain position in the control. @@ -9517,7 +9543,7 @@ <method name="get_tooltip" qualifiers="const"> <return type="String"> </return> - <argument index="0" name="atpos" type="Vector2" default="Vector2((0, 0))"> + <argument index="0" name="atpos" type="Vector2" default="Vector2(0, 0)"> </argument> <description> Return the tooltip, which will appear when the cursor is resting over this control. @@ -10161,9 +10187,9 @@ <method name="add_point"> <argument index="0" name="pos" type="Vector2"> </argument> - <argument index="1" name="in" type="Vector2" default="Vector2((0, 0))"> + <argument index="1" name="in" type="Vector2" default="Vector2(0, 0)"> </argument> - <argument index="2" name="out" type="Vector2" default="Vector2((0, 0))"> + <argument index="2" name="out" type="Vector2" default="Vector2(0, 0)"> </argument> <argument index="3" name="atpos" type="int" default="-1"> </argument> @@ -10332,9 +10358,9 @@ <method name="add_point"> <argument index="0" name="pos" type="Vector3"> </argument> - <argument index="1" name="in" type="Vector3" default="Vector3((0, 0, 0))"> + <argument index="1" name="in" type="Vector3" default="Vector3(0, 0, 0)"> </argument> - <argument index="2" name="out" type="Vector3" default="Vector3((0, 0, 0))"> + <argument index="2" name="out" type="Vector3" default="Vector3(0, 0, 0)"> </argument> <argument index="3" name="atpos" type="int" default="-1"> </argument> @@ -10845,7 +10871,7 @@ </return> <description> Initialise the stream used to list all files and directories using the [method get_next] function, closing the current opened stream if needed. Once the stream has been processed, it should typically be closed with [method list_dir_end]. - Return false if the stream could not be initialised. + Return true if the stream could not be initialised. </description> </method> <method name="list_dir_end"> @@ -11738,6 +11764,24 @@ [/codeblock] </description> <methods> + <method name="add_property_info"> + <argument index="0" name="info" type="Dictionary"> + </argument> + <description> + Add a custom property info to a property. The dictionary must contain: name:[String](the name of the property) and type:[int](see TYPE_* in [@Global Scope]), and optionally hint:[int](see PROPERTY_HINT_* in [@Global Scope]), hint_string:[String]. + Example:[codeblock] + editor_settings.set("category/property_name", 0) + + var property_info = { + "name": "category/property_name", + "type": TYPE_INT, + "hint": PROPERTY_HINT_ENUM, + "hint_string": "one,two,three" + } + + editor_settings.add_property_info(property_info)[/codeblock] + </description> + </method> <method name="erase"> <argument index="0" name="property" type="String"> </argument> @@ -13754,6 +13798,26 @@ Contains global variables accessible from everywhere. Use the normal [Object] API, such as "Globals.get(variable)", "Globals.set(variable,value)" or "Globals.has(variable)" to access them. Variables stored in engine.cfg are also loaded into globals, making this object very useful for reading custom game configuration options. </description> <methods> + <method name="add_property_info"> + <argument index="0" name="hint" type="Dictionary"> + </argument> + <description> + Add a custom property info to a property. The dictionary must contain: name:[String](the name of the property) and type:[int](see TYPE_* in [@Global Scope]), and optionally hint:[int](see PROPERTY_HINT_* in [@Global Scope]), hint_string:[String]. + Example: + [codeblock] + Globals.set("category/property_name", 0) + + var property_info = { + "name": "category/property_name", + "type": TYPE_INT, + "hint": PROPERTY_HINT_ENUM, + "hint_string": "one,two,three" + } + + Globals.add_property_info(property_info) + [/codeblock] + </description> + </method> <method name="clear"> <argument index="0" name="name" type="String"> </argument> @@ -14021,6 +14085,16 @@ Signal sent to the GraphEdit when the connection between 'from_slot' slot of 'from' GraphNode and 'to_slot' slot of 'to' GraphNode is attempted to be created. </description> </signal> + <signal name="connection_to_empty"> + <argument index="0" name="from" type="String"> + </argument> + <argument index="1" name="from_slot" type="int"> + </argument> + <argument index="2" name="release_pos" type="Vector2"> + </argument> + <description> + </description> + </signal> <signal name="delete_nodes_request"> <description> Signal sent when a GraphNode is attempted to be removed from the GraphEdit. @@ -14067,6 +14141,10 @@ <constants> </constants> <theme_items> + <theme_item name="bezier_len_neg" type="int"> + </theme_item> + <theme_item name="bezier_len_pos" type="int"> + </theme_item> <theme_item name="bg" type="StyleBox"> </theme_item> <theme_item name="grid_major" type="Color"> @@ -14240,6 +14318,18 @@ Returns true if the close button is shown. False otherwise. </description> </method> + <method name="is_comment" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="is_resizeable" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="is_slot_enabled_left" qualifiers="const"> <return type="bool"> </return> @@ -14258,6 +14348,12 @@ Return true if right (output) slot 'idx' is enabled. False otherwise. </description> </method> + <method name="set_comment"> + <argument index="0" name="comment" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_modulate"> <argument index="0" name="color" type="Color"> </argument> @@ -14277,6 +14373,12 @@ <description> </description> </method> + <method name="set_resizeable"> + <argument index="0" name="resizeable" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_show_close_button"> <argument index="0" name="show" type="bool"> </argument> @@ -14299,9 +14401,9 @@ </argument> <argument index="6" name="color_right" type="Color"> </argument> - <argument index="7" name="custom_left" type="Object" default="Object()"> + <argument index="7" name="custom_left" type="Object" default="NULL"> </argument> - <argument index="8" name="custom_right" type="Object" default="Object()"> + <argument index="8" name="custom_right" type="Object" default="NULL"> </argument> <description> </description> @@ -14339,6 +14441,12 @@ Signal sent when the GraphNode is requested to be displayed over other ones. Happens on focusing (clicking into) the GraphNode. </description> </signal> + <signal name="resize_request"> + <argument index="0" name="new_minsize" type="Vector2"> + </argument> + <description> + </description> + </signal> </signals> <constants> <constant name="OVERLAY_DISABLED" value="0"> @@ -14355,6 +14463,10 @@ </theme_item> <theme_item name="close_offset" type="int"> </theme_item> + <theme_item name="comment" type="StyleBox"> + </theme_item> + <theme_item name="commentfocus" type="StyleBox"> + </theme_item> <theme_item name="defaultfocus" type="StyleBox"> </theme_item> <theme_item name="defaultframe" type="StyleBox"> @@ -14367,6 +14479,8 @@ </theme_item> <theme_item name="position" type="StyleBox"> </theme_item> + <theme_item name="resizer" type="Texture"> + </theme_item> <theme_item name="selectedframe" type="StyleBox"> </theme_item> <theme_item name="separation" type="int"> @@ -15911,6 +16025,8 @@ </argument> <argument index="2" name="radius" type="float"> </argument> + <argument index="3" name="add_uv" type="bool" default="true"> + </argument> <description> Simple helper to draw an uvsphere, with given latitudes, longitude and radius. </description> @@ -15925,7 +16041,7 @@ <method name="begin"> <argument index="0" name="primitive" type="int"> </argument> - <argument index="1" name="texture" type="Texture" default="Object()"> + <argument index="1" name="texture" type="Texture" default="NULL"> </argument> <description> Begin drawing (And optionally pass a texture override). When done call end(). For more information on how this works, search for glBegin() glEnd() references. @@ -16012,7 +16128,7 @@ Add a new mapping entry (in SDL2 format) to the mapping database. Optionally update already connected devices. </description> </method> - <method name="get_accelerometer"> + <method name="get_accelerometer" qualifiers="const"> <return type="Vector3"> </return> <description> @@ -16026,14 +16142,14 @@ Returns an [Array] containing the device IDs of all currently connected joysticks. </description> </method> - <method name="get_gyroscope"> + <method name="get_gyroscope" qualifiers="const"> <return type="Vector3"> </return> <description> If the device has a gyroscope, this will return the rate of rotation in rad/s around a device's x, y, and z axis. </description> </method> - <method name="get_joy_axis"> + <method name="get_joy_axis" qualifiers="const"> <return type="float"> </return> <argument index="0" name="device" type="int"> @@ -16080,7 +16196,7 @@ Returns the strength of the joystick vibration: x is the strength of the weak motor, and y is the strength of the strong motor. </description> </method> - <method name="get_magnetometer"> + <method name="get_magnetometer" qualifiers="const"> <return type="Vector3"> </return> <description> @@ -16108,7 +16224,23 @@ Returns the mouse speed for the last time the cursor was moved, and this until the next frame where the mouse moves. This means that even if the mouse is not moving, this function will still return the value of the last motion. </description> </method> - <method name="is_action_pressed"> + <method name="is_action_just_pressed" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="action" type="String"> + </argument> + <description> + </description> + </method> + <method name="is_action_just_released" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="action" type="String"> + </argument> + <description> + </description> + </method> + <method name="is_action_pressed" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="action" type="String"> @@ -16117,7 +16249,7 @@ Returns true or false depending on whether the action event is pressed. Actions and their events can be set in the Project Settings / Input Map tab. Or be set with [InputMap]. </description> </method> - <method name="is_joy_button_pressed"> + <method name="is_joy_button_pressed" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="device" type="int"> @@ -16137,7 +16269,7 @@ Returns if the specified device is known by the system. This means that it sets all button and axis indices exactly as defined in the JOY_* constants (see [@Global Scope]). Unknown joysticks are not expected to match these constants, but you can still retrieve events from them. </description> </method> - <method name="is_key_pressed"> + <method name="is_key_pressed" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="scancode" type="int"> @@ -16146,7 +16278,7 @@ Returns true or false depending on whether the key is pressed or not. You can pass KEY_*, which are pre-defined constants listed in [@Global Scope]. </description> </method> - <method name="is_mouse_button_pressed"> + <method name="is_mouse_button_pressed" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="button" type="int"> @@ -16165,7 +16297,7 @@ <method name="set_custom_mouse_cursor"> <argument index="0" name="image" type="Texture"> </argument> - <argument index="1" name="hotspot" type="Vector2" default="Vector2((0, 0))"> + <argument index="1" name="hotspot" type="Vector2" default="Vector2(0, 0)"> </argument> <description> Set a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. @@ -17670,8 +17802,13 @@ </class> <class name="ItemList" inherits="Control" category="Core"> <brief_description> + Control that provides a list of selectable items (and/or icons) in a single column, or optionally in multiple columns. </brief_description> <description> + This control provides a selectable list of items that may be in a single (or multiple columns) with option of text, icons, + or both text and icon. Tooltips are supported and may be different for every item in the list. Selectable items in the list + may be selected or deselected and multiple selection may be enabled. Selection with right mouse button may also be enabled + to allow use of popup context menus. Items may also be 'activated' with a double click (or Enter key). </description> <methods> <method name="add_icon_item"> @@ -17680,6 +17817,7 @@ <argument index="1" name="selectable" type="bool" default="true"> </argument> <description> + Adds an item to the item list with no text, only an icon. </description> </method> <method name="add_item"> @@ -17690,26 +17828,32 @@ <argument index="2" name="selectable" type="bool" default="true"> </argument> <description> + Adds an item to the item list with specified text. Specify an icon of null for a list item with no icon. + If selectable is true the list item will be selectable. </description> </method> <method name="clear"> <description> + Remove all items from the list. </description> </method> <method name="ensure_current_is_visible"> <description> + Ensure selection is visible, adjusting the scroll position as necessary. </description> </method> <method name="get_allow_rmb_select" qualifiers="const"> <return type="bool"> </return> <description> + Return whether or not items may be selected via right mouse clicking. </description> </method> <method name="get_fixed_column_width" qualifiers="const"> <return type="int"> </return> <description> + If column size has been fixed to a value, return that value. </description> </method> <method name="get_fixed_icon_size" qualifiers="const"> @@ -17738,12 +17882,14 @@ <argument index="1" name="exact" type="bool" default="false"> </argument> <description> + Given a position within the control return the item (if any) at that point. </description> </method> <method name="get_item_count" qualifiers="const"> <return type="int"> </return> <description> + Return count of items currently in the item list. </description> </method> <method name="get_item_custom_bg_color" qualifiers="const"> @@ -17782,6 +17928,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Return the text for specified item index. </description> </method> <method name="get_item_tooltip" qualifiers="const"> @@ -17790,18 +17937,30 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Return tooltip hint for specified item index. + </description> + </method> + <method name="is_item_tooltip_enabled" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Returns whether the tooptip is enabled for specified item index. </description> </method> <method name="get_max_columns" qualifiers="const"> <return type="int"> </return> <description> + Return total number of columns in use by the list. </description> </method> <method name="get_max_text_lines" qualifiers="const"> <return type="int"> </return> <description> + Return total number of lines currently in use by the list. </description> </method> <method name="get_select_mode" qualifiers="const"> @@ -17814,7 +17973,7 @@ <return type="IntArray"> </return> <description> - Returns a list of selected indexes. + Returns the list of selected indexes. </description> </method> <method name="is_item_disabled" qualifiers="const"> @@ -17823,6 +17982,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns whether or not the item at the specified index is disabled </description> </method> <method name="is_item_selectable" qualifiers="const"> @@ -17831,12 +17991,14 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns whether or not the item at the specified index is selectable. </description> </method> <method name="is_same_column_width" qualifiers="const"> <return type="int"> </return> <description> + Returns whether or not all columns of the list are of the same size. </description> </method> <method name="is_selected" qualifiers="const"> @@ -17845,12 +18007,14 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns whether or not item at the specified index is currently selected. </description> </method> <method name="remove_item"> <argument index="0" name="idx" type="int"> </argument> <description> + Remove item at specified index from the list. </description> </method> <method name="select"> @@ -17859,18 +18023,22 @@ <argument index="1" name="single" type="bool" default="true"> </argument> <description> + Select the item at the specified index. + Note: This method does not trigger the item selection signal. </description> </method> <method name="set_allow_rmb_select"> <argument index="0" name="allow" type="bool"> </argument> <description> + Allow (or disallow) selection of (selectable) items in the list using right mouse button. </description> </method> <method name="set_fixed_column_width"> <argument index="0" name="width" type="int"> </argument> <description> + Set the size (width) all columns in the list are to use. </description> </method> <method name="set_fixed_icon_size"> @@ -17905,6 +18073,8 @@ <argument index="1" name="disabled" type="bool"> </argument> <description> + Disable (or enable) item at specified index. + Disabled items are not be selectable and do not fire activation (Enter or double-click) signals. </description> </method> <method name="set_item_icon"> @@ -17913,6 +18083,7 @@ <argument index="1" name="icon" type="Texture"> </argument> <description> + Set (or replace) icon of the item at the specified index. </description> </method> <method name="set_item_icon_region"> @@ -17929,6 +18100,7 @@ <argument index="1" name="metadata" type="Variant"> </argument> <description> + Sets a value (of any type) to be stored with the item at the specified index. </description> </method> <method name="set_item_selectable"> @@ -17937,6 +18109,7 @@ <argument index="1" name="selectable" type="bool"> </argument> <description> + Allow or disallow selection of the item at the specified index. </description> </method> <method name="set_item_text"> @@ -17945,6 +18118,7 @@ <argument index="1" name="text" type="String"> </argument> <description> + Sets text of item at specified index. </description> </method> <method name="set_item_tooltip"> @@ -17953,24 +18127,37 @@ <argument index="1" name="tooltip" type="String"> </argument> <description> + Sets tooltip hint for item at specified index. + </description> + </method> + <method name="set_item_tooltip_enabled"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="enable" type="bool"> + </argument> + <description> + Sets whether the tooltip is enabled for specified item index. </description> </method> <method name="set_max_columns"> <argument index="0" name="amount" type="int"> </argument> <description> + Set maximum number of columns to use for the list. </description> </method> <method name="set_max_text_lines"> <argument index="0" name="lines" type="int"> </argument> <description> + Set maximum number of lines to use for the list. </description> </method> <method name="set_same_column_width"> <argument index="0" name="enable" type="bool"> </argument> <description> + Sets a fixed size (width) to use for all columns of the list. </description> </method> <method name="set_select_mode"> @@ -17981,12 +18168,14 @@ </method> <method name="sort_items_by_text"> <description> + Sorts items in the list by their text. </description> </method> <method name="unselect"> <argument index="0" name="idx" type="int"> </argument> <description> + Ensure item at specified index is not selected. </description> </method> </methods> @@ -17995,6 +18184,7 @@ <argument index="0" name="index" type="int"> </argument> <description> + Fired when specified list item is activated via double click or Enter. </description> </signal> <signal name="item_rmb_selected"> @@ -18003,12 +18193,16 @@ <argument index="1" name="atpos" type="Vector2"> </argument> <description> + Fired when specified list item has been selected via right mouse clicking. + The click position is also provided to allow appropriate popup of context menus + at the correct location. </description> </signal> <signal name="item_selected"> <argument index="0" name="index" type="int"> </argument> <description> + Fired when specified item has been selected. </description> </signal> <signal name="multi_selected"> @@ -18017,6 +18211,7 @@ <argument index="1" name="selected" type="bool"> </argument> <description> + Fired when a multiple selection is altered on a list allowing mutliple selection. </description> </signal> </signals> @@ -18395,6 +18590,12 @@ Return the point in space where the body is touching another. If there is no collision, this method will return (0,0), so collisions must be checked first with [method is_colliding]. </description> </method> + <method name="get_move_and_slide_colliders" qualifiers="const"> + <return type="Array"> + </return> + <description> + </description> + </method> <method name="get_travel" qualifiers="const"> <return type="Vector2"> </return> @@ -18409,6 +18610,24 @@ Return whether the body is colliding with another. </description> </method> + <method name="is_move_and_slide_on_ceiling" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="is_move_and_slide_on_floor" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="is_move_and_slide_on_wall" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="move"> <return type="Vector2"> </return> @@ -18418,6 +18637,20 @@ Move the body in the given direction, stopping if there is an obstacle. The returned vector is how much movement was remaining before being stopped. </description> </method> + <method name="move_and_slide"> + <return type="Vector2"> + </return> + <argument index="0" name="linear_velocity" type="Vector2"> + </argument> + <argument index="1" name="floor_normal" type="Vector2" default="Vector2(0, 0)"> + </argument> + <argument index="2" name="slope_stop_min_velocity" type="float" default="5"> + </argument> + <argument index="3" name="max_bounces" type="int" default="4"> + </argument> + <description> + </description> + </method> <method name="move_to"> <return type="Vector2"> </return> @@ -18442,10 +18675,12 @@ <method name="test_move"> <return type="bool"> </return> - <argument index="0" name="rel_vec" type="Vector2"> + <argument index="0" name="from" type="Matrix32"> + </argument> + <argument index="1" name="rel_vec" type="Vector2"> </argument> <description> - Return true if there would be a collision if the body moved in the given direction. + Return true if there would be a collision if the body moved from the given point in the given direction. </description> </method> </methods> @@ -19243,7 +19478,7 @@ </description> </method> <method name="cursor_set_blink_enabled"> - <argument index="0" name="enable" type="bool"> + <argument index="0" name="enabled" type="bool"> </argument> <description> Set the line edit caret to blink. @@ -19269,6 +19504,12 @@ Return the cursor position inside the [LineEdit]. </description> </method> + <method name="get_expand_to_text_length" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="get_max_length" qualifiers="const"> <return type="int"> </return> @@ -19354,6 +19595,12 @@ Set the [i]editable[/i] status of the [LineEdit]. When disabled, existing text can't be modified and new text can't be added. </description> </method> + <method name="set_expand_to_text_length"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_max_length"> <argument index="0" name="chars" type="int"> </argument> @@ -21495,6 +21742,172 @@ <constants> </constants> </class> +<class name="NetworkedMultiplayerENet" inherits="NetworkedMultiplayerPeer" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="close_connection"> + <description> + </description> + </method> + <method name="create_client"> + <return type="int"> + </return> + <argument index="0" name="ip" type="String"> + </argument> + <argument index="1" name="port" type="int"> + </argument> + <argument index="2" name="in_bandwidth" type="int" default="0"> + </argument> + <argument index="3" name="out_bandwidth" type="int" default="0"> + </argument> + <description> + </description> + </method> + <method name="create_server"> + <return type="int"> + </return> + <argument index="0" name="port" type="int"> + </argument> + <argument index="1" name="max_clients" type="int" default="32"> + </argument> + <argument index="2" name="in_bandwidth" type="int" default="0"> + </argument> + <argument index="3" name="out_bandwidth" type="int" default="0"> + </argument> + <description> + </description> + </method> + <method name="get_compression_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="set_bind_ip"> + <argument index="0" name="ip" type="String"> + </argument> + <description> + </description> + </method> + <method name="set_compression_mode"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + <constant name="COMPRESS_NONE" value="0"> + </constant> + <constant name="COMPRESS_RANGE_CODER" value="1"> + </constant> + <constant name="COMPRESS_FASTLZ" value="2"> + </constant> + <constant name="COMPRESS_ZLIB" value="3"> + </constant> + </constants> +</class> +<class name="NetworkedMultiplayerPeer" inherits="PacketPeer" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_connection_status" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_packet_peer" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_unique_id" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="is_refusing_new_connections" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="poll"> + <description> + </description> + </method> + <method name="set_refuse_new_connections"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + </description> + </method> + <method name="set_target_peer"> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_transfer_mode"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <signals> + <signal name="connection_failed"> + <description> + </description> + </signal> + <signal name="connection_succeeded"> + <description> + </description> + </signal> + <signal name="peer_connected"> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </signal> + <signal name="peer_disconnected"> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </signal> + <signal name="server_disconnected"> + <description> + </description> + </signal> + </signals> + <constants> + <constant name="TRANSFER_MODE_UNRELIABLE" value="0"> + </constant> + <constant name="TRANSFER_MODE_UNRELIABLE_ORDERED" value="1"> + </constant> + <constant name="TRANSFER_MODE_RELIABLE" value="2"> + </constant> + <constant name="CONNECTION_DISCONNECTED" value="0"> + </constant> + <constant name="CONNECTION_CONNECTING" value="1"> + </constant> + <constant name="CONNECTION_CONNECTED" value="2"> + </constant> + <constant name="TARGET_PEER_BROADCAST" value="0"> + </constant> + <constant name="TARGET_PEER_SERVER" value="1"> + </constant> + </constants> +</class> <class name="Nil" category="Built-In Types"> <brief_description> </brief_description> @@ -21855,6 +22268,12 @@ Return the name of the node. This name is unique among the siblings (other child nodes from the same parent). </description> </method> + <method name="get_network_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> <method name="get_node" qualifiers="const"> <return type="Node"> </return> @@ -22019,6 +22438,12 @@ <description> </description> </method> + <method name="is_network_master" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="is_processing" qualifiers="const"> <return type="bool"> </return> @@ -22108,6 +22533,86 @@ Replace a node in a scene by a given one. Subscriptions that pass through this node will be lost. </description> </method> + <method name="rpc"> + <argument index="0" name="method" type="String"> + </argument> + <description> + </description> + </method> + <method name="rpc_config"> + <argument index="0" name="method" type="String"> + </argument> + <argument index="1" name="mode" type="int"> + </argument> + <description> + </description> + </method> + <method name="rpc_id"> + <argument index="0" name="peer_" type="int"> + </argument> + <argument index="1" name="method" type="String"> + </argument> + <description> + </description> + </method> + <method name="rpc_unreliable"> + <argument index="0" name="method" type="String"> + </argument> + <description> + </description> + </method> + <method name="rpc_unreliable_id"> + <argument index="0" name="peer_" type="int"> + </argument> + <argument index="1" name="method" type="String"> + </argument> + <description> + </description> + </method> + <method name="rset"> + <argument index="0" name="property" type="String"> + </argument> + <argument index="1" name="value" type="Variant"> + </argument> + <description> + </description> + </method> + <method name="rset_config"> + <argument index="0" name="property" type="String"> + </argument> + <argument index="1" name="mode" type="int"> + </argument> + <description> + </description> + </method> + <method name="rset_id"> + <argument index="0" name="peer_id" type="int"> + </argument> + <argument index="1" name="property" type="String"> + </argument> + <argument index="2" name="value" type="Variant"> + </argument> + <description> + </description> + </method> + <method name="rset_unreliable"> + <argument index="0" name="property" type="String"> + </argument> + <argument index="1" name="value" type="Variant"> + </argument> + <description> + </description> + </method> + <method name="rset_unreliable_id"> + <argument index="0" name="peer_id" type="int"> + </argument> + <argument index="1" name="property" type="String"> + </argument> + <argument index="2" name="value" type="Variant"> + </argument> + <description> + </description> + </method> <method name="set_display_folded"> <argument index="0" name="fold" type="bool"> </argument> @@ -22135,6 +22640,12 @@ Set the name of the [Node]. Name must be unique within parent, and setting an already existing name will cause for the node to be automatically renamed. </description> </method> + <method name="set_network_mode"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + </description> + </method> <method name="set_owner"> <argument index="0" name="owner" type="Node"> </argument> @@ -22227,6 +22738,24 @@ </constant> <constant name="NOTIFICATION_DRAG_END" value="22"> </constant> + <constant name="NOTIFICATION_PATH_CHANGED" value="23"> + </constant> + <constant name="NETWORK_MODE_INHERIT" value="0"> + </constant> + <constant name="NETWORK_MODE_MASTER" value="1"> + </constant> + <constant name="NETWORK_MODE_SLAVE" value="2"> + </constant> + <constant name="RPC_MODE_DISABLED" value="0"> + </constant> + <constant name="RPC_MODE_REMOTE" value="1"> + </constant> + <constant name="RPC_MODE_SYNC" value="2"> + </constant> + <constant name="RPC_MODE_MASTER" value="3"> + </constant> + <constant name="RPC_MODE_SLAVE" value="4"> + </constant> <constant name="PAUSE_MODE_INHERIT" value="0"> </constant> <constant name="PAUSE_MODE_STOP" value="1"> @@ -22266,6 +22795,27 @@ Return the global position of the 2D node. </description> </method> + <method name="get_global_rot" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the global rotation in radians of the 2D node. + </description> + </method> + <method name="get_global_rotd" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the global rotation in degrees of the 2D node. + </description> + </method> + <method name="get_global_scale" qualifiers="const"> + <return type="Vector2"> + </return> + <description> + Return the global scale of the 2D node. + </description> + </method> <method name="get_pos" qualifiers="const"> <return type="Vector2"> </return> @@ -22369,6 +22919,27 @@ Set the global position of the 2D node to 'pos'. </description> </method> + <method name="set_global_rot"> + <argument index="0" name="radians" type="float"> + </argument> + <description> + Set the global rotation in radians of the 2D node. + </description> + </method> + <method name="set_global_rotd"> + <argument index="0" name="degrees" type="float"> + </argument> + <description> + Set the global rotation in degrees of the 2D node. + </description> + </method> + <method name="set_global_scale"> + <argument index="0" name="scale" type="Vector2"> + </argument> + <description> + Set the global scale of the 2D node. + </description> + </method> <method name="set_global_transform"> <argument index="0" name="xform" type="Matrix32"> </argument> @@ -26763,14 +27334,16 @@ </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="motion" type="Vector2"> + <argument index="1" name="from" type="Matrix32"> </argument> - <argument index="2" name="margin" type="float" default="0.08"> + <argument index="2" name="motion" type="Vector2"> </argument> - <argument index="3" name="result" type="Physics2DTestMotionResult" default="NULL"> + <argument index="3" name="margin" type="float" default="0.08"> + </argument> + <argument index="4" name="result" type="Physics2DTestMotionResult" default="NULL"> </argument> <description> - Return whether a body can move in a given direction. Apart from the boolean return value, a [Physics2DTestMotionResult] can be passed to return additional information in. + Return whether a body can move from a given point in a given direction. Apart from the boolean return value, a [Physics2DTestMotionResult] can be passed to return additional information in. </description> </method> <method name="damped_spring_joint_create"> @@ -29667,14 +30240,14 @@ </description> </method> <method name="popup_centered"> - <argument index="0" name="size" type="Vector2" default="Vector2((0, 0))"> + <argument index="0" name="size" type="Vector2" default="Vector2(0, 0)"> </argument> <description> Popup (show the control in modal form) in the center of the screen, at the current size, or at a size determined by "size". </description> </method> <method name="popup_centered_minsize"> - <argument index="0" name="minsize" type="Vector2" default="Vector2((0, 0))"> + <argument index="0" name="minsize" type="Vector2" default="Vector2(0, 0)"> </argument> <description> Popup (show the control in modal form) in the center of the screen, ensuring the size is never smaller than [code]minsize[/code]. @@ -30967,6 +31540,12 @@ Returns the collision point in which the ray intersects the closest object. </description> </method> + <method name="get_exclude_parent_body" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="get_layer_mask" qualifiers="const"> <return type="int"> </return> @@ -31021,6 +31600,12 @@ Enables the RayCast2D. Only enabled raycasts will be able to query the space and report collisions. </description> </method> + <method name="set_exclude_parent_body"> + <argument index="0" name="mask" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_layer_mask"> <argument index="0" name="mask" type="int"> </argument> @@ -34093,6 +34678,12 @@ <description> </description> </method> + <method name="get_network_unique_id" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> <method name="get_node_count" qualifiers="const"> <return type="int"> </return> @@ -34139,12 +34730,24 @@ <description> </description> </method> + <method name="is_network_server" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="is_paused" qualifiers="const"> <return type="bool"> </return> <description> </description> </method> + <method name="is_refusing_new_network_connections" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="notify_group"> <argument index="0" name="call_flags" type="int"> </argument> @@ -34223,12 +34826,24 @@ <description> </description> </method> + <method name="set_network_peer"> + <argument index="0" name="peer" type="NetworkedMultiplayerPeer"> + </argument> + <description> + </description> + </method> <method name="set_pause"> <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> + <method name="set_refuse_new_network_connections"> + <argument index="0" name="refuse" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_screen_stretch"> <argument index="0" name="mode" type="int"> </argument> @@ -34241,6 +34856,14 @@ </method> </methods> <signals> + <signal name="connected_to_server"> + <description> + </description> + </signal> + <signal name="connection_failed"> + <description> + </description> + </signal> <signal name="files_dropped"> <argument index="0" name="files" type="StringArray"> </argument> @@ -34257,6 +34880,18 @@ <description> </description> </signal> + <signal name="network_peer_connected"> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </signal> + <signal name="network_peer_disconnected"> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </signal> <signal name="node_configuration_warning_changed"> <argument index="0" name="node" type="Object"> </argument> @@ -34273,6 +34908,10 @@ <description> </description> </signal> + <signal name="server_disconnected"> + <description> + </description> + </signal> <signal name="tree_changed"> <description> </description> @@ -37774,6 +38413,62 @@ <constants> </constants> </class> +<class name="StreamPeerBuffer" inherits="StreamPeer" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="clear"> + <description> + </description> + </method> + <method name="duplicate" qualifiers="const"> + <return type="StreamPeerBuffer"> + </return> + <description> + </description> + </method> + <method name="get_data_array" qualifiers="const"> + <return type="RawArray"> + </return> + <description> + </description> + </method> + <method name="get_pos" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_size" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="resize"> + <argument index="0" name="size" type="int"> + </argument> + <description> + </description> + </method> + <method name="seek"> + <argument index="0" name="pos" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_data_array"> + <argument index="0" name="data" type="RawArray"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="StreamPeerSSL" inherits="StreamPeer" category="Core"> <brief_description> SSL Stream peer. @@ -42058,6 +42753,12 @@ <description> </description> </method> + <method name="is_delayed_text_editor_enabled" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="is_folding_hidden" qualifiers="const"> <return type="bool"> </return> @@ -42106,6 +42807,12 @@ <description> </description> </method> + <method name="set_delayed_text_editor"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_drop_mode_flags"> <argument index="0" name="flags" type="int"> </argument> @@ -42174,6 +42881,10 @@ <description> </description> </signal> + <signal name="item_double_clicked"> + <description> + </description> + </signal> <signal name="item_edited"> <description> </description> @@ -43246,10 +43957,11 @@ <method name="create_action"> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="mergeable" type="bool" default="false"> + <argument index="1" name="merge_mode" type="int" default="0"> </argument> <description> - Create a new action. After this is called, do all your calls to [method add_do_method], [method add_undo_method], [method add_do_property] and [method add_undo_property]. + Create a new action. After this is called, do all your calls to [method add_do_method], [method add_undo_method], [method add_do_property] and [method add_un +do_property]. </description> </method> <method name="get_current_action_name" qualifiers="const"> @@ -43269,6 +43981,12 @@ </method> </methods> <constants> + <constant name="MERGE_DISABLE" value="0"> + </constant> + <constant name="MERGE_ENDS" value="1"> + </constant> + <constant name="MERGE_ALL" value="2"> + </constant> </constants> </class> <class name="VBoxContainer" inherits="BoxContainer" category="Core"> @@ -44724,9 +45442,9 @@ <method name="set_size_override"> <argument index="0" name="enable" type="bool"> </argument> - <argument index="1" name="size" type="Vector2" default="Vector2((-1, -1))"> + <argument index="1" name="size" type="Vector2" default="Vector2(-1, -1)"> </argument> - <argument index="2" name="margin" type="Vector2" default="Vector2((0, 0))"> + <argument index="2" name="margin" type="Vector2" default="Vector2(0, 0)"> </argument> <description> Set the size of the viewport. If the enable parameter is true, it would use the override, otherwise it would use the default size. If the size parameter is equal to [code](-1, -1)[/code], it won't update the size. @@ -45127,7 +45845,7 @@ </argument> <argument index="2" name="node" type="Object"> </argument> - <argument index="3" name="pos" type="Vector2" default="Vector2((0, 0))"> + <argument index="3" name="pos" type="Vector2" default="Vector2(0, 0)"> </argument> <description> </description> @@ -45137,6 +45855,8 @@ </argument> <argument index="1" name="default_value" type="Variant" default="NULL"> </argument> + <argument index="2" name="export" type="bool" default="false"> + </argument> <description> </description> </method> @@ -45288,6 +46008,14 @@ <description> </description> </method> + <method name="get_variable_export" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> <method name="get_variable_info" qualifiers="const"> <return type="Dictionary"> </return> @@ -45466,6 +46194,14 @@ <description> </description> </method> + <method name="set_variable_export"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="enable" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_variable_info"> <argument index="0" name="name" type="String"> </argument> @@ -45488,6 +46224,40 @@ <constants> </constants> </class> +<class name="VisualScriptBasicTypeConstant" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_basic_type" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_basic_type_constant" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="set_basic_type"> + <argument index="0" name="name" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_basic_type_constant"> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="VisualScriptBuiltinFunc" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -45510,6 +46280,86 @@ <constants> </constants> </class> +<class name="VisualScriptClassConstant" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_base_type"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="get_class_constant"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="set_base_type"> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> + <method name="set_class_constant"> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> +<class name="VisualScriptComment" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_description" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="get_size" qualifiers="const"> + <return type="Vector2"> + </return> + <description> + </description> + </method> + <method name="get_title" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="set_description"> + <argument index="0" name="description" type="String"> + </argument> + <description> + </description> + </method> + <method name="set_size"> + <argument index="0" name="size" type="Vector2"> + </argument> + <description> + </description> + </method> + <method name="set_title"> + <argument index="0" name="title" type="String"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="VisualScriptCondition" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -45552,6 +46402,40 @@ <constants> </constants> </class> +<class name="VisualScriptConstructor" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_constructor" qualifiers="const"> + <return type="Dictionary"> + </return> + <description> + </description> + </method> + <method name="get_constructor_type" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="set_constructor"> + <argument index="0" name="constructor" type="Dictionary"> + </argument> + <description> + </description> + </method> + <method name="set_constructor_type"> + <argument index="0" name="type" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="VisualScriptCustomNode" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -45592,16 +46476,6 @@ <description> </description> </method> - <method name="_get_output_port_unsequenced" qualifiers="virtual"> - <return type="int"> - </return> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="work_mem" type="Array"> - </argument> - <description> - </description> - </method> <method name="_get_output_sequence_port_count" qualifiers="virtual"> <return type="int"> </return> @@ -45656,14 +46530,6 @@ <description> </description> </method> - <method name="_is_output_port_unsequenced" qualifiers="virtual"> - <return type="int"> - </return> - <argument index="0" name="idx" type="int"> - </argument> - <description> - </description> - </method> <method name="_step" qualifiers="virtual"> <return type="Variant"> </return> @@ -45698,6 +46564,40 @@ </constant> </constants> </class> +<class name="VisualScriptDeconstruct" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_deconstruct_input_type" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_deconstruct_type" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="set_deconstruct_input_type"> + <argument index="0" name="input_type" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_deconstruct_type"> + <argument index="0" name="type" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="VisualScriptEmitSignal" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -45742,6 +46642,16 @@ <constants> </constants> </class> +<class name="VisualScriptExpression" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + </methods> + <constants> + </constants> +</class> <class name="VisualScriptFunction" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -45764,6 +46674,12 @@ <description> </description> </method> + <method name="get_base_script" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> <method name="get_base_type" qualifiers="const"> <return type="String"> </return> @@ -45788,18 +46704,42 @@ <description> </description> </method> + <method name="get_rpc_call_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_singleton" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> <method name="get_use_default_args" qualifiers="const"> <return type="int"> </return> <description> </description> </method> + <method name="get_validate" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="set_base_path"> <argument index="0" name="base_path" type="NodePath"> </argument> <description> </description> </method> + <method name="set_base_script"> + <argument index="0" name="base_script" type="String"> + </argument> + <description> + </description> + </method> <method name="set_base_type"> <argument index="0" name="base_type" type="String"> </argument> @@ -45824,12 +46764,30 @@ <description> </description> </method> + <method name="set_rpc_call_mode"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_singleton"> + <argument index="0" name="singleton" type="String"> + </argument> + <description> + </description> + </method> <method name="set_use_default_args"> <argument index="0" name="amount" type="int"> </argument> <description> </description> </method> + <method name="set_validate"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + </description> + </method> </methods> <constants> <constant name="CALL_MODE_SELF" value="0"> @@ -45918,17 +46876,41 @@ <constants> </constants> </class> -<class name="VisualScriptInputFilter" inherits="VisualScriptNode" category="Core"> +<class name="VisualScriptInputAction" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> <description> </description> <methods> + <method name="get_action_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_action_name" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="set_action_mode"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_action_name"> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> </class> -<class name="VisualScriptInputSelector" inherits="VisualScriptNode" category="Core"> +<class name="VisualScriptInputFilter" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> <description> @@ -45948,6 +46930,74 @@ <constants> </constants> </class> +<class name="VisualScriptLocalVar" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_var_name" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="get_var_type" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="set_var_name"> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> + <method name="set_var_type"> + <argument index="0" name="type" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> +<class name="VisualScriptLocalVarSet" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_var_name" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="get_var_type" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="set_var_name"> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> + <method name="set_var_type"> + <argument index="0" name="type" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="VisualScriptMathConstant" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -46020,12 +47070,46 @@ <description> </description> </method> + <method name="get_typed" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> <method name="set_operator"> <argument index="0" name="op" type="int"> </argument> <description> </description> </method> + <method name="set_typed"> + <argument index="0" name="type" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> +<class name="VisualScriptPreload" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_preload" qualifiers="const"> + <return type="Object"> + </return> + <description> + </description> + </method> + <method name="set_preload"> + <argument index="0" name="resource" type="Object"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -46042,6 +47126,12 @@ <description> </description> </method> + <method name="get_base_script" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> <method name="get_base_type" qualifiers="const"> <return type="String"> </return> @@ -46078,6 +47168,12 @@ <description> </description> </method> + <method name="set_base_script"> + <argument index="0" name="base_script" type="String"> + </argument> + <description> + </description> + </method> <method name="set_base_type"> <argument index="0" name="base_type" type="String"> </argument> @@ -46130,19 +47226,21 @@ <description> </description> </method> - <method name="get_base_type" qualifiers="const"> + <method name="get_base_script" qualifiers="const"> <return type="String"> </return> <description> </description> </method> - <method name="get_basic_type" qualifiers="const"> - <return type="int"> + <method name="get_base_type" qualifiers="const"> + <return type="String"> </return> <description> </description> </method> - <method name="get_builtin_value" qualifiers="const"> + <method name="get_basic_type" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> @@ -46164,14 +47262,14 @@ <description> </description> </method> - <method name="is_using_builtin_value" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_base_path"> + <argument index="0" name="base_path" type="NodePath"> + </argument> <description> </description> </method> - <method name="set_base_path"> - <argument index="0" name="base_path" type="NodePath"> + <method name="set_base_script"> + <argument index="0" name="base_script" type="String"> </argument> <description> </description> @@ -46188,12 +47286,6 @@ <description> </description> </method> - <method name="set_builtin_value"> - <argument index="0" name="value" type="Variant"> - </argument> - <description> - </description> - </method> <method name="set_call_mode"> <argument index="0" name="mode" type="int"> </argument> @@ -46212,12 +47304,6 @@ <description> </description> </method> - <method name="set_use_builtin_value"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> </methods> <constants> <constant name="CALL_MODE_SELF" value="0"> @@ -46316,69 +47402,55 @@ <constants> </constants> </class> -<class name="VisualScriptScriptCall" inherits="VisualScriptNode" category="Core"> +<class name="VisualScriptSelf" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> <description> </description> <methods> - <method name="get_argument_count" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_base_path" qualifiers="const"> - <return type="NodePath"> - </return> - <description> - </description> - </method> - <method name="get_call_mode" qualifiers="const"> + </methods> + <constants> + </constants> +</class> +<class name="VisualScriptSequence" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_steps" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="get_function" qualifiers="const"> - <return type="String"> - </return> - <description> - </description> - </method> - <method name="set_argument_count"> - <argument index="0" name="argument_count" type="int"> - </argument> - <description> - </description> - </method> - <method name="set_base_path"> - <argument index="0" name="base_path" type="NodePath"> - </argument> - <description> - </description> - </method> - <method name="set_call_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_steps"> + <argument index="0" name="steps" type="int"> </argument> <description> </description> </method> - <method name="set_function"> - <argument index="0" name="function" type="String"> + </methods> + <constants> + </constants> +</class> +<class name="VisualScriptSubCall" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="_subcall" qualifiers="virtual"> + <argument index="0" name="arguments" type="Variant"> </argument> <description> </description> </method> </methods> <constants> - <constant name="CALL_MODE_SELF" value="0"> - </constant> - <constant name="CALL_MODE_NODE_PATH" value="1"> - </constant> </constants> </class> -<class name="VisualScriptSelf" inherits="VisualScriptNode" category="Core"> +<class name="VisualScriptSwitch" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> <description> @@ -46388,36 +47460,32 @@ <constants> </constants> </class> -<class name="VisualScriptSequence" inherits="VisualScriptNode" category="Core"> +<class name="VisualScriptTypeCast" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> <description> </description> <methods> - <method name="get_steps" qualifiers="const"> - <return type="int"> + <method name="get_base_script" qualifiers="const"> + <return type="String"> </return> <description> </description> </method> - <method name="set_steps"> - <argument index="0" name="steps" type="int"> + <method name="get_base_type" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="set_base_script"> + <argument index="0" name="path" type="String"> </argument> <description> </description> </method> - </methods> - <constants> - </constants> -</class> -<class name="VisualScriptSubCall" inherits="VisualScriptNode" category="Core"> - <brief_description> - </brief_description> - <description> - </description> - <methods> - <method name="_subcall" qualifiers="virtual"> - <argument index="0" name="arguments" type="Variant"> + <method name="set_base_type"> + <argument index="0" name="type" type="String"> </argument> <description> </description> @@ -46512,11 +47580,11 @@ </method> </methods> <constants> - <constant name="YIELD_FRAME" value="0"> + <constant name="YIELD_FRAME" value="1"> </constant> - <constant name="YIELD_FIXED_FRAME" value="1"> + <constant name="YIELD_FIXED_FRAME" value="2"> </constant> - <constant name="YIELD_WAIT" value="2"> + <constant name="YIELD_WAIT" value="3"> </constant> </constants> </class> @@ -46684,6 +47752,8 @@ </argument> <argument index="4" name="arg4" type="float" default="1"> </argument> + <argument index="5" name="arg5" type="bool" default="false"> + </argument> <description> </description> </method> diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index ba93a26a2d..3809f4c7b9 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -8196,7 +8196,7 @@ RasterizerGLES2::Texture* RasterizerGLES2::_bind_canvas_texture(const RID& p_tex return NULL; } -void RasterizerGLES2::canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width) { +void RasterizerGLES2::canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased) { _bind_canvas_texture(RID()); Color c=p_color; @@ -8208,8 +8208,18 @@ void RasterizerGLES2::canvas_draw_line(const Point2& p_from, const Point2& p_to, Vector3(p_to.x,p_to.y,0) }; +#ifdef GLEW_ENABLED + if (p_antialiased) + glEnable(GL_LINE_SMOOTH); +#endif glLineWidth(p_width); _draw_primitive(2,verts,0,0,0); + +#ifdef GLEW_ENABLED + if (p_antialiased) + glDisable(GL_LINE_SMOOTH); +#endif + _rinfo.ci_draw_commands++; } @@ -9135,7 +9145,7 @@ void RasterizerGLES2::_canvas_item_render_commands(CanvasItem *p_item,CanvasItem case CanvasItem::Command::TYPE_LINE: { CanvasItem::CommandLine* line = static_cast<CanvasItem::CommandLine*>(c); - canvas_draw_line(line->from,line->to,line->color,line->width); + canvas_draw_line(line->from,line->to,line->color,line->width,line->antialiased); } break; case CanvasItem::Command::TYPE_RECT: { diff --git a/drivers/gles2/rasterizer_gles2.h b/drivers/gles2/rasterizer_gles2.h index c9fc0c247d..b18f89d8e7 100644 --- a/drivers/gles2/rasterizer_gles2.h +++ b/drivers/gles2/rasterizer_gles2.h @@ -1633,7 +1633,7 @@ public: virtual void canvas_begin_rect(const Matrix32& p_transform); virtual void canvas_set_clip(bool p_clip, const Rect2& p_rect); virtual void canvas_end_rect(); - virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width); + virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased); virtual void canvas_draw_rect(const Rect2& p_rect, int p_flags, const Rect2& p_source,RID p_texture,const Color& p_modulate); virtual void canvas_draw_style_box(const Rect2& p_rect, const Rect2& p_src_region, RID p_texture,const float *p_margins, bool p_draw_center=true,const Color& p_modulate=Color(1,1,1)); virtual void canvas_draw_primitive(const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width); diff --git a/main/input_default.cpp b/main/input_default.cpp index c655b409ff..ce480b4f99 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -71,13 +71,13 @@ InputDefault::SpeedTrack::SpeedTrack() { reset(); } -bool InputDefault::is_key_pressed(int p_scancode) { +bool InputDefault::is_key_pressed(int p_scancode) const { _THREAD_SAFE_METHOD_ return keys_pressed.has(p_scancode); } -bool InputDefault::is_mouse_button_pressed(int p_button) { +bool InputDefault::is_mouse_button_pressed(int p_button) const { _THREAD_SAFE_METHOD_ return (mouse_button_mask&(1<<p_button))!=0; @@ -89,14 +89,16 @@ static int _combine_device(int p_value,int p_device) { return p_value|(p_device<<20); } -bool InputDefault::is_joy_button_pressed(int p_device, int p_button) { +bool InputDefault::is_joy_button_pressed(int p_device, int p_button) const{ _THREAD_SAFE_METHOD_ return joy_buttons_pressed.has(_combine_device(p_button,p_device)); } -bool InputDefault::is_action_pressed(const StringName& p_action) { +bool InputDefault::is_action_pressed(const StringName& p_action) const{ + return action_state.has(p_action) && action_state[p_action].pressed; +#if 0 if (custom_action_press.has(p_action)) return true; //simpler @@ -147,9 +149,37 @@ bool InputDefault::is_action_pressed(const StringName& p_action) { } return false; +#endif } -float InputDefault::get_joy_axis(int p_device,int p_axis) { +bool InputDefault::is_action_just_pressed(const StringName& p_action) const { + + const Map<StringName,Action>::Element *E=action_state.find(p_action); + if (!E) + return false; + + if (OS::get_singleton()->is_in_fixed_frame()) { + return E->get().pressed && E->get().fixed_frame==OS::get_singleton()->get_fixed_frames(); + } else { + return E->get().pressed && E->get().idle_frame==OS::get_singleton()->get_idle_frames(); + } +} + +bool InputDefault::is_action_just_released(const StringName& p_action) const{ + + const Map<StringName,Action>::Element *E=action_state.find(p_action); + if (!E) + return false; + + if (OS::get_singleton()->is_in_fixed_frame()) { + return !E->get().pressed && E->get().fixed_frame==OS::get_singleton()->get_fixed_frames(); + } else { + return !E->get().pressed && E->get().idle_frame==OS::get_singleton()->get_idle_frames(); + } +} + + +float InputDefault::get_joy_axis(int p_device,int p_axis) const{ _THREAD_SAFE_METHOD_ int c = _combine_device(p_axis,p_device); @@ -247,19 +277,19 @@ void InputDefault::joy_connection_changed(int p_idx, bool p_connected, String p_ emit_signal("joy_connection_changed", p_idx, p_connected); }; -Vector3 InputDefault::get_accelerometer() { +Vector3 InputDefault::get_accelerometer() const{ _THREAD_SAFE_METHOD_ return accelerometer; } -Vector3 InputDefault::get_magnetometer() { +Vector3 InputDefault::get_magnetometer() const{ _THREAD_SAFE_METHOD_ return magnetometer; } -Vector3 InputDefault::get_gyroscope() { +Vector3 InputDefault::get_gyroscope() const { _THREAD_SAFE_METHOD_ return gyroscope; @@ -341,6 +371,23 @@ void InputDefault::parse_input_event(const InputEvent& p_event) { } + + if (!p_event.is_echo()) { + for (const Map<StringName,InputMap::Action>::Element *E=InputMap::get_singleton()->get_action_map().front();E;E=E->next()) { + + if (InputMap::get_singleton()->event_is_action(p_event,E->key())) { + + Action action; + action.fixed_frame=OS::get_singleton()->get_fixed_frames(); + action.idle_frame=OS::get_singleton()->get_idle_frames(); + action.pressed=p_event.is_pressed(); + + action_state[E->key()]=action; + + } + } + } + if (main_loop) main_loop->input_event(p_event); @@ -441,21 +488,25 @@ void InputDefault::iteration(float p_step) { void InputDefault::action_press(const StringName& p_action) { - if (custom_action_press.has(p_action)) { + Action action; + + action.fixed_frame=OS::get_singleton()->get_fixed_frames(); + action.idle_frame=OS::get_singleton()->get_idle_frames(); + action.pressed=true; + + action_state[p_action]=action; - custom_action_press[p_action]++; - } else { - custom_action_press[p_action]=1; - } } void InputDefault::action_release(const StringName& p_action){ - ERR_FAIL_COND(!custom_action_press.has(p_action)); - custom_action_press[p_action]--; - if (custom_action_press[p_action]==0) { - custom_action_press.erase(p_action); - } + Action action; + + action.fixed_frame=OS::get_singleton()->get_fixed_frames(); + action.idle_frame=OS::get_singleton()->get_idle_frames(); + action.pressed=true; + + action_state[p_action]=action; } void InputDefault::set_emulate_touch(bool p_emulate) { @@ -508,12 +559,18 @@ static const char *s_ControllerMappings [] = #ifdef WINDOWS_ENABLED "00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,", "00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,", + "02200090000000000000504944564944,8Bitdo NES30 PRO USB,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", "0d0f4900000000000000504944564944,Hatsune Miku Sho Controller,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", + "0d0f6e00000000000000504944564944,HORIPAD 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", "10080100000000000000504944564944,PS1 USB,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,", "10080300000000000000504944564944,PS2 USB,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a4,righty:a2,lefttrigger:b4,righttrigger:b5,", + "10280900000000000000504944564944,8Bitdo SFC30 GamePad,a:b1,b:b0,y:b3,x:b4,start:b11,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,", + "20380900000000000000504944564944,8Bitdo NES30 PRO Wireless,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,", "25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,", "2509e803000000000000504944564944,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", "28040140000000000000504944564944,GamePad Pro USB,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,", + "300f1001000000000000504944564944,Saitek P480 Rumble Pad,a:b2,b:b3,x:b0,y:b1,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b5,righttrigger:b7,", + "341a0108000000000000504944564944,EXEQ RF USB Gamepad 8206,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,leftstick:b8,rightstick:b7,back:b8,start:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,", "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", "36280100000000000000504944564944,OUYA Controller,a:b0,b:b3,y:b2,x:b1,start:b14,guide:b15,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b8,dpleft:b10,dpdown:b9,dpright:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b12,righttrigger:b13,", "49190204000000000000504944564944,Ipega PG-9023,a:b0,b:b1,x:b3,y:b4,back:b10,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b8,righttrigger:b9", @@ -523,6 +580,7 @@ static const char *s_ControllerMappings [] = "4f0400b3000000000000504944564944,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,", "4f0415b3000000000000504944564944,Thrustmaster Dual Analog 3.2,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,", "4f0423b3000000000000504944564944,Dual Trigger 3-in-1,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7", + "63252305000000000000504944564944,USB Vibration Joystick (BM),x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,", "6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", "6d0418c2000000000000504944564944,Logitech RumblePad 2 USB,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,", "6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", @@ -538,8 +596,10 @@ static const char *s_ControllerMappings [] = "8f0e1200000000000000504944564944,Acme,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,", "9000318000000000000504944564944,Mayflash Wiimote PC Adapter,a:b2,b:h0.4,x:b0,y:b1,back:b4,start:b5,guide:b11,leftshoulder:b6,rightshoulder:b3,leftx:a0,lefty:a1,", "a3060cff000000000000504944564944,Saitek P2500,a:b2,b:b3,y:b1,x:b0,start:b4,guide:b10,back:b5,leftstick:b8,rightstick:b9,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,", + "c0111352000000000000504944564944,Battalife Joystick,x:b4,a:b6,b:b7,y:b5,back:b2,start:b3,leftshoulder:b0,rightshoulder:b1,leftx:a0,lefty:a1,", "c911f055000000000000504944564944,GAMEPAD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", "d6206dca000000000000504944564944,PowerA Pro Ex,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", + "ff113133000000000000504944564944,Gembird JPD-DualForce,a:b2,b:b3,x:b0,y:b1,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,leftstick:b10,rightstick:b11,", "ff113133000000000000504944564944,SVEN X-PAD,a:b2,b:b3,y:b1,x:b0,start:b5,back:b4,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b8,righttrigger:b9,", "ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", "__XINPUT_DEVICE__,XInput Gamepad,a:b12,b:b13,x:b14,y:b15,start:b4,back:b5,leftstick:b6,rightstick:b7,leftshoulder:b8,rightshoulder:b9,dpup:b0,dpdown:b1,dpleft:b2,dpright:b3,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,", @@ -548,21 +608,30 @@ static const char *s_ControllerMappings [] = #ifdef OSX_ENABLED "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", "050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,y:b9,x:b10,start:b6,guide:b8,back:b7,dpup:b2,dpleft:b0,dpdown:b3,dpright:b1,leftx:a0,lefty:a1,lefttrigger:b12,righttrigger:,leftshoulder:b11,", + "050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,x:b18,y:b17,back:b7,guide:b8,start:b6,leftstick:b23,rightstick:b24,leftshoulder:b19,rightshoulder:b20,dpup:b11,dpdown:b12,dpleft:b13,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b21,righttrigger:b22,", "0d0f0000000000004d00000000000000,HORI Gem Pad 3,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", + "0d0f0000000000006600000000000000,HORIPAD FPS PLUS 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:a4,", + "10280000000000000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,", + "2509000000000000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", + "351200000000000021ab000000000000,SFC30 Joystick,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,", "4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", "4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", "4f0400000000000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,", "4f0400000000000015b3000000000000,Thrustmaster Dual Analog 3.2,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,", "5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "5e04000000000000dd02000000000000,Xbox One Wired Controller,x:b2,a:b0,b:b1,y:b3,back:b9,guide:b10,start:b8,dpleft:b13,dpdown:b12,dpright:b14,dpup:b11,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b6,rightstick:b7,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "6d0400000000000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ "6d0400000000000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", "6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */ "6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "79000000000000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,x:b0,y:b12,back:b32,start:b36,leftstick:b40,rightstick:b44,leftshoulder:b16,rightshoulder:b20,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a4,rightx:a8,righty:a12,lefttrigger:b24,righttrigger:b28,", "79000000000000000600000000000000,G-Shark GP-702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,", "83050000000000006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,", "891600000000000000fd000000000000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b8,guide:b10,back:b9,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,", "8f0e0000000000000300000000000000,Piranha xtreme,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,", - "AD1B00000000000001F9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "ad1b00000000000001f9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "b4040000000000000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,x:b3,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,", + "d814000000000000cecf000000000000,MC Cthulhu,leftx:,lefty:,rightx:,righty:,lefttrigger:b6,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,righttrigger:b7,", #endif #if X11_ENABLED @@ -586,13 +655,14 @@ static const char *s_ControllerMappings [] = "030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,x:b1,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,", "030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,y:b3,x:b1,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,", "030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,", - "030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "030000005e0400001907000000010000,X360 Wireless Controller,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b10,rightshoulder:b5,rightx:a3,start:b7,righty:a4,dpleft:h0.8,lefttrigger:a2,x:b2,dpup:h0.1,back:b6,leftstick:b9,leftshoulder:b4,y:b3,a:b0,dpright:h0.2,righttrigger:a5,b:b1,", "030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "030000005e0400008e02000001000000,Microsoft X-Box 360 pad,leftstick:b9,leftx:a0,lefty:a1,dpdown:h0.1,rightstick:b10,rightshoulder:b5,rightx:a3,start:b7,righty:a4,dpleft:h0.2,lefttrigger:a2,x:b2,dpup:h0.4,back:b6,leftshoulder:b4,y:b3,a:b0,dpright:h0.8,righttrigger:a5,b:b1,", "030000005e0400008e02000004010000,Microsoft X-Box 360 pad,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,", "030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", + "030000005e0400008e02000062230000,Microsoft X-Box 360 pad,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,", "030000005e040000d102000001010000,Microsoft X-Box One pad,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "030000005e040000dd02000003020000,Microsoft X-Box One pad v2,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", @@ -606,6 +676,7 @@ static const char *s_ControllerMappings [] = "030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,x:b0,a:b2,b:b3,y:b1,back:b10,guide:b12,start:b11,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,", + "030000006f0e00000103000000020000,Logic3 Controller,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "030000006f0e00001304000000010000,Generic X-Box pad,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,", "030000006f0e00001f01000000010000,Generic X-Box pad,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", @@ -620,19 +691,26 @@ static const char *s_ControllerMappings [] = "030000008916000001fd000024010000,Razer Onza Classic Edition,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:b11,dpdown:b14,dpright:b12,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,", "030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,", + "03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,y:b1,x:b0,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b6,righttrigger:b7,", "03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,", "03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,", "03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,", "03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,", + "03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,", "03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,", "03000000c9110000f055000011010000,HJC Game GAMEPAD,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b4,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,", + "03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,a:b0,b:b1,y:b2,x:b3,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,", + "03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftshoulder:b4,rightshoulder:b5,lefttrigger:b6,righttrigger:b7,leftx:a0,lefty:a1,", "03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,", "03000000fd0500002a26000000010000,3dfx InterAct HammerHead FX,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b5,rightshoulder:b7,rightx:a2,start:b11,righty:a3,dpleft:h0.8,lefttrigger:b8,x:b0,dpup:h0.1,back:b10,leftstick:b2,leftshoulder:b6,y:b1,a:b3,dpright:h0.2,righttrigger:b9,b:b4,", "03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", + "05000000010000000100000003000000,Nintendo Wiimote,a:b0,b:b1,y:b3,x:b2,start:b9,guide:b10,back:b8,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,", + "05000000102800000900000000010000,8Bitdo SFC30 GamePad,x:b4,a:b1,b:b0,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,", "05000000362800000100000002010000,OUYA Game Controller,leftx:a0,lefty:a1,dpdown:b9,rightstick:b7,rightshoulder:b5,rightx:a3,start:b16,righty:a4,dpleft:b10,lefttrigger:b12,x:b1,dpup:b8,back:b14,leftstick:b6,leftshoulder:b4,y:b2,a:b0,dpright:b11,righttrigger:b13,b:b3,", "05000000362800000100000003010000,OUYA Game Controller,leftx:a0,lefty:a1,dpdown:b9,rightstick:b7,rightshoulder:b5,rightx:a3,start:b16,righty:a4,dpleft:b10,lefttrigger:b12,x:b1,dpup:b8,back:b14,leftstick:b6,leftshoulder:b4,y:b2,a:b0,dpright:b11,righttrigger:b13,b:b3,", "05000000362800000100000004010000,OUYA Game Controller,leftx:a0,lefty:a1,dpdown:b9,rightstick:b7,rightshoulder:b5,rightx:a3,start:b16,righty:a4,dpleft:b10,lefttrigger:b12,x:b1,dpup:b8,back:b14,leftstick:b6,leftshoulder:b4,y:b2,a:b0,dpright:b11,righttrigger:b13,b:b3,", + "05000000380700006652000025010000,Mad Catz C.T.R.L.R,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,", "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", "050000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,", "050000004c050000c405000000010000,PS4 Controller (Bluetooth),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", @@ -1055,6 +1133,7 @@ bool InputDefault::is_joy_mapped(int p_device) { } String InputDefault::get_joy_guid_remapped(int p_device) const { + ERR_FAIL_COND_V(!joy_names.has(p_device), ""); return joy_names[p_device].uid; } diff --git a/main/input_default.h b/main/input_default.h index cb71312e22..fbf7837b3b 100644 --- a/main/input_default.h +++ b/main/input_default.h @@ -38,16 +38,27 @@ class InputDefault : public Input { _THREAD_SAFE_CLASS_ int mouse_button_mask; + + Set<int> keys_pressed; Set<int> joy_buttons_pressed; Map<int,float> _joy_axis; - Map<StringName,int> custom_action_press; + //Map<StringName,int> custom_action_press; Vector3 accelerometer; Vector3 magnetometer; Vector3 gyroscope; Vector2 mouse_pos; MainLoop *main_loop; + struct Action { + uint64_t fixed_frame; + uint64_t idle_frame; + bool pressed; + }; + + Map<StringName,Action> action_state; + + bool emulate_touch; struct VibrationInfo { @@ -164,12 +175,14 @@ public: - virtual bool is_key_pressed(int p_scancode); - virtual bool is_mouse_button_pressed(int p_button); - virtual bool is_joy_button_pressed(int p_device, int p_button); - virtual bool is_action_pressed(const StringName& p_action); + virtual bool is_key_pressed(int p_scancode) const; + virtual bool is_mouse_button_pressed(int p_button) const; + virtual bool is_joy_button_pressed(int p_device, int p_button) const; + virtual bool is_action_pressed(const StringName& p_action) const; + virtual bool is_action_just_pressed(const StringName& p_action) const; + virtual bool is_action_just_released(const StringName& p_action) const; - virtual float get_joy_axis(int p_device,int p_axis); + virtual float get_joy_axis(int p_device,int p_axis) const; String get_joy_name(int p_idx); virtual Array get_connected_joysticks(); virtual Vector2 get_joy_vibration_strength(int p_device); @@ -178,9 +191,9 @@ public: void joy_connection_changed(int p_idx, bool p_connected, String p_name, String p_guid = ""); void parse_joystick_mapping(String p_mapping, bool p_update_existing); - virtual Vector3 get_accelerometer(); - virtual Vector3 get_magnetometer(); - virtual Vector3 get_gyroscope(); + virtual Vector3 get_accelerometer() const; + virtual Vector3 get_magnetometer() const; + virtual Vector3 get_gyroscope() const; virtual Point2 get_mouse_pos() const; virtual Point2 get_mouse_speed() const; diff --git a/main/main.cpp b/main/main.cpp index aa8540632f..e339f399de 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1560,6 +1560,8 @@ bool Main::iteration() { int iters = 0; + OS::get_singleton()->_in_fixed=true; + while(time_accum>frame_slice) { uint64_t fixed_begin = OS::get_singleton()->get_ticks_usec(); @@ -1590,8 +1592,11 @@ bool Main::iteration() { fixed_process_ticks=MAX(fixed_process_ticks,OS::get_singleton()->get_ticks_usec()-fixed_begin); // keep the largest one for reference fixed_process_max=MAX(OS::get_singleton()->get_ticks_usec()-fixed_begin,fixed_process_max); iters++; + OS::get_singleton()->_fixed_frames++; } + OS::get_singleton()->_in_fixed=false; + uint64_t idle_begin = OS::get_singleton()->get_ticks_usec(); OS::get_singleton()->get_main_loop()->idle( step*time_scale ); @@ -1640,6 +1645,7 @@ bool Main::iteration() { // x11_delay_usec(10000); frames++; + OS::get_singleton()->_idle_frames++; if (frame>1000000) { diff --git a/modules/enet/SCsub b/modules/enet/SCsub index c676c55c89..d2bc8801e4 100644 --- a/modules/enet/SCsub +++ b/modules/enet/SCsub @@ -2,5 +2,7 @@ Import('env') env.add_source_files(env.modules_sources,"*.cpp") env.add_source_files(env.modules_sources,"*.c") +#TODO: Make it possible to build against system enet +env.Append(CPPPATH = ["#modules/enet"]) Export('env') diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp index aebdfe03a5..18a4347edf 100644 --- a/modules/enet/networked_multiplayer_enet.cpp +++ b/modules/enet/networked_multiplayer_enet.cpp @@ -1,3 +1,5 @@ +#include "os/os.h" +#include "io/marshalls.h" #include "networked_multiplayer_enet.h" void NetworkedMultiplayerENet::set_transfer_mode(TransferMode p_mode) { @@ -5,73 +7,71 @@ void NetworkedMultiplayerENet::set_transfer_mode(TransferMode p_mode) { transfer_mode=p_mode; } -void NetworkedMultiplayerENet::set_target_peer(const StringName &p_peer){ +void NetworkedMultiplayerENet::set_target_peer(int p_peer){ target_peer=p_peer; } -void NetworkedMultiplayerENet::set_channel(int p_channel){ - send_channel=p_channel; -} - - -StringName NetworkedMultiplayerENet::get_packet_peer() const{ +int NetworkedMultiplayerENet::get_packet_peer() const{ - ERR_FAIL_COND_V(!active,StringName()); - ERR_FAIL_COND_V(incoming_packets.size()==0,StringName()); + ERR_FAIL_COND_V(!active,1); + ERR_FAIL_COND_V(incoming_packets.size()==0,1); return incoming_packets.front()->get().from; } -int NetworkedMultiplayerENet::get_packet_channel() const{ - - ERR_FAIL_COND_V(!active,0); - ERR_FAIL_COND_V(incoming_packets.size()==0,0); - return incoming_packets.front()->get().from_channel; -} - -Error NetworkedMultiplayerENet::create_server(int p_port, int p_max_clients, int p_max_channels, int p_in_bandwidth, int p_out_bandwidth){ +Error NetworkedMultiplayerENet::create_server(int p_port, int p_max_clients, int p_in_bandwidth, int p_out_bandwidth){ ERR_FAIL_COND_V(active,ERR_ALREADY_IN_USE); ENetAddress address; - address.host = ENET_HOST_ANY; - /* Bind the server to port 1234. */ - address.port = 1234; + address.host = bind_ip; + + address.port = p_port; host = enet_host_create (& address /* the address to bind the server host to */, p_max_clients /* allow up to 32 clients and/or outgoing connections */, - p_max_channels /* allow up to 2 channels to be used, 0 and 1 */, + 2 /* allow up to 2 channels to be used, 0 and 1 */, p_in_bandwidth /* assume any amount of incoming bandwidth */, p_out_bandwidth /* assume any amount of outgoing bandwidth */); ERR_FAIL_COND_V(!host,ERR_CANT_CREATE); + _setup_compressor(); active=true; server=true; + refuse_connections=false; + unique_id=1; connection_status=CONNECTION_CONNECTED; return OK; } -Error NetworkedMultiplayerENet::create_client(const IP_Address& p_ip,int p_port, int p_max_channels, int p_in_bandwidth, int p_out_bandwidth){ +Error NetworkedMultiplayerENet::create_client(const IP_Address& p_ip, int p_port, int p_in_bandwidth, int p_out_bandwidth){ ERR_FAIL_COND_V(active,ERR_ALREADY_IN_USE); host = enet_host_create (NULL /* create a client host */, 1 /* only allow 1 outgoing connection */, - p_max_channels /* allow up 2 channels to be used, 0 and 1 */, + 2 /* allow up 2 channels to be used, 0 and 1 */, p_in_bandwidth /* 56K modem with 56 Kbps downstream bandwidth */, p_out_bandwidth /* 56K modem with 14 Kbps upstream bandwidth */); ERR_FAIL_COND_V(!host,ERR_CANT_CREATE); + _setup_compressor(); + ENetAddress address; address.host=p_ip.host; address.port=p_port; + //enet_address_set_host (& address, "localhost"); + //address.port = p_port; + + unique_id=_gen_unique_id(); + /* Initiate the connection, allocating the two channels 0 and 1. */ - ENetPeer *peer = enet_host_connect (host, & address, p_max_channels, 0); + ENetPeer *peer = enet_host_connect (host, & address, 2, unique_id); if (peer == NULL) { enet_host_destroy(host); @@ -83,6 +83,7 @@ Error NetworkedMultiplayerENet::create_client(const IP_Address& p_ip,int p_port, connection_status=CONNECTION_CONNECTING; active=true; server=false; + refuse_connections=false; return OK; } @@ -95,18 +96,41 @@ void NetworkedMultiplayerENet::poll(){ ENetEvent event; /* Wait up to 1000 milliseconds for an event. */ - while (enet_host_service (host, & event, 1000) > 0) - { + while (true) { + + if (!host || !active) //might have been disconnected while emitting a notification + return; + + int ret = enet_host_service (host, & event, 1); + + if (ret<0) { + //error, do something? + break; + } else if (ret==0) { + break; + } + switch (event.type) { case ENET_EVENT_TYPE_CONNECT: { /* Store any relevant client information here. */ + if (server && refuse_connections) { + enet_peer_reset(event.peer); + break; + } + IP_Address ip; ip.host=event.peer -> address.host; - StringName *new_id = memnew( StringName ); - *new_id = String(ip) +":"+ itos(event.peer -> address.port); + int *new_id = memnew( int ); + *new_id = event.data; + + if (*new_id==0) { //data zero is sent by server (enet won't let you configure this). Server is always 1 + *new_id=1; + } + + event.peer->data=new_id; peer_map[*new_id]=event.peer; @@ -114,29 +138,170 @@ void NetworkedMultiplayerENet::poll(){ emit_signal("peer_connected",*new_id); + if (server) { + //someone connected, let it know of all the peers available + for (Map<int,ENetPeer*>::Element *E=peer_map.front();E;E=E->next()) { + + if (E->key()==*new_id) + continue; + //send existing peers to new peer + ENetPacket * packet = enet_packet_create (NULL,8,ENET_PACKET_FLAG_RELIABLE); + encode_uint32(SYSMSG_ADD_PEER,&packet->data[0]); + encode_uint32(E->key(),&packet->data[4]); + enet_peer_send(event.peer,1,packet); + //send the new peer to existing peers + packet = enet_packet_create (NULL,8,ENET_PACKET_FLAG_RELIABLE); + encode_uint32(SYSMSG_ADD_PEER,&packet->data[0]); + encode_uint32(*new_id,&packet->data[4]); + enet_peer_send(E->get(),1,packet); + } + } else { + + emit_signal("connection_succeeded"); + } + } break; case ENET_EVENT_TYPE_DISCONNECT: { /* Reset the peer's client information. */ - StringName *id = (StringName*)event.peer -> data; + int *id = (int*)event.peer -> data; + + + + if (!id) { + if (!server) { + emit_signal("connection_failed"); + } + } else { + + if (server) { + //someone disconnected, let it know to everyone else + for (Map<int,ENetPeer*>::Element *E=peer_map.front();E;E=E->next()) { + + if (E->key()==*id) + continue; + //send the new peer to existing peers + ENetPacket* packet = enet_packet_create (NULL,8,ENET_PACKET_FLAG_RELIABLE); + encode_uint32(SYSMSG_REMOVE_PEER,&packet->data[0]); + encode_uint32(*id,&packet->data[4]); + enet_peer_send(E->get(),1,packet); + } + } else if (!server) { + emit_signal("server_disconnected"); + close_connection(); + return; + } + + emit_signal("peer_disconnected",*id); + peer_map.erase(*id); + memdelete( id ); + + } - emit_signal("peer_disconnected",*id); - peer_map.erase(*id); - memdelete( id ); } break; case ENET_EVENT_TYPE_RECEIVE: { - Packet packet; - packet.packet = event.packet; - StringName *id = (StringName*)event.peer -> data; - packet.from_channel=event.channelID; - packet.from=*id; + if (event.channelID==1) { + //some config message + ERR_CONTINUE( event.packet->dataLength < 8); + + int msg = decode_uint32(&event.packet->data[0]); + int id = decode_uint32(&event.packet->data[4]); + + switch(msg) { + case SYSMSG_ADD_PEER: { + + peer_map[id]=NULL; + emit_signal("peer_connected",id); + + } break; + case SYSMSG_REMOVE_PEER: { + + peer_map.erase(id); + emit_signal("peer_disconnected",id); + } break; + } + + enet_packet_destroy(event.packet); + } else if (event.channelID==0){ + + Packet packet; + packet.packet = event.packet; + + int *id = (int*)event.peer -> data; + + ERR_CONTINUE(event.packet->dataLength<12) + + + uint32_t source = decode_uint32(&event.packet->data[0]); + int target = decode_uint32(&event.packet->data[4]); + uint32_t flags = decode_uint32(&event.packet->data[8]); + + packet.from=source; + + if (server) { + + packet.from=*id; + + if (target==0) { + //re-send the everyone but sender :| + + incoming_packets.push_back(packet); + //and make copies for sending + for (Map<int,ENetPeer*>::Element *E=peer_map.front();E;E=E->next()) { + + if (uint32_t(E->key())==source) //do not resend to self + continue; + + ENetPacket* packet2 = enet_packet_create (packet.packet->data,packet.packet->dataLength,flags); + + enet_peer_send(E->get(),0,packet2); + } + + } else if (target<0) { + //to all but one + + //and make copies for sending + for (Map<int,ENetPeer*>::Element *E=peer_map.front();E;E=E->next()) { + + if (uint32_t(E->key())==source || E->key()==-target) //do not resend to self, also do not send to excluded + continue; + + ENetPacket* packet2 = enet_packet_create (packet.packet->data,packet.packet->dataLength,flags); + + enet_peer_send(E->get(),0,packet2); + } + + if (-target != 1) { + //server is not excluded + incoming_packets.push_back(packet); + } else { + //server is excluded, erase packet + enet_packet_destroy(packet.packet); + } + + } else if (target==1) { + //to myself and only myself + incoming_packets.push_back(packet); + } else { + //to someone else, specifically + ERR_CONTINUE(!peer_map.has(target)); + enet_peer_send(peer_map[target],0,packet.packet); + } + } else { + + incoming_packets.push_back(packet); + } + + + //destroy packet later.. + } else { + ERR_CONTINUE(true); + } - incoming_packets.push_back(packet); - //destroy packet later.. }break; case ENET_EVENT_TYPE_NONE: { @@ -154,14 +319,29 @@ bool NetworkedMultiplayerENet::is_server() const { void NetworkedMultiplayerENet::close_connection() { - ERR_FAIL_COND(!active); + if (!active) + return; _pop_current_packet(); + bool peers_disconnected=false; + for (Map<int,ENetPeer*>::Element *E=peer_map.front();E;E=E->next()) { + if (E->get()) { + enet_peer_disconnect_now(E->get(),unique_id); + peers_disconnected=true; + } + } + + if (peers_disconnected) { + enet_host_flush(host); + OS::get_singleton()->delay_usec(100); //wait 100ms for disconnection packets to send + + } + enet_host_destroy(host); active=false; incoming_packets.clear(); - + unique_id=1; //server is 1 connection_status=CONNECTION_DISCONNECTED; } @@ -178,45 +358,77 @@ Error NetworkedMultiplayerENet::get_packet(const uint8_t **r_buffer,int &r_buffe current_packet = incoming_packets.front()->get(); incoming_packets.pop_front(); - r_buffer=(const uint8_t**)¤t_packet.packet->data; + *r_buffer=(const uint8_t*)(¤t_packet.packet->data[12]); r_buffer_size=current_packet.packet->dataLength; return OK; } Error NetworkedMultiplayerENet::put_packet(const uint8_t *p_buffer,int p_buffer_size){ - ERR_FAIL_COND_V(incoming_packets.size()==0,ERR_UNAVAILABLE); - - Map<StringName,ENetPeer*>::Element *E=NULL; - - if (target_peer!=StringName()) { - peer_map.find(target_peer); - if (!E) { - ERR_EXPLAIN("Invalid Target Peer: "+String(target_peer)); - ERR_FAIL_V(ERR_INVALID_PARAMETER); - } - } + ERR_FAIL_COND_V(!active,ERR_UNCONFIGURED); + ERR_FAIL_COND_V(connection_status!=CONNECTION_CONNECTED,ERR_UNCONFIGURED); int packet_flags=0; + switch(transfer_mode) { case TRANSFER_MODE_UNRELIABLE: { packet_flags=ENET_PACKET_FLAG_UNSEQUENCED; } break; - case TRANSFER_MODE_RELIABLE: { - packet_flags=ENET_PACKET_FLAG_RELIABLE; + case TRANSFER_MODE_UNRELIABLE_ORDERED: { + packet_flags=0; } break; - case TRANSFER_MODE_ORDERED: { + case TRANSFER_MODE_RELIABLE: { packet_flags=ENET_PACKET_FLAG_RELIABLE; } break; } - /* Create a reliable packet of size 7 containing "packet\0" */ - ENetPacket * packet = enet_packet_create (p_buffer,p_buffer_size,packet_flags); + Map<int,ENetPeer*>::Element *E=NULL; + + if (target_peer!=0) { + + E = peer_map.find(ABS(target_peer)); + if (!E) { + ERR_EXPLAIN("Invalid Target Peer: "+itos(target_peer)); + ERR_FAIL_V(ERR_INVALID_PARAMETER); + } + } + + ENetPacket * packet = enet_packet_create (NULL,p_buffer_size+12,packet_flags); + encode_uint32(unique_id,&packet->data[0]); //source ID + encode_uint32(target_peer,&packet->data[4]); //dest ID + encode_uint32(packet_flags,&packet->data[8]); //dest ID + copymem(&packet->data[12],p_buffer,p_buffer_size); + + if (server) { - if (target_peer==StringName()) { - enet_host_broadcast(host,send_channel,packet); + if (target_peer==0) { + enet_host_broadcast(host,0,packet); + } else if (target_peer<0) { + //send to all but one + //and make copies for sending + + int exclude=-target_peer; + + for (Map<int,ENetPeer*>::Element *F=peer_map.front();F;F=F->next()) { + + if (F->key()==exclude) // exclude packet + continue; + + ENetPacket* packet2 = enet_packet_create (packet->data,packet->dataLength,packet_flags); + + enet_peer_send(F->get(),0,packet2); + } + + enet_packet_destroy(packet); //original packet no longer needed + } else { + enet_peer_send (E->get(), 0, packet); + + } } else { - enet_peer_send (E->get(), send_channel, packet); + + ERR_FAIL_COND_V(!peer_map.has(1),ERR_BUG); + enet_peer_send (peer_map[1], 0, packet); //send to server for broadcast.. + } enet_host_flush(host); @@ -234,7 +446,7 @@ void NetworkedMultiplayerENet::_pop_current_packet() const { if (current_packet.packet) { enet_packet_destroy(current_packet.packet); current_packet.packet=NULL; - current_packet.from=StringName(); + current_packet.from=0; } } @@ -244,12 +456,166 @@ NetworkedMultiplayerPeer::ConnectionStatus NetworkedMultiplayerENet::get_connect return connection_status; } -void NetworkedMultiplayerENet::_bind_methods() { +uint32_t NetworkedMultiplayerENet::_gen_unique_id() const { + + uint32_t hash = 0; + + while (hash==0 || hash==1) { + + hash = hash_djb2_one_32( + (uint32_t)OS::get_singleton()->get_ticks_usec() ); + hash = hash_djb2_one_32( + (uint32_t)OS::get_singleton()->get_unix_time(), hash ); + hash = hash_djb2_one_32( + (uint32_t)OS::get_singleton()->get_data_dir().hash64(), hash ); + //hash = hash_djb2_one_32( + // (uint32_t)OS::get_singleton()->get_unique_ID().hash64(), hash ); + hash = hash_djb2_one_32( + (uint32_t)((uint64_t)this), hash ); //rely on aslr heap + hash = hash_djb2_one_32( + (uint32_t)((uint64_t)&hash), hash ); //rely on aslr stack + + hash=hash&0x7FFFFFFF; // make it compatible with unsigned, since negatie id is used for exclusion + } + + return hash; +} + +int NetworkedMultiplayerENet::get_unique_id() const { + + ERR_FAIL_COND_V(!active,0); + return unique_id; +} + +void NetworkedMultiplayerENet::set_refuse_new_connections(bool p_enable) { + + refuse_connections=p_enable; +} - ObjectTypeDB::bind_method(_MD("create_server","port","max_clients","max_channels","in_bandwidth","out_bandwidth"),&NetworkedMultiplayerENet::create_server,DEFVAL(32),DEFVAL(1),DEFVAL(0),DEFVAL(0)); - ObjectTypeDB::bind_method(_MD("create_client","ip","port","max_channels","in_bandwidth","out_bandwidth"),&NetworkedMultiplayerENet::create_client,DEFVAL(1),DEFVAL(0),DEFVAL(0)); - ObjectTypeDB::bind_method(_MD("disconnect"),&NetworkedMultiplayerENet::disconnect); +bool NetworkedMultiplayerENet::is_refusing_new_connections() const { + return refuse_connections; +} + +void NetworkedMultiplayerENet::set_compression_mode(CompressionMode p_mode) { + + compression_mode=p_mode; +} + +NetworkedMultiplayerENet::CompressionMode NetworkedMultiplayerENet::get_compression_mode() const{ + + return compression_mode; +} + +size_t NetworkedMultiplayerENet::enet_compress(void * context, const ENetBuffer * inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 * outData, size_t outLimit) { + + NetworkedMultiplayerENet *enet = (NetworkedMultiplayerENet*)(context); + + if (size_t(enet->src_compressor_mem.size())<inLimit) { + enet->src_compressor_mem.resize( inLimit ); + } + + int total = inLimit; + int ofs=0; + while(total) { + for(size_t i=0;i<inBufferCount;i++) { + int to_copy = MIN(total,int(inBuffers[i].dataLength)); + copymem(&enet->src_compressor_mem[ofs],inBuffers[i].data,to_copy); + ofs+=to_copy; + total-=to_copy; + } + } + + Compression::Mode mode; + + switch(enet->compression_mode) { + case COMPRESS_FASTLZ: { + mode=Compression::MODE_FASTLZ; + } break; + case COMPRESS_ZLIB: { + mode=Compression::MODE_DEFLATE; + } break; + default: { ERR_FAIL_V(0); } + } + + int req_size = Compression::get_max_compressed_buffer_size(ofs,mode); + if (enet->dst_compressor_mem.size()<req_size) { + enet->dst_compressor_mem.resize(req_size); + } + int ret=Compression::compress(enet->dst_compressor_mem.ptr(),enet->src_compressor_mem.ptr(),ofs,mode); + + if (ret<0) + return 0; + + + if (ret>int(outLimit)) + return 0; //do not bother + + copymem(outData,enet->dst_compressor_mem.ptr(),ret); + + return ret; +} + +size_t NetworkedMultiplayerENet::enet_decompress (void * context, const enet_uint8 * inData, size_t inLimit, enet_uint8 * outData, size_t outLimit){ + + NetworkedMultiplayerENet *enet = (NetworkedMultiplayerENet*)(context); + int ret = -1; + switch(enet->compression_mode) { + case COMPRESS_FASTLZ: { + + ret=Compression::decompress(outData,outLimit,inData,inLimit,Compression::MODE_FASTLZ); + } break; + case COMPRESS_ZLIB: { + + ret=Compression::decompress(outData,outLimit,inData,inLimit,Compression::MODE_DEFLATE); + } break; + default: {} + } + if (ret<0) { + return 0; + } else { + return ret; + } +} + +void NetworkedMultiplayerENet::_setup_compressor() { + + switch(compression_mode) { + + case COMPRESS_NONE: { + + enet_host_compress(host,NULL); + } break; + case COMPRESS_RANGE_CODER: { + enet_host_compress_with_range_coder(host); + } break; + case COMPRESS_FASTLZ: + case COMPRESS_ZLIB: { + + enet_host_compress(host,&enet_compressor); + } break; + } +} + +void NetworkedMultiplayerENet::enet_compressor_destroy(void * context){ + + //do none +} + + +void NetworkedMultiplayerENet::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("create_server","port","max_clients","in_bandwidth","out_bandwidth"),&NetworkedMultiplayerENet::create_server,DEFVAL(32),DEFVAL(0),DEFVAL(0)); + ObjectTypeDB::bind_method(_MD("create_client","ip","port","in_bandwidth","out_bandwidth"),&NetworkedMultiplayerENet::create_client,DEFVAL(0),DEFVAL(0)); + ObjectTypeDB::bind_method(_MD("close_connection"),&NetworkedMultiplayerENet::close_connection); + ObjectTypeDB::bind_method(_MD("set_compression_mode","mode"),&NetworkedMultiplayerENet::set_compression_mode); + ObjectTypeDB::bind_method(_MD("get_compression_mode"),&NetworkedMultiplayerENet::get_compression_mode); + ObjectTypeDB::bind_method(_MD("set_bind_ip", "ip"),&NetworkedMultiplayerENet::set_bind_ip); + + BIND_CONSTANT( COMPRESS_NONE ); + BIND_CONSTANT( COMPRESS_RANGE_CODER ); + BIND_CONSTANT( COMPRESS_FASTLZ ); + BIND_CONSTANT( COMPRESS_ZLIB ); } @@ -257,15 +623,28 @@ NetworkedMultiplayerENet::NetworkedMultiplayerENet(){ active=false; server=false; - send_channel=0; + refuse_connections=false; + unique_id=0; + target_peer=0; current_packet.packet=NULL; - transfer_mode=TRANSFER_MODE_ORDERED; + transfer_mode=TRANSFER_MODE_RELIABLE; connection_status=CONNECTION_DISCONNECTED; + compression_mode=COMPRESS_NONE; + enet_compressor.context=this; + enet_compressor.compress=enet_compress; + enet_compressor.decompress=enet_decompress; + enet_compressor.destroy=enet_compressor_destroy; + + bind_ip=ENET_HOST_ANY; } NetworkedMultiplayerENet::~NetworkedMultiplayerENet(){ - if (active) { - close_connection(); - } + close_connection(); +} + +// sets IP for ENet to bind when using create_server +// if no IP is set, then ENet bind to ENET_HOST_ANY +void NetworkedMultiplayerENet::set_bind_ip(const IP_Address& p_ip){ + bind_ip=p_ip.host; } diff --git a/modules/enet/networked_multiplayer_enet.h b/modules/enet/networked_multiplayer_enet.h index ec6b084d66..59863c1f78 100644 --- a/modules/enet/networked_multiplayer_enet.h +++ b/modules/enet/networked_multiplayer_enet.h @@ -3,54 +3,82 @@ #include "io/networked_multiplayer_peer.h" #include "enet/enet.h" +#include "io/compression.h" class NetworkedMultiplayerENet : public NetworkedMultiplayerPeer { OBJ_TYPE(NetworkedMultiplayerENet,NetworkedMultiplayerPeer) +public: + enum CompressionMode { + COMPRESS_NONE, + COMPRESS_RANGE_CODER, + COMPRESS_FASTLZ, + COMPRESS_ZLIB + }; +private: + + + enum { + SYSMSG_ADD_PEER, + SYSMSG_REMOVE_PEER + }; bool active; bool server; - int send_channel; - StringName target_peer; + uint32_t unique_id; + + int target_peer; TransferMode transfer_mode; ENetEvent event; ENetPeer *peer; ENetHost *host; + bool refuse_connections; + ConnectionStatus connection_status; - Map<StringName,ENetPeer*> peer_map; + Map<int,ENetPeer*> peer_map; struct Packet { ENetPacket *packet; - int from_channel; - StringName from; + int from; }; + CompressionMode compression_mode; + mutable List<Packet> incoming_packets; mutable Packet current_packet; + uint32_t _gen_unique_id() const; void _pop_current_packet() const; + Vector<uint8_t> src_compressor_mem; + Vector<uint8_t> dst_compressor_mem; + + ENetCompressor enet_compressor; + static size_t enet_compress(void * context, const ENetBuffer * inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 * outData, size_t outLimit); + static size_t enet_decompress (void * context, const enet_uint8 * inData, size_t inLimit, enet_uint8 * outData, size_t outLimit); + static void enet_compressor_destroy(void * context); + void _setup_compressor(); + + enet_uint32 bind_ip; protected: static void _bind_methods(); public: virtual void set_transfer_mode(TransferMode p_mode); - virtual void set_target_peer(const StringName& p_peer); - virtual void set_channel(int p_channel); + virtual void set_target_peer(int p_peer); - virtual StringName get_packet_peer() const; - virtual int get_packet_channel() const; + virtual int get_packet_peer() const; - Error create_server(int p_port, int p_max_clients=32, int p_max_channels=1, int p_in_bandwidth=0, int p_out_bandwidth=0); - Error create_client(const IP_Address& p_ip,int p_port, int p_max_channels=1, int p_in_bandwidth=0, int p_out_bandwidth=0); + Error create_server(int p_port, int p_max_peers=32, int p_in_bandwidth=0, int p_out_bandwidth=0); + Error create_client(const IP_Address& p_ip, int p_port, int p_in_bandwidth=0, int p_out_bandwidth=0); void close_connection(); @@ -66,9 +94,21 @@ public: virtual ConnectionStatus get_connection_status() const; + virtual void set_refuse_new_connections(bool p_enable); + virtual bool is_refusing_new_connections() const; + + virtual int get_unique_id() const; + + void set_compression_mode(CompressionMode p_mode); + CompressionMode get_compression_mode() const; + NetworkedMultiplayerENet(); ~NetworkedMultiplayerENet(); + + void set_bind_ip(const IP_Address& p_ip); }; +VARIANT_ENUM_CAST(NetworkedMultiplayerENet::CompressionMode); + #endif // NETWORKED_MULTIPLAYER_ENET_H diff --git a/modules/enet/protocol.c b/modules/enet/protocol.c index 29d648732d..4a2a4ed185 100644 --- a/modules/enet/protocol.c +++ b/modules/enet/protocol.c @@ -9,6 +9,7 @@ #include "enet/time.h" #include "enet/enet.h" + static size_t commandSizes [ENET_PROTOCOL_COMMAND_COUNT] = { 0, @@ -1691,7 +1692,7 @@ enet_protocol_send_outgoing_commands (ENetHost * host, ENetEvent * event, int ch & host -> buffers [1], host -> bufferCount - 1, originalSize, host -> packetData [1], - originalSize); + originalSize); if (compressedSize > 0 && compressedSize < originalSize) { host -> headerFlags |= ENET_PROTOCOL_HEADER_FLAG_COMPRESSED; diff --git a/modules/enet/register_types.cpp b/modules/enet/register_types.cpp index f80b82a412..630b76ced8 100644 --- a/modules/enet/register_types.cpp +++ b/modules/enet/register_types.cpp @@ -27,7 +27,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "register_types.h" -#include "enet/enet.h" #include "error_macros.h" #include "networked_multiplayer_enet.h" diff --git a/modules/enet/win32.c b/modules/enet/win32.c index 5cc167997c..d77fa9a49a 100644 --- a/modules/enet/win32.c +++ b/modules/enet/win32.c @@ -4,7 +4,7 @@ */ #ifdef _WIN32 -#define ENET_BUILDING_LIB 1 +#define ENET_BUILDING_LIB 0 #include "enet/enet.h" #include <windows.h> #include <mmsystem.h> diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp index 68c3dc98d3..ce8b6a6ea4 100644 --- a/modules/gdscript/gd_compiler.cpp +++ b/modules/gdscript/gd_compiler.cpp @@ -1297,8 +1297,10 @@ Error GDCompiler::_parse_function(GDScript *p_script,const GDParser::ClassNode * gdfunc = p_script->member_functions[func_name]; //} - if (p_func) + if (p_func) { gdfunc->_static=p_func->_static; + gdfunc->rpc_mode=p_func->rpc_mode; + } #ifdef TOOLS_ENABLED gdfunc->arg_names=argnames; @@ -1625,6 +1627,8 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa minfo.index = p_script->member_indices.size(); minfo.setter = p_class->variables[i].setter; minfo.getter = p_class->variables[i].getter; + minfo.rpc_mode=p_class->variables[i].rpc_mode; + p_script->member_indices[name]=minfo; p_script->members.insert(name); diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp index 2e5fb82f37..2a80531ec5 100644 --- a/modules/gdscript/gd_editor.cpp +++ b/modules/gdscript/gd_editor.cpp @@ -47,16 +47,14 @@ void GDScriptLanguage::get_string_delimiters(List<String> *p_delimiters) const { Ref<Script> GDScriptLanguage::get_template(const String& p_class_name, const String& p_base_class_name) const { String _template = String()+ - "\nextends %BASE%\n\n"+ - "# member variables here, example:\n"+ - "# var a=2\n"+ - "# var b=\"textvar\"\n\n"+ + "extends %BASE%\n\n"+ + "# class member variables go here, for example:\n"+ + "# var a = 2\n"+ + "# var b = \"textvar\"\n\n"+ "func _ready():\n"+ "\t# Called every time the node is added to the scene.\n"+ "\t# Initialization here\n"+ - "\tpass\n"+ - "\n"+ - "\n"; + "\tpass\n"; _template = _template.replace("%BASE%",p_base_class_name); @@ -1463,7 +1461,7 @@ static void _make_function_hint(const GDParser::FunctionNode* p_func,int p_argid } -static void _find_type_arguments(const GDParser::Node*p_node,int p_line,const StringName& p_method,const GDCompletionIdentifier& id, int p_argidx, Set<String>& result, String& arghint) { +static void _find_type_arguments(GDCompletionContext& context,const GDParser::Node*p_node,int p_line,const StringName& p_method,const GDCompletionIdentifier& id, int p_argidx, Set<String>& result, String& arghint) { //print_line("find type arguments?"); @@ -1700,9 +1698,31 @@ static void _find_type_arguments(const GDParser::Node*p_node,int p_line,const St if (p_argidx==0) { List<MethodInfo> sigs; ObjectTypeDB::get_signal_list(id.obj_type,&sigs); + + if (id.script.is_valid()) { + id.script->get_script_signal_list(&sigs); + } else if (id.value.get_type()==Variant::OBJECT) { + Object *obj = id.value; + if (obj && !obj->get_script().is_null()) { + Ref<Script> scr=obj->get_script(); + if (scr.is_valid()) { + scr->get_script_signal_list(&sigs); + } + } + } + for (List<MethodInfo>::Element *E=sigs.front();E;E=E->next()) { result.insert("\""+E->get().name+"\""); } + + } else if (p_argidx==2){ + + + if (context._class) { + for(int i=0;i<context._class->functions.size();i++) { + result.insert("\""+context._class->functions[i]->name+"\""); + } + } } /*if (p_argidx==2) { @@ -1944,7 +1964,7 @@ static void _find_call_arguments(GDCompletionContext& context,const GDParser::No if (!context._class->owner) ci.value=context.base; - _find_type_arguments(p_node,p_line,id->name,ci,p_argidx,result,arghint); + _find_type_arguments(context,p_node,p_line,id->name,ci,p_argidx,result,arghint); //guess type.. /* List<MethodInfo> methods; @@ -1967,7 +1987,7 @@ static void _find_call_arguments(GDCompletionContext& context,const GDParser::No GDCompletionIdentifier ci; if (_guess_expression_type(context,op->arguments[0],p_line,ci)) { - _find_type_arguments(p_node,p_line,id->name,ci,p_argidx,result,arghint); + _find_type_arguments(context,p_node,p_line,id->name,ci,p_argidx,result,arghint); return; } diff --git a/modules/gdscript/gd_function.cpp b/modules/gdscript/gd_function.cpp index 47d8f0b40f..094e21bb4f 100644 --- a/modules/gdscript/gd_function.cpp +++ b/modules/gdscript/gd_function.cpp @@ -1309,6 +1309,7 @@ GDFunction::GDFunction() : function_list(this) { _stack_size=0; _call_size=0; + rpc_mode=ScriptInstance::RPC_MODE_DISABLED; name="<anonymous>"; #ifdef DEBUG_ENABLED _func_cname=NULL; @@ -1436,7 +1437,7 @@ void GDFunctionState::_bind_methods() { ObjectTypeDB::bind_method(_MD("resume:Variant","arg"),&GDFunctionState::resume,DEFVAL(Variant())); ObjectTypeDB::bind_method(_MD("is_valid"),&GDFunctionState::is_valid); - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"_signal_callback",&GDFunctionState::_signal_callback,MethodInfo("_signal_callback")); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"_signal_callback",&GDFunctionState::_signal_callback,MethodInfo("_signal_callback")); } diff --git a/modules/gdscript/gd_function.h b/modules/gdscript/gd_function.h index e09c6509dd..f1c5b13ca1 100644 --- a/modules/gdscript/gd_function.h +++ b/modules/gdscript/gd_function.h @@ -7,6 +7,7 @@ #include "variant.h" #include "string_db.h" #include "reference.h" +#include "script_language.h" class GDInstance; class GDScript; @@ -64,6 +65,14 @@ public: ADDR_TYPE_NIL=8 }; + enum RPCMode { + RPC_DISABLED, + RPC_ENABLED, + RPC_SYNC, + RPC_SYNC_MASTER, + RPC_SYNC_SLAVE + }; + struct StackDebug { int line; @@ -91,6 +100,8 @@ friend class GDCompiler; int _call_size; int _initial_line; bool _static; + ScriptInstance::RPCMode rpc_mode; + GDScript *_script; StringName name; @@ -185,6 +196,7 @@ public: Variant call(GDInstance *p_instance,const Variant **p_args, int p_argcount,Variant::CallError& r_err,CallState *p_state=NULL); + _FORCE_INLINE_ ScriptInstance::RPCMode get_rpc_mode() const { return rpc_mode; } GDFunction(); ~GDFunction(); }; diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index a6794564db..e5a8dc0152 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -2075,6 +2075,7 @@ void GDParser::_parse_class(ClassNode *p_class) { if (error_set) return; + if (indent_level>tab_level.back()->get()) { p_class->end_line=tokenizer->get_token_line(); return; //go back a level @@ -2371,6 +2372,9 @@ void GDParser::_parse_class(ClassNode *p_class) { function->_static=_static; function->line=fnline; + function->rpc_mode=rpc_mode; + rpc_mode=ScriptInstance::RPC_MODE_DISABLED; + if (_static) p_class->static_functions.push_back(function); @@ -2842,25 +2846,101 @@ void GDParser::_parse_class(ClassNode *p_class) { } - if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR) { + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR && tokenizer->get_token()!=GDTokenizer::TK_PR_ONREADY && tokenizer->get_token()!=GDTokenizer::TK_PR_REMOTE && tokenizer->get_token()!=GDTokenizer::TK_PR_MASTER && tokenizer->get_token()!=GDTokenizer::TK_PR_SLAVE && tokenizer->get_token()!=GDTokenizer::TK_PR_SYNC) { current_export=PropertyInfo(); - _set_error("Expected 'var'."); + _set_error("Expected 'var', 'onready', 'remote', 'master', 'slave' or 'sync'."); return; } - }; //fallthrough to var + continue; + } break; case GDTokenizer::TK_PR_ONREADY: { - if (token==GDTokenizer::TK_PR_ONREADY) { - //may be fallthrough from export, ignore if so - tokenizer->advance(); + //may be fallthrough from export, ignore if so + tokenizer->advance(); + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR) { + _set_error("Expected 'var'."); + return; + } + + continue; + } break; + case GDTokenizer::TK_PR_REMOTE: { + + //may be fallthrough from export, ignore if so + tokenizer->advance(); + if (current_export.type) { if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR) { _set_error("Expected 'var'."); return; } + + } else { + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR && tokenizer->get_token()!=GDTokenizer::TK_PR_FUNCTION) { + _set_error("Expected 'var' or 'func'."); + return; + } } - }; //fallthrough to var + rpc_mode=ScriptInstance::RPC_MODE_REMOTE; + + continue; + } break; + case GDTokenizer::TK_PR_MASTER: { + + //may be fallthrough from export, ignore if so + tokenizer->advance(); + if (current_export.type) { + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR) { + _set_error("Expected 'var'."); + return; + } + + } else { + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR && tokenizer->get_token()!=GDTokenizer::TK_PR_FUNCTION) { + _set_error("Expected 'var' or 'func'."); + return; + } + } + + rpc_mode=ScriptInstance::RPC_MODE_MASTER; + continue; + } break; + case GDTokenizer::TK_PR_SLAVE: { + + //may be fallthrough from export, ignore if so + tokenizer->advance(); + if (current_export.type) { + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR) { + _set_error("Expected 'var'."); + return; + } + + } else { + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR && tokenizer->get_token()!=GDTokenizer::TK_PR_FUNCTION) { + _set_error("Expected 'var' or 'func'."); + return; + } + } + + rpc_mode=ScriptInstance::RPC_MODE_SLAVE; + continue; + } break; + case GDTokenizer::TK_PR_SYNC: { + + //may be fallthrough from export, ignore if so + tokenizer->advance(); + if (tokenizer->get_token()!=GDTokenizer::TK_PR_VAR && tokenizer->get_token()!=GDTokenizer::TK_PR_FUNCTION) { + if (current_export.type) + _set_error("Expected 'var'."); + else + _set_error("Expected 'var' or 'func'."); + return; + } + + rpc_mode=ScriptInstance::RPC_MODE_SYNC; + continue; + } break; case GDTokenizer::TK_PR_VAR: { //variale declaration and (eventual) initialization @@ -2884,8 +2964,12 @@ void GDParser::_parse_class(ClassNode *p_class) { member.expression=NULL; member._export.name=member.identifier; member.line=tokenizer->get_token_line(); + member.rpc_mode=rpc_mode; + tokenizer->advance(); + rpc_mode=ScriptInstance::RPC_MODE_DISABLED; + if (tokenizer->get_token()==GDTokenizer::TK_OP_ASSIGN) { #ifdef DEBUG_ENABLED @@ -3228,6 +3312,7 @@ void GDParser::clear() { current_class=NULL; completion_found=false; + rpc_mode=ScriptInstance::RPC_MODE_DISABLED; current_function=NULL; diff --git a/modules/gdscript/gd_parser.h b/modules/gdscript/gd_parser.h index 2d6b52c473..9e6f6e6765 100644 --- a/modules/gdscript/gd_parser.h +++ b/modules/gdscript/gd_parser.h @@ -33,6 +33,7 @@ #include "gd_functions.h" #include "map.h" #include "object.h" +#include "script_language.h" class GDParser { public: @@ -88,6 +89,7 @@ public: StringName getter; int line; Node *expression; + ScriptInstance::RPCMode rpc_mode; }; struct Constant { StringName identifier; @@ -119,12 +121,13 @@ public: struct FunctionNode : public Node { bool _static; + ScriptInstance::RPCMode rpc_mode; StringName name; Vector<StringName> arguments; Vector<Node*> default_values; BlockNode *body; - FunctionNode() { type=TYPE_FUNCTION; _static=false; } + FunctionNode() { type=TYPE_FUNCTION; _static=false; rpc_mode=ScriptInstance::RPC_MODE_DISABLED; } }; @@ -429,6 +432,9 @@ private: PropertyInfo current_export; + ScriptInstance::RPCMode rpc_mode; + + void _set_error(const String& p_error, int p_line=-1, int p_column=-1); bool _recover_from_completion(); diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp index 2b8d6e86e2..0ea10950df 100644 --- a/modules/gdscript/gd_script.cpp +++ b/modules/gdscript/gd_script.cpp @@ -179,6 +179,15 @@ bool GDScript::can_instance() const { } +Ref<Script> GDScript::get_base_script() const { + + if (_base) { + return Ref<GDScript>( _base ); + } else { + return Ref<Script>(); + } +} + StringName GDScript::get_instance_base_type() const { if (native.is_valid()) @@ -250,7 +259,7 @@ void GDScript::_update_placeholder(PlaceHolderScriptInstance *p_placeholder) { #endif -void GDScript::get_method_list(List<MethodInfo> *p_list) const { +void GDScript::get_script_method_list(List<MethodInfo> *p_list) const { for (const Map<StringName,GDFunction*>::Element *E=member_functions.front();E;E=E->next()) { MethodInfo mi; @@ -267,6 +276,41 @@ void GDScript::get_method_list(List<MethodInfo> *p_list) const { } } +void GDScript::get_script_property_list(List<PropertyInfo> *p_list) const { + + const GDScript *sptr=this; + List<PropertyInfo> props; + + while(sptr) { + + Vector<_GDScriptMemberSort> msort; + for(Map<StringName,PropertyInfo>::Element *E=sptr->member_info.front();E;E=E->next()) { + + _GDScriptMemberSort ms; + ERR_CONTINUE(!sptr->member_indices.has(E->key())); + ms.index=sptr->member_indices[E->key()].index; + ms.name=E->key(); + msort.push_back(ms); + + } + + msort.sort(); + msort.invert(); + for(int i=0;i<msort.size();i++) { + + props.push_front(sptr->member_info[msort[i].name]); + + } + + sptr = sptr->_base; + } + + for (List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { + p_list->push_back(E->get()); + } + +} + bool GDScript::has_method(const StringName& p_method) const { return member_functions.has(p_method); @@ -707,7 +751,7 @@ void GDScript::_get_property_list(List<PropertyInfo> *p_properties) const { void GDScript::_bind_methods() { - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"new",&GDScript::_new,MethodInfo(Variant::OBJECT,"new")); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"new",&GDScript::_new,MethodInfo(Variant::OBJECT,"new")); ObjectTypeDB::bind_method(_MD("get_as_byte_code"),&GDScript::get_as_byte_code); @@ -1300,6 +1344,46 @@ ScriptLanguage *GDInstance::get_language() { return GDScriptLanguage::get_singleton(); } +GDInstance::RPCMode GDInstance::get_rpc_mode(const StringName& p_method) const { + + const GDScript *cscript = script.ptr(); + + while(cscript) { + const Map<StringName,GDFunction*>::Element *E=cscript->member_functions.find(p_method); + if (E) { + + if (E->get()->get_rpc_mode()!=RPC_MODE_DISABLED) { + return E->get()->get_rpc_mode(); + } + + } + cscript=cscript->_base; + } + + return RPC_MODE_DISABLED; +} + +GDInstance::RPCMode GDInstance::get_rset_mode(const StringName& p_variable) const { + + const GDScript *cscript = script.ptr(); + + while(cscript) { + const Map<StringName,GDScript::MemberInfo>::Element *E=cscript->member_indices.find(p_variable); + if (E) { + + if (E->get().rpc_mode) { + return E->get().rpc_mode; + } + + } + cscript=cscript->_base; + } + + return RPC_MODE_DISABLED; +} + + + void GDInstance::reload_members() { #ifdef DEBUG_ENABLED @@ -1811,6 +1895,10 @@ void GDScriptLanguage::get_reserved_words(List<String> *p_words) const { "pass", "return", "while", + "remote", + "sync", + "master", + "slave", 0}; diff --git a/modules/gdscript/gd_script.h b/modules/gdscript/gd_script.h index 28a0df1efd..0c3e1eb614 100644 --- a/modules/gdscript/gd_script.h +++ b/modules/gdscript/gd_script.h @@ -64,6 +64,7 @@ class GDScript : public Script { int index; StringName setter; StringName getter; + ScriptInstance::RPCMode rpc_mode; }; friend class GDInstance; @@ -161,6 +162,8 @@ public: Variant _new(const Variant** p_args,int p_argcount,Variant::CallError& r_error); virtual bool can_instance() const; + virtual Ref<Script> get_base_script() const; + virtual StringName get_instance_base_type() const; // this may not work in all scripts, will return empty if so virtual ScriptInstance* instance_create(Object *p_this); virtual bool instance_has(const Object *p_this) const; @@ -181,10 +184,13 @@ public: bool get_property_default_value(const StringName& p_property,Variant& r_value) const; - virtual void get_method_list(List<MethodInfo> *p_list) const; + virtual void get_script_method_list(List<MethodInfo> *p_list) const; virtual bool has_method(const StringName& p_method) const; virtual MethodInfo get_method_info(const StringName& p_method) const; + virtual void get_script_property_list(List<PropertyInfo> *p_list) const; + + virtual ScriptLanguage *get_language() const; GDScript(); @@ -236,6 +242,10 @@ public: void reload_members(); + virtual RPCMode get_rpc_mode(const StringName& p_method) const; + virtual RPCMode get_rset_mode(const StringName& p_variable) const; + + GDInstance(); ~GDInstance(); @@ -250,23 +260,23 @@ class GDScriptLanguage : public ScriptLanguage { Map<StringName,int> globals; - struct CallLevel { + struct CallLevel { - Variant *stack; - GDFunction *function; - GDInstance *instance; - int *ip; - int *line; + Variant *stack; + GDFunction *function; + GDInstance *instance; + int *ip; + int *line; - }; + }; - int _debug_parse_err_line; - String _debug_parse_err_file; - String _debug_error; - int _debug_call_stack_pos; - int _debug_max_call_stack; - CallLevel *_call_stack; + int _debug_parse_err_line; + String _debug_parse_err_file; + String _debug_error; + int _debug_call_stack_pos; + int _debug_max_call_stack; + CallLevel *_call_stack; void _add_global(const StringName& p_name,const Variant& p_value); @@ -288,54 +298,54 @@ public: int calls; - bool debug_break(const String& p_error,bool p_allow_continue=true); - bool debug_break_parse(const String& p_file, int p_line,const String& p_error); + bool debug_break(const String& p_error,bool p_allow_continue=true); + bool debug_break_parse(const String& p_file, int p_line,const String& p_error); - _FORCE_INLINE_ void enter_function(GDInstance *p_instance,GDFunction *p_function, Variant *p_stack, int *p_ip, int *p_line) { + _FORCE_INLINE_ void enter_function(GDInstance *p_instance,GDFunction *p_function, Variant *p_stack, int *p_ip, int *p_line) { - if (Thread::get_main_ID()!=Thread::get_caller_ID()) - return; //no support for other threads than main for now + if (Thread::get_main_ID()!=Thread::get_caller_ID()) + return; //no support for other threads than main for now - if (ScriptDebugger::get_singleton()->get_lines_left()>0 && ScriptDebugger::get_singleton()->get_depth()>=0) - ScriptDebugger::get_singleton()->set_depth( ScriptDebugger::get_singleton()->get_depth() +1 ); + if (ScriptDebugger::get_singleton()->get_lines_left()>0 && ScriptDebugger::get_singleton()->get_depth()>=0) + ScriptDebugger::get_singleton()->set_depth( ScriptDebugger::get_singleton()->get_depth() +1 ); - if (_debug_call_stack_pos >= _debug_max_call_stack) { - //stack overflow - _debug_error="Stack Overflow (Stack Size: "+itos(_debug_max_call_stack)+")"; - ScriptDebugger::get_singleton()->debug(this); - return; - } + if (_debug_call_stack_pos >= _debug_max_call_stack) { + //stack overflow + _debug_error="Stack Overflow (Stack Size: "+itos(_debug_max_call_stack)+")"; + ScriptDebugger::get_singleton()->debug(this); + return; + } - _call_stack[_debug_call_stack_pos].stack=p_stack; - _call_stack[_debug_call_stack_pos].instance=p_instance; - _call_stack[_debug_call_stack_pos].function=p_function; - _call_stack[_debug_call_stack_pos].ip=p_ip; - _call_stack[_debug_call_stack_pos].line=p_line; - _debug_call_stack_pos++; - } + _call_stack[_debug_call_stack_pos].stack=p_stack; + _call_stack[_debug_call_stack_pos].instance=p_instance; + _call_stack[_debug_call_stack_pos].function=p_function; + _call_stack[_debug_call_stack_pos].ip=p_ip; + _call_stack[_debug_call_stack_pos].line=p_line; + _debug_call_stack_pos++; + } - _FORCE_INLINE_ void exit_function() { + _FORCE_INLINE_ void exit_function() { - if (Thread::get_main_ID()!=Thread::get_caller_ID()) - return; //no support for other threads than main for now + if (Thread::get_main_ID()!=Thread::get_caller_ID()) + return; //no support for other threads than main for now - if (ScriptDebugger::get_singleton()->get_lines_left()>0 && ScriptDebugger::get_singleton()->get_depth()>=0) - ScriptDebugger::get_singleton()->set_depth( ScriptDebugger::get_singleton()->get_depth() -1 ); + if (ScriptDebugger::get_singleton()->get_lines_left()>0 && ScriptDebugger::get_singleton()->get_depth()>=0) + ScriptDebugger::get_singleton()->set_depth( ScriptDebugger::get_singleton()->get_depth() -1 ); - if (_debug_call_stack_pos==0) { + if (_debug_call_stack_pos==0) { - _debug_error="Stack Underflow (Engine Bug)"; - ScriptDebugger::get_singleton()->debug(this); - return; - } + _debug_error="Stack Underflow (Engine Bug)"; + ScriptDebugger::get_singleton()->debug(this); + return; + } - _debug_call_stack_pos--; - } + _debug_call_stack_pos--; + } virtual Vector<StackInfo> debug_get_current_stack_info() { - if (Thread::get_main_ID()!=Thread::get_caller_ID()) - return Vector<StackInfo>(); + if (Thread::get_main_ID()!=Thread::get_caller_ID()) + return Vector<StackInfo>(); Vector<StackInfo> csi; csi.resize(_debug_call_stack_pos); diff --git a/modules/gdscript/gd_tokenizer.cpp b/modules/gdscript/gd_tokenizer.cpp index 93863c4eb2..47e740b227 100644 --- a/modules/gdscript/gd_tokenizer.cpp +++ b/modules/gdscript/gd_tokenizer.cpp @@ -100,6 +100,10 @@ const char* GDTokenizer::token_names[TK_MAX]={ "yield", "signal", "breakpoint", +"rpc", +"sync", +"master", +"slave", "'['", "']'", "'{'", @@ -865,6 +869,10 @@ void GDTokenizerText::_advance() { {TK_PR_YIELD,"yield"}, {TK_PR_SIGNAL,"signal"}, {TK_PR_BREAKPOINT,"breakpoint"}, + {TK_PR_REMOTE,"remote"}, + {TK_PR_MASTER,"master"}, + {TK_PR_SLAVE,"slave"}, + {TK_PR_SYNC,"sync"}, {TK_PR_CONST,"const"}, //controlflow {TK_CF_IF,"if"}, @@ -1047,7 +1055,7 @@ void GDTokenizerText::advance(int p_amount) { ////////////////////////////////////////////////////////////////////////////////////////////////////// -#define BYTECODE_VERSION 10 +#define BYTECODE_VERSION 11 Error GDTokenizerBuffer::set_code_buffer(const Vector<uint8_t> & p_buffer) { diff --git a/modules/gdscript/gd_tokenizer.h b/modules/gdscript/gd_tokenizer.h index aaff573090..1815f82894 100644 --- a/modules/gdscript/gd_tokenizer.h +++ b/modules/gdscript/gd_tokenizer.h @@ -107,6 +107,10 @@ public: TK_PR_YIELD, TK_PR_SIGNAL, TK_PR_BREAKPOINT, + TK_PR_REMOTE, + TK_PR_SYNC, + TK_PR_MASTER, + TK_PR_SLAVE, TK_BRACKET_OPEN, TK_BRACKET_CLOSE, TK_CURLY_BRACKET_OPEN, diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/grid_map_editor_plugin.cpp index f3beabceb8..9bdad6713d 100644 --- a/modules/gridmap/grid_map_editor_plugin.cpp +++ b/modules/gridmap/grid_map_editor_plugin.cpp @@ -212,6 +212,18 @@ void GridMapEditor::_menu_option(int p_option) { _update_areas_display(); update_areas(); } break; + case MENU_OPTION_SELECTION_DUPLICATE: + if (!(selection.active && input_action==INPUT_NONE)) + return; + if (last_mouseover==Vector3(-1,-1,-1)) //nono mouseovering anythin + break; + + input_action=INPUT_DUPLICATE; + selection.click=last_mouseover; + selection.current=last_mouseover; + selection.duplicate_rot=0; + _update_duplicate_indicator(); + break; case MENU_OPTION_SELECTION_CLEAR: { if (!selection.active) return; @@ -377,7 +389,9 @@ bool GridMapEditor::do_input_action(Camera* p_camera,const Point2& p_point,bool int item=node->get_cell_item(cell[0],cell[1],cell[2]); if (item>=0) { selected_pallete=item; + theme_pallete->set_current(item); update_pallete(); + _update_cursor_instance(); } return true; } if (input_action==INPUT_PAINT) { @@ -530,29 +544,6 @@ bool GridMapEditor::forward_spatial_input_event(Camera* p_camera,const InputEven if (edit_mode->get_selected()==0) { // regular click switch (p_event.type) { - case InputEvent::KEY: { - - if (p_event.key.pressed && p_event.key.scancode==KEY_D && p_event.key.mod.shift && selection.active && input_action==INPUT_NONE) { - - if (last_mouseover==Vector3(-1,-1,-1)) //nono mouseovering anythin - return false; - - input_action=INPUT_DUPLICATE; - selection.click=last_mouseover; - selection.current=last_mouseover; - selection.duplicate_rot=0; - _update_duplicate_indicator(); - - - } - - if (p_event.key.pressed && p_event.key.scancode==KEY_DELETE && selection.active) { - - _delete_selection(); - return true; - } - - } break; case InputEvent::MOUSE_BUTTON: { if (p_event.mouse_button.button_index==BUTTON_WHEEL_UP && (p_event.mouse_button.mod.command || p_event.mouse_button.mod.shift)) { @@ -851,6 +842,11 @@ void GridMapEditor::edit(GridMap *p_gridmap) { VS *vs = VS::get_singleton(); last_mouseover=Vector3(-1,-1,-1); + input_action=INPUT_NONE; + selection.active=false; + _update_selection_transform(); + _update_duplicate_indicator(); + spatial_editor = editor->get_editor_plugin_screen()->cast_to<SpatialEditorPlugin>(); if (!node) { @@ -1247,7 +1243,8 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) { options->get_popup()->add_item("Create Exterior Connector",MENU_OPTION_SELECTION_MAKE_EXTERIOR_CONNECTOR); options->get_popup()->add_item("Erase Area",MENU_OPTION_REMOVE_AREA); options->get_popup()->add_separator(); - options->get_popup()->add_item("Selection -> Clear",MENU_OPTION_SELECTION_CLEAR); + options->get_popup()->add_item("Selection -> Duplicate",MENU_OPTION_SELECTION_DUPLICATE,KEY_MASK_SHIFT+KEY_INSERT); + options->get_popup()->add_item("Selection -> Clear",MENU_OPTION_SELECTION_CLEAR,KEY_MASK_SHIFT+KEY_DELETE); //options->get_popup()->add_separator(); //options->get_popup()->add_item("Configure",MENU_OPTION_CONFIGURE); @@ -1266,7 +1263,7 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) { settings_pick_distance->set_max(10000.0f); settings_pick_distance->set_min(500.0f); settings_pick_distance->set_step(1.0f); - settings_pick_distance->set_val(EDITOR_DEF("gridmap_editor/pick_distance", 5000.0)); + settings_pick_distance->set_val(EDITOR_DEF("grid_map/pick_distance", 5000.0)); settings_vbc->add_margin_child("Pick Distance:", settings_pick_distance); clip_mode=CLIP_DISABLED; diff --git a/modules/gridmap/grid_map_editor_plugin.h b/modules/gridmap/grid_map_editor_plugin.h index fc43866ef3..535c51bcbf 100644 --- a/modules/gridmap/grid_map_editor_plugin.h +++ b/modules/gridmap/grid_map_editor_plugin.h @@ -167,6 +167,7 @@ class GridMapEditor : public VBoxContainer { MENU_OPTION_DUPLICATE_SELECTS, MENU_OPTION_SELECTION_MAKE_AREA, MENU_OPTION_SELECTION_MAKE_EXTERIOR_CONNECTOR, + MENU_OPTION_SELECTION_DUPLICATE, MENU_OPTION_SELECTION_CLEAR, MENU_OPTION_REMOVE_AREA, MENU_OPTION_GRIDMAP_SETTINGS diff --git a/modules/visual_script/register_types.cpp b/modules/visual_script/register_types.cpp index 1360e546f3..ad54149b51 100644 --- a/modules/visual_script/register_types.cpp +++ b/modules/visual_script/register_types.cpp @@ -36,6 +36,7 @@ #include "visual_script_builtin_funcs.h" #include "visual_script_flow_control.h" #include "visual_script_yield_nodes.h" +#include "visual_script_expression.h" VisualScriptLanguage *visual_script_language=NULL; @@ -43,6 +44,10 @@ VisualScriptLanguage *visual_script_language=NULL; void register_visual_script_types() { + visual_script_language=memnew( VisualScriptLanguage ); + //script_language_gd->init(); + ScriptServer::register_language(visual_script_language); + ObjectTypeDB::register_type<VisualScript>(); ObjectTypeDB::register_virtual_type<VisualScriptNode>(); ObjectTypeDB::register_virtual_type<VisualScriptFunctionState>(); @@ -54,7 +59,9 @@ void register_visual_script_types() { ObjectTypeDB::register_type<VisualScriptIndexGet>(); ObjectTypeDB::register_type<VisualScriptIndexSet>(); ObjectTypeDB::register_type<VisualScriptGlobalConstant>(); + ObjectTypeDB::register_type<VisualScriptClassConstant>(); ObjectTypeDB::register_type<VisualScriptMathConstant>(); + ObjectTypeDB::register_type<VisualScriptBasicTypeConstant>(); ObjectTypeDB::register_type<VisualScriptEngineSingleton>(); ObjectTypeDB::register_type<VisualScriptSceneNode>(); ObjectTypeDB::register_type<VisualScriptSceneTree>(); @@ -62,11 +69,20 @@ void register_visual_script_types() { ObjectTypeDB::register_type<VisualScriptSelf>(); ObjectTypeDB::register_type<VisualScriptCustomNode>(); ObjectTypeDB::register_type<VisualScriptSubCall>(); + ObjectTypeDB::register_type<VisualScriptComment>(); + ObjectTypeDB::register_type<VisualScriptConstructor>(); + ObjectTypeDB::register_type<VisualScriptLocalVar>(); + ObjectTypeDB::register_type<VisualScriptLocalVarSet>(); + ObjectTypeDB::register_type<VisualScriptInputAction>(); + ObjectTypeDB::register_type<VisualScriptDeconstruct>(); + ObjectTypeDB::register_type<VisualScriptPreload>(); + ObjectTypeDB::register_type<VisualScriptTypeCast>(); + ObjectTypeDB::register_type<VisualScriptFunctionCall>(); ObjectTypeDB::register_type<VisualScriptPropertySet>(); ObjectTypeDB::register_type<VisualScriptPropertyGet>(); - ObjectTypeDB::register_type<VisualScriptScriptCall>(); +// ObjectTypeDB::register_type<VisualScriptScriptCall>(); ObjectTypeDB::register_type<VisualScriptEmitSignal>(); ObjectTypeDB::register_type<VisualScriptReturn>(); @@ -75,22 +91,22 @@ void register_visual_script_types() { ObjectTypeDB::register_type<VisualScriptIterator>(); ObjectTypeDB::register_type<VisualScriptSequence>(); ObjectTypeDB::register_type<VisualScriptInputFilter>(); - ObjectTypeDB::register_type<VisualScriptInputSelector>(); + ObjectTypeDB::register_type<VisualScriptSwitch >(); ObjectTypeDB::register_type<VisualScriptYield>(); ObjectTypeDB::register_type<VisualScriptYieldSignal>(); ObjectTypeDB::register_type<VisualScriptBuiltinFunc>(); - visual_script_language=memnew( VisualScriptLanguage ); - //script_language_gd->init(); - ScriptServer::register_language(visual_script_language); + + ObjectTypeDB::register_type<VisualScriptExpression>(); register_visual_script_nodes(); register_visual_script_func_nodes(); register_visual_script_builtin_func_node(); register_visual_script_flow_control_nodes(); register_visual_script_yield_nodes(); + register_visual_script_expression_node(); #ifdef TOOLS_ENABLED VisualScriptEditor::register_editor(); @@ -102,8 +118,13 @@ void register_visual_script_types() { void unregister_visual_script_types() { + unregister_visual_script_nodes(); + ScriptServer::unregister_language(visual_script_language); +#ifdef TOOLS_ENABLED + VisualScriptEditor::free_clipboard(); +#endif if (visual_script_language) memdelete( visual_script_language ); diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp index 91219679db..bd042c8989 100644 --- a/modules/visual_script/visual_script.cpp +++ b/modules/visual_script/visual_script.cpp @@ -1,9 +1,9 @@ #include "visual_script.h" #include "visual_script_nodes.h" #include "scene/main/node.h" - +#include "os/os.h" #include "globals.h" -#define SCRIPT_VARIABLES_PREFIX "script_variables/" + //used by editor, this is not really saved @@ -31,15 +31,25 @@ void VisualScriptNode::_notification(int p_what) { void VisualScriptNode::ports_changed_notify(){ + default_input_values.resize( MAX(default_input_values.size(),get_input_value_port_count()) ); //let it grow as big as possible, we don't want to lose values on resize + emit_signal("ports_changed"); + } -void VisualScriptNode::set_default_input_value(int p_port,const Variant& p_value) { +void VisualScriptNode::set_default_input_value(int p_port,const Variant& p_value) { ERR_FAIL_INDEX(p_port,default_input_values.size()); default_input_values[p_port]=p_value; + +#ifdef TOOLS_ENABLED + for (Set<VisualScript*>::Element *E=scripts_used.front();E;E=E->next()) { + E->get()->set_edited(true); + } +#endif + } Variant VisualScriptNode::get_default_input_value(int p_port) const { @@ -54,35 +64,40 @@ void VisualScriptNode::_set_default_input_values(Array p_values) { default_input_values=p_values; } -Array VisualScriptNode::_get_default_input_values() const { - //validate on save, since on load there is little info about this +void VisualScriptNode::validate_input_default_values() { + + - Array saved_values; + default_input_values.resize(get_input_value_port_count()); //actually validate on save for(int i=0;i<get_input_value_port_count();i++) { Variant::Type expected = get_input_value_port_info(i).type; - if (i>=default_input_values.size()) { + if (expected==Variant::NIL || expected==default_input_values[i].get_type()) { + continue; + } else { + //not the same, reconvert Variant::CallError ce; - saved_values.push_back(Variant::construct(expected,NULL,0,ce,false)); - } else { - - if (expected==Variant::NIL || expected==default_input_values[i].get_type()) { - saved_values.push_back(default_input_values[i]); - } else { - //not the same, reconvert - Variant::CallError ce; - Variant existing = default_input_values[i]; - const Variant *existingp=&existing; - saved_values.push_back( Variant::construct(expected,&existingp,1,ce,false) ); + Variant existing = default_input_values[i]; + const Variant *existingp=&existing; + default_input_values[i] = Variant::construct(expected,&existingp,1,ce,false); + if (ce.error!=Variant::CallError::CALL_OK) { + //could not convert? force.. + default_input_values[i] = Variant::construct(expected,NULL,0,ce,false); } } } - return saved_values; +} + +Array VisualScriptNode::_get_default_input_values() const { + + //validate on save, since on load there is little info about this + + return default_input_values; } @@ -99,6 +114,19 @@ void VisualScriptNode::_bind_methods() { ADD_SIGNAL(MethodInfo("ports_changed")); } +VisualScriptNode::TypeGuess VisualScriptNode::guess_output_type(TypeGuess* p_inputs,int p_output) const { + + PropertyInfo pinfo = get_output_value_port_info(p_output); + + TypeGuess tg; + + tg.type=pinfo.type; + if (pinfo.hint==PROPERTY_HINT_RESOURCE_TYPE) { + tg.obj_type=pinfo.hint_string; + } + + return tg; +} Ref<VisualScript> VisualScriptNode::get_visual_script() const { @@ -106,7 +134,6 @@ Ref<VisualScript> VisualScriptNode::get_visual_script() const { return Ref<VisualScript>(scripts_used.front()->get()); return Ref<VisualScript>(); - } VisualScriptNode::VisualScriptNode() { @@ -126,15 +153,15 @@ VisualScriptNodeInstance::VisualScriptNodeInstance() { VisualScriptNodeInstance::~VisualScriptNodeInstance() { if (sequence_outputs) { - memdelete(sequence_outputs); + memdelete_arr(sequence_outputs); } if (input_ports) { - memdelete(input_ports); + memdelete_arr(input_ports); } if (output_ports) { - memdelete(output_ports); + memdelete_arr(output_ports); } } @@ -224,6 +251,7 @@ int VisualScript::get_function_node_id(const StringName& p_name) const { void VisualScript::_node_ports_changed(int p_id) { + StringName function; for (Map<StringName,Function>::Element *E=functions.front();E;E=E->next()) { @@ -239,6 +267,10 @@ void VisualScript::_node_ports_changed(int p_id) { Function &func = functions[function]; Ref<VisualScriptNode> vsn = func.nodes[p_id].node; + if (OS::get_singleton()->get_main_loop() && OS::get_singleton()->get_main_loop()->cast_to<SceneTree>() && OS::get_singleton()->get_main_loop()->cast_to<SceneTree>()->is_editor_hint()) { + vsn->validate_input_default_values(); //force validate default values when editing on editor + } + //must revalidate all the functions { @@ -542,6 +574,23 @@ bool VisualScript::is_input_value_port_connected(const StringName& p_func,int p_ return false; } +bool VisualScript::get_input_value_port_connection_source(const StringName& p_func,int p_node,int p_port,int *r_node,int *r_port) const { + + ERR_FAIL_COND_V(!functions.has(p_func),false); + const Function &func = functions[p_func]; + + for (const Set<DataConnection>::Element *E=func.data_connections.front();E;E=E->next()) { + if (E->get().to_node==p_node && E->get().to_port==p_port) { + *r_node=E->get().from_node; + *r_port=E->get().from_port; + return true; + } + } + + return false; + +} + void VisualScript::get_data_connection_list(const StringName& p_func,List<DataConnection> *r_connection) const { ERR_FAIL_COND(!functions.has(p_func)); @@ -552,7 +601,7 @@ void VisualScript::get_data_connection_list(const StringName& p_func,List<DataCo } } -void VisualScript::add_variable(const StringName& p_name,const Variant& p_default_value) { +void VisualScript::add_variable(const StringName& p_name,const Variant& p_default_value,bool p_export) { ERR_FAIL_COND( instances.size() ); ERR_FAIL_COND(!String(p_name).is_valid_identifier()); @@ -563,10 +612,9 @@ void VisualScript::add_variable(const StringName& p_name,const Variant& p_defaul v.info.type=p_default_value.get_type(); v.info.name=p_name; v.info.hint=PROPERTY_HINT_NONE; + v._export=p_export; variables[p_name]=v; - script_variable_remap[SCRIPT_VARIABLES_PREFIX+String(p_name)]=p_name; - #ifdef TOOLS_ENABLED _update_placeholders(); @@ -583,7 +631,6 @@ void VisualScript::remove_variable(const StringName& p_name) { ERR_FAIL_COND(!variables.has(p_name)); variables.erase(p_name); - script_variable_remap.erase(SCRIPT_VARIABLES_PREFIX+String(p_name)); #ifdef TOOLS_ENABLED _update_placeholders(); @@ -600,6 +647,7 @@ void VisualScript::set_variable_default_value(const StringName& p_name,const Var _update_placeholders(); #endif + } Variant VisualScript::get_variable_default_value(const StringName& p_name) const{ @@ -626,6 +674,21 @@ PropertyInfo VisualScript::get_variable_info(const StringName& p_name) const{ return variables[p_name].info; } +void VisualScript::set_variable_export(const StringName& p_name,bool p_export) { + + ERR_FAIL_COND(!variables.has(p_name)); + + variables[p_name]._export=p_export; +} + +bool VisualScript::get_variable_export(const StringName& p_name) const { + + ERR_FAIL_COND_V(!variables.has(p_name),false); + return variables[p_name]._export; + +} + + void VisualScript::_set_variable_info(const StringName& p_name,const Dictionary& p_info) { PropertyInfo pinfo; @@ -656,7 +719,7 @@ Dictionary VisualScript::_get_variable_info(const StringName& p_name) const{ return d; } -void VisualScript::get_variable_list(List<StringName> *r_variables){ +void VisualScript::get_variable_list(List<StringName> *r_variables) const{ for (Map<StringName,Variable>::Element *E=variables.front();E;E=E->next()) { @@ -836,6 +899,10 @@ StringName VisualScript::get_instance_base_type() const { return base_type; } +Ref<Script> VisualScript::get_base_script() const { + return Ref<Script>(); // no inheritance in visual script +} + #ifdef TOOLS_ENABLED void VisualScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder) { @@ -854,8 +921,11 @@ void VisualScript::_update_placeholders() { for (Map<StringName,Variable>::Element *E=variables.front();E;E=E->next()) { + if (!E->get()._export) + continue; + PropertyInfo p = E->get().info; - p.name=SCRIPT_VARIABLES_PREFIX+String(E->key()); + p.name=String(E->key()); pinfo.push_back(p); values[p.name]=E->get().default_value; } @@ -887,8 +957,11 @@ ScriptInstance* VisualScript::instance_create(Object *p_this) { for (Map<StringName,Variable>::Element *E=variables.front();E;E=E->next()) { + if (!E->get()._export) + continue; + PropertyInfo p = E->get().info; - p.name=SCRIPT_VARIABLES_PREFIX+String(E->key()); + p.name=String(E->key()); pinfo.push_back(p); values[p.name]=E->get().default_value; } @@ -986,13 +1059,13 @@ void VisualScript::get_script_signal_list(List<MethodInfo> *r_signals) const { bool VisualScript::get_property_default_value(const StringName& p_property,Variant& r_value) const { - if (!script_variable_remap.has(p_property)) + if (!variables.has(p_property)) return false; - r_value=variables[ script_variable_remap[p_property] ].default_value; + r_value=variables[ p_property ].default_value; return true; } -void VisualScript::get_method_list(List<MethodInfo> *p_list) const { +void VisualScript::get_script_method_list(List<MethodInfo> *p_list) const { for (Map<StringName,Function>::Element *E=functions.front();E;E=E->next()) { @@ -1045,6 +1118,33 @@ MethodInfo VisualScript::get_method_info(const StringName& p_method) const{ return mi; } +void VisualScript::get_script_property_list(List<PropertyInfo> *p_list) const { + + List<StringName> vars; + get_variable_list(&vars); + + for (List<StringName>::Element *E=vars.front();E;E=E->next()) { + if (!variables[E->get()]._export) + continue; + p_list->push_back(variables[E->get()].info); + } +} + +#ifdef TOOLS_ENABLED +bool VisualScript::are_subnodes_edited() const { + + for(const Map<StringName,Function>::Element *E=functions.front();E;E=E->next()) { + + for (const Map<int,Function::NodeData>::Element *F=E->get().nodes.front();F;F=F->next()) { + if (F->get().node->is_edited()) { + return true; + } + } + } + + return false; +} +#endif void VisualScript::_set_data(const Dictionary& p_data) { @@ -1061,6 +1161,7 @@ void VisualScript::_set_data(const Dictionary& p_data) { add_variable(name); _set_variable_info(name,v); set_variable_default_value(name,v["default_value"]); + set_variable_export(name,v.has("export") && bool(v["export"])); } @@ -1131,6 +1232,7 @@ Dictionary VisualScript::_get_data() const{ Dictionary var = _get_variable_info(E->key()); var["name"]=E->key(); //make sure it's the right one var["default_value"]=E->get().default_value; + var["export"]=E->get()._export; vars.push_back(var); } d["variables"]=vars; @@ -1241,13 +1343,15 @@ void VisualScript::_bind_methods() { ObjectTypeDB::bind_method(_MD("data_disconnect","func","from_node","from_port","to_node","to_port"),&VisualScript::data_disconnect); ObjectTypeDB::bind_method(_MD("has_data_connection","func","from_node","from_port","to_node","to_port"),&VisualScript::has_data_connection); - ObjectTypeDB::bind_method(_MD("add_variable","name","default_value"),&VisualScript::add_variable,DEFVAL(Variant())); + ObjectTypeDB::bind_method(_MD("add_variable","name","default_value","export"),&VisualScript::add_variable,DEFVAL(Variant()),DEFVAL(false)); ObjectTypeDB::bind_method(_MD("has_variable","name"),&VisualScript::has_variable); ObjectTypeDB::bind_method(_MD("remove_variable","name"),&VisualScript::remove_variable); ObjectTypeDB::bind_method(_MD("set_variable_default_value","name","value"),&VisualScript::set_variable_default_value); ObjectTypeDB::bind_method(_MD("get_variable_default_value","name"),&VisualScript::get_variable_default_value); ObjectTypeDB::bind_method(_MD("set_variable_info","name","value"),&VisualScript::_set_variable_info); ObjectTypeDB::bind_method(_MD("get_variable_info","name"),&VisualScript::_get_variable_info); + ObjectTypeDB::bind_method(_MD("set_variable_export","name","enable"),&VisualScript::set_variable_export); + ObjectTypeDB::bind_method(_MD("get_variable_export","name"),&VisualScript::get_variable_export); ObjectTypeDB::bind_method(_MD("rename_variable","name","new_name"),&VisualScript::rename_variable); ObjectTypeDB::bind_method(_MD("add_custom_signal","name"),&VisualScript::add_custom_signal); @@ -1296,12 +1400,10 @@ VisualScript::~VisualScript() { bool VisualScriptInstance::set(const StringName& p_name, const Variant& p_value) { - const Map<StringName,StringName>::Element *remap = script->script_variable_remap.find(p_name); - if (!remap) - return false; - Map<StringName,Variant>::Element *E=variables.find(remap->get()); - ERR_FAIL_COND_V(!E,false); + Map<StringName,Variant>::Element *E=variables.find(p_name); + if (!E) + return false; E->get()=p_value; @@ -1311,35 +1413,29 @@ bool VisualScriptInstance::set(const StringName& p_name, const Variant& p_value) bool VisualScriptInstance::get(const StringName& p_name, Variant &r_ret) const { - const Map<StringName,StringName>::Element *remap = script->script_variable_remap.find(p_name); - if (!remap) + const Map<StringName,Variant>::Element *E=variables.find(p_name); + if (!E) return false; - const Map<StringName,Variant>::Element *E=variables.find(remap->get()); - ERR_FAIL_COND_V(!E,false); - - return E->get(); + r_ret=E->get(); + return true; } void VisualScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const{ for (const Map<StringName,VisualScript::Variable>::Element *E=script->variables.front();E;E=E->next()) { + if (!E->get()._export) + continue; PropertyInfo p = E->get().info; - p.name=SCRIPT_VARIABLES_PREFIX+String(E->key()); + p.name=String(E->key()); p_properties->push_back(p); } } Variant::Type VisualScriptInstance::get_property_type(const StringName& p_name,bool *r_is_valid) const{ - const Map<StringName,StringName>::Element *remap = script->script_variable_remap.find(p_name); - if (!remap) { - if (r_is_valid) - *r_is_valid=false; - return Variant::NIL; - } - const Map<StringName,VisualScript::Variable>::Element *E=script->variables.find(remap->get()); + const Map<StringName,VisualScript::Variable>::Element *E=script->variables.find(p_name); if (!E) { if (r_is_valid) *r_is_valid=false; @@ -1389,7 +1485,59 @@ bool VisualScriptInstance::has_method(const StringName& p_method) const{ //#define VSDEBUG(m_text) print_line(m_text) #define VSDEBUG(m_text) -Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p_stack, int p_stack_size, VisualScriptNodeInstance* p_node, int p_flow_stack_pos, bool p_resuming_yield, Variant::CallError &r_error) { +void VisualScriptInstance::_dependency_step(VisualScriptNodeInstance* node,int p_pass,int *pass_stack,const Variant **input_args,Variant **output_args,Variant *variant_stack,Variant::CallError& r_error,String& error_str,VisualScriptNodeInstance** r_error_node) { + + ERR_FAIL_COND(node->pass_idx==-1); + + if (pass_stack[node->pass_idx]==p_pass) + return; + + pass_stack[node->pass_idx]=p_pass; + + if (!node->dependencies.empty()) { + + int dc = node->dependencies.size(); + VisualScriptNodeInstance **deps=node->dependencies.ptr(); + + for(int i=0;i<dc;i++) { + + _dependency_step(deps[i],p_pass,pass_stack,input_args,output_args,variant_stack,r_error,error_str,r_error_node); + if (r_error.error!=Variant::CallError::CALL_OK) + return; + + } + } + + + for(int i=0;i<node->input_port_count;i++) { + + int index = node->input_ports[i] & VisualScriptNodeInstance::INPUT_MASK; + + + if (node->input_ports[i] & VisualScriptNodeInstance::INPUT_DEFAULT_VALUE_BIT) { + //is a default value (unassigned input port) + input_args[i]=&default_values[index]; + } else { + //regular temporary in stack + input_args[i]=&variant_stack[index]; + + } + } + for(int i=0 ; i<node->output_port_count ; i++) { + output_args[i] = &variant_stack[ node->output_ports[i] ]; + } + + Variant *working_mem=node->working_mem_idx>=0 ? &variant_stack[node->working_mem_idx] : (Variant*)NULL; + + node->step(input_args,output_args,VisualScriptNodeInstance::START_MODE_BEGIN_SEQUENCE,working_mem,r_error,error_str); + //ignore return + if (r_error.error!=Variant::CallError::CALL_OK) { + *r_error_node=node; + } + +} + +Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p_stack, int p_stack_size, VisualScriptNodeInstance* p_node, int p_flow_stack_pos, int p_pass, bool p_resuming_yield, Variant::CallError &r_error) { Map<StringName,Function>::Element *F = functions.find(p_method); ERR_FAIL_COND_V(!F,Variant()); @@ -1402,6 +1550,7 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p Variant **output_args=(Variant**)(input_args + max_input_args); int flow_max = f->flow_stack_size; int* flow_stack = flow_max? (int*)(output_args + max_output_args) : (int*)NULL; + int *pass_stack = flow_stack + flow_max; String error_str; @@ -1421,6 +1570,7 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p while(true) { + p_pass++; //increment pass current_node_id=node->get_id(); VSDEBUG("==========AT NODE: "+itos(current_node_id)+" base: "+node->get_base_node()->get_type()); @@ -1439,38 +1589,46 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p input_args[i]=&variant_stack[i]; } } else { - //setup input pointers normally - VSDEBUG("INPUT PORTS: "+itos(node->input_port_count)); - for(int i=0 ; i<node->input_port_count ; i++) { + //run dependencies first - int index = node->input_ports[i] & VisualScriptNodeInstance::INPUT_MASK; + if (!node->dependencies.empty()) { - if (node->input_ports[i] & VisualScriptNodeInstance::INPUT_DEFAULT_VALUE_BIT) { - //is a default value (unassigned input port) - input_args[i]=&default_values[index]; - VSDEBUG("\tPORT "+itos(i)+" DEFAULT VAL"); - } else if (node->input_ports[i] & VisualScriptNodeInstance::INPUT_UNSEQUENCED_READ_BIT) { - //from a node that requires read - Function::UnsequencedGet *ug = &f->unsequenced_gets[index]; + int dc = node->dependencies.size(); + VisualScriptNodeInstance **deps=node->dependencies.ptr(); - bool ok = ug->from->get_output_port_unsequenced(i,&variant_stack[ug->to_stack],working_mem,error_str); - if (!ok) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - current_node_id=ug->from->get_id(); + for(int i=0;i<dc;i++) { + + _dependency_step(deps[i],p_pass,pass_stack,input_args,output_args,variant_stack,r_error,error_str,&node); + if (r_error.error!=Variant::CallError::CALL_OK) { error=true; - working_mem=NULL; + current_node_id=node->id; break; } + } + } - VSDEBUG("\tPORT "+itos(i)+" UNSEQ READ TO STACK: " + itos(ug->to_stack)); - input_args[i]=&variant_stack[ug->to_stack]; - } else { - //regular temporary in stack - input_args[i]=&variant_stack[index]; - VSDEBUG("PORT "+itos(i)+" AT STACK "+itos(index)); + if (!error) { + + //setup input pointers normally + VSDEBUG("INPUT PORTS: "+itos(node->input_port_count)); + + for(int i=0 ; i<node->input_port_count ; i++) { + + int index = node->input_ports[i] & VisualScriptNodeInstance::INPUT_MASK; + + if (node->input_ports[i] & VisualScriptNodeInstance::INPUT_DEFAULT_VALUE_BIT) { + //is a default value (unassigned input port) + input_args[i]=&default_values[index]; + VSDEBUG("\tPORT "+itos(i)+" DEFAULT VAL"); + } else { + //regular temporary in stack + input_args[i]=&variant_stack[index]; + VSDEBUG("PORT "+itos(i)+" AT STACK "+itos(index)); + + } } } } @@ -1492,13 +1650,13 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p { if (p_resuming_yield) start_mode=VisualScriptNodeInstance::START_MODE_RESUME_YIELD; - else if (flow_stack && !(flow_stack[flow_stack_pos] & VisualScriptNodeInstance::FLOW_STACK_PUSHED_BIT)) //if there is a push bit, it means we are continuing a sequence + else if (!flow_stack || !(flow_stack[flow_stack_pos] & VisualScriptNodeInstance::FLOW_STACK_PUSHED_BIT)) //if there is a push bit, it means we are continuing a sequence start_mode=VisualScriptNodeInstance::START_MODE_BEGIN_SEQUENCE; else start_mode=VisualScriptNodeInstance::START_MODE_CONTINUE_SEQUENCE; } - VSDEBUG("STEP - STARTSEQ: "+itos(start_sequence)); + VSDEBUG("STEP - STARTSEQ: "+itos(start_mode)); int ret = node->step(input_args,output_args,start_mode,working_mem,r_error,error_str); @@ -1537,6 +1695,7 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p state->node=node; state->flow_stack_pos=flow_stack_pos; state->stack.resize(p_stack_size); + state->pass=p_pass; copymem(state->stack.ptr(),p_stack,p_stack_size); //step 2, run away, return directly r_error.error=Variant::CallError::CALL_OK; @@ -1707,6 +1866,7 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p node = instances[ flow_stack[i] & VisualScriptNodeInstance::FLOW_STACK_MASK ]; flow_stack_pos=i; found=true; + break; } } @@ -1735,6 +1895,26 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p String err_func = p_method; int err_line=current_node_id; //not a line but it works as one + if (node && (r_error.error!=Variant::CallError::CALL_ERROR_INVALID_METHOD || error_str==String())) { + + if (error_str!=String()) { + error_str+=" "; + } + + if (r_error.error==Variant::CallError::CALL_ERROR_INVALID_ARGUMENT) { + int errorarg=r_error.argument; + error_str+="Cannot convert argument "+itos(errorarg+1)+" to "+Variant::get_type_name(r_error.expected)+"."; + } else if (r_error.error==Variant::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS) { + error_str+="Expected "+itos(r_error.argument)+" arguments."; + } else if (r_error.error==Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS) { + error_str+="Expected "+itos(r_error.argument)+" arguments."; + } else if (r_error.error==Variant::CallError::CALL_ERROR_INVALID_METHOD) { + error_str+="Invalid Call."; + } else if (r_error.error==Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL) { + error_str+="Base Instance is null"; + } + } + //if (!GDScriptLanguage::get_singleton()->debug_break(err_text,false)) { // debugger break did not happen @@ -1767,7 +1947,7 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p } -Variant VisualScriptInstance::call(const StringName& p_method,const Variant** p_args,int p_argcount,Variant::CallError &r_error){ +Variant VisualScriptInstance::call(const StringName& p_method, const Variant** p_args, int p_argcount, Variant::CallError &r_error){ r_error.error=Variant::CallError::CALL_OK; //ok by default @@ -1787,6 +1967,7 @@ Variant VisualScriptInstance::call(const StringName& p_method,const Variant** p_ total_stack_size+=f->node_count*sizeof(bool); total_stack_size+=(max_input_args+max_output_args)*sizeof(Variant*); //arguments total_stack_size+=f->flow_stack_size*sizeof(int); //flow + total_stack_size+=f->pass_stack_size*sizeof(int); VSDEBUG("STACK SIZE: "+itos(total_stack_size)); VSDEBUG("STACK VARIANTS: : "+itos(f->max_stack)); @@ -1794,6 +1975,7 @@ Variant VisualScriptInstance::call(const StringName& p_method,const Variant** p_ VSDEBUG("MAX INPUT: "+itos(max_input_args)); VSDEBUG("MAX OUTPUT: "+itos(max_output_args)); VSDEBUG("FLOW STACK SIZE: "+itos(f->flow_stack_size)); + VSDEBUG("PASS STACK SIZE: "+itos(f->pass_stack_size)); void *stack = alloca(total_stack_size); @@ -1803,11 +1985,13 @@ Variant VisualScriptInstance::call(const StringName& p_method,const Variant** p_ Variant **output_args=(Variant**)(input_args + max_input_args); int flow_max = f->flow_stack_size; int* flow_stack = flow_max? (int*)(output_args + max_output_args) : (int*)NULL; + int *pass_stack = flow_stack + flow_max; for(int i=0;i<f->node_count;i++) { sequence_bits[i]=false; //all starts as false } + zeromem(pass_stack,f->pass_stack_size*sizeof(int)); Map<int,VisualScriptNodeInstance*>::Element *E = instances.find(f->node); if (!E) { @@ -1850,7 +2034,7 @@ Variant VisualScriptInstance::call(const StringName& p_method,const Variant** p_ variant_stack[i]=*p_args[i]; } - return _call_internal(p_method,stack,total_stack_size,node,0,false,r_error); + return _call_internal(p_method,stack,total_stack_size,node,0,0,false,r_error); } @@ -1871,6 +2055,30 @@ Ref<Script> VisualScriptInstance::get_script() const{ return script; } +ScriptInstance::RPCMode VisualScriptInstance::get_rpc_mode(const StringName& p_method) const { + + const Map<StringName,VisualScript::Function>::Element *E = script->functions.find(p_method); + if (!E) { + return RPC_MODE_DISABLED; + } + + if (E->get().function_id>=0 && E->get().nodes.has(E->get().function_id)) { + + Ref<VisualScriptFunction> vsf = E->get().nodes[E->get().function_id].node; + if (vsf.is_valid()) { + + return vsf->get_rpc_mode(); + } + } + + return RPC_MODE_DISABLED; +} + +ScriptInstance::RPCMode VisualScriptInstance::get_rset_mode(const StringName& p_variable) const { + + return RPC_MODE_DISABLED; +} + void VisualScriptInstance::create(const Ref<VisualScript>& p_script,Object *p_owner) { @@ -1898,6 +2106,7 @@ void VisualScriptInstance::create(const Ref<VisualScript>& p_script,Object *p_ow for(const Map<StringName,VisualScript::Variable>::Element *E=script->variables.front();E;E=E->next()) { variables[E->key()]=E->get().default_value; + //no hacer que todo exporte, solo las que queres! } @@ -1907,7 +2116,9 @@ void VisualScriptInstance::create(const Ref<VisualScript>& p_script,Object *p_ow function.node=E->get().function_id; function.max_stack=0; function.flow_stack_size=0; + function.pass_stack_size=0; function.node_count=0; + Map<StringName,int> local_var_indices; if (function.node<0) { VisualScriptLanguage::singleton->debug_break_parse(get_script()->get_path(),0,"No start node in function: "+String(E->key())); @@ -1946,15 +2157,20 @@ void VisualScriptInstance::create(const Ref<VisualScript>& p_script,Object *p_ow instance->id=F->key(); instance->input_port_count = node->get_input_value_port_count(); + instance->input_ports=NULL; instance->output_port_count = node->get_output_value_port_count(); + instance->output_ports=NULL; instance->sequence_output_count = node->get_output_sequence_port_count(); instance->sequence_index=function.node_count++; + instance->sequence_outputs=NULL; + instance->pass_idx=-1; if (instance->input_port_count) { instance->input_ports = memnew_arr(int,instance->input_port_count); for(int i=0;i<instance->input_port_count;i++) { + instance->input_ports[i]=-1; //if not assigned, will become default value - } + } } if (instance->output_port_count) { @@ -1971,7 +2187,25 @@ void VisualScriptInstance::create(const Ref<VisualScript>& p_script,Object *p_ow } } - if (instance->get_working_memory_size()) { + if (node->cast_to<VisualScriptLocalVar>() || node->cast_to<VisualScriptLocalVarSet>()) { + //working memory is shared only for this node, for the same variables + Ref<VisualScriptLocalVar> vslv = node; + + StringName var_name; + + if (node->cast_to<VisualScriptLocalVar>()) + var_name = String(node->cast_to<VisualScriptLocalVar>()->get_var_name()).strip_edges(); + else + var_name = String(node->cast_to<VisualScriptLocalVarSet>()->get_var_name()).strip_edges(); + + if (!local_var_indices.has(var_name)) { + local_var_indices[var_name]=function.max_stack; + function.max_stack++; + } + + instance->working_mem_idx=local_var_indices[var_name]; + + } else if (instance->get_working_memory_size()) { instance->working_mem_idx = function.max_stack; function.max_stack+=instance->get_working_memory_size(); } else { @@ -2007,24 +2241,17 @@ void VisualScriptInstance::create(const Ref<VisualScript>& p_script,Object *p_ow } - if (from->is_output_port_unsequenced(dc.from_node)) { - - //prepare an unsequenced read (must actually get the value from the output) - int stack_pos = function.max_stack++; - - Function::UnsequencedGet uget; - uget.from=from; - uget.from_port=dc.from_port; - uget.to_stack=stack_pos; - - to->input_ports[dc.to_port] = function.unsequenced_gets.size() | VisualScriptNodeInstance::INPUT_UNSEQUENCED_READ_BIT; - function.unsequenced_gets.push_back(uget); - - } else { - - to->input_ports[dc.to_port] = from->output_ports[dc.from_port]; //read from wherever the stack is + if (from->get_sequence_output_count()==0 && to->dependencies.find(from)==-1) { + //if the node we are reading from has no output sequence, we must call step() before reading from it. + if (from->pass_idx==-1) { + from->pass_idx=function.pass_stack_size; + function.pass_stack_size++; + } + to->dependencies.push_back(from); } + to->input_ports[dc.to_port] = from->output_ports[dc.from_port]; //read from wherever the stack is + } //third pass, do sequence connections @@ -2159,7 +2386,7 @@ Variant VisualScriptFunctionState::_signal_callback(const Variant** p_args, int *working_mem=args; //arguments go to working mem. - Variant ret = instance->_call_internal(function,stack.ptr(),stack.size(),node,flow_stack_pos,true,r_error); + Variant ret = instance->_call_internal(function,stack.ptr(),stack.size(),node,flow_stack_pos,pass,true,r_error); function=StringName(); //invalidate return ret; } @@ -2201,7 +2428,7 @@ Variant VisualScriptFunctionState::resume(Array p_args) { *working_mem=p_args; //arguments go to working mem. - Variant ret= instance->_call_internal(function,stack.ptr(),stack.size(),node,flow_stack_pos,true,r_error); + Variant ret= instance->_call_internal(function,stack.ptr(),stack.size(),node,flow_stack_pos,pass,true,r_error); function=StringName(); //invalidate return ret; } @@ -2212,7 +2439,7 @@ void VisualScriptFunctionState::_bind_methods() { ObjectTypeDB::bind_method(_MD("connect_to_signal","obj","signals","args"),&VisualScriptFunctionState::connect_to_signal); ObjectTypeDB::bind_method(_MD("resume:Array","args"),&VisualScriptFunctionState::resume,DEFVAL(Variant())); ObjectTypeDB::bind_method(_MD("is_valid"),&VisualScriptFunctionState::is_valid); - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"_signal_callback",&VisualScriptFunctionState::_signal_callback,MethodInfo("_signal_callback")); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"_signal_callback",&VisualScriptFunctionState::_signal_callback,MethodInfo("_signal_callback")); } VisualScriptFunctionState::VisualScriptFunctionState() { @@ -2404,7 +2631,7 @@ void VisualScriptLanguage::debug_get_stack_level_locals(int p_level,List<String> const StringName *f = _call_stack[l].function; ERR_FAIL_COND(!_call_stack[l].instance->functions.has(*f)); - VisualScriptInstance::Function *func = &_call_stack[l].instance->functions[*f]; +// VisualScriptInstance::Function *func = &_call_stack[l].instance->functions[*f]; VisualScriptNodeInstance *node =_call_stack[l].instance->instances[*_call_stack[l].current_id]; ERR_FAIL_COND(!node); @@ -2427,8 +2654,6 @@ void VisualScriptLanguage::debug_get_stack_level_locals(int p_level,List<String> if (in_from&VisualScriptNodeInstance::INPUT_DEFAULT_VALUE_BIT) { p_values->push_back(_call_stack[l].instance->default_values[in_value]); - } else if (in_from&VisualScriptNodeInstance::INPUT_UNSEQUENCED_READ_BIT) { - p_values->push_back( _call_stack[l].stack[ func->unsequenced_gets[ in_value ].to_stack ] ); } else { p_values->push_back( _call_stack[l].stack[ in_value] ); } @@ -2579,7 +2804,6 @@ void VisualScriptLanguage::get_registered_node_names(List<String> *r_names) { VisualScriptLanguage::VisualScriptLanguage() { notification="_notification"; - _get_output_port_unsequenced="_get_output_port_unsequenced"; _step="_step"; _subcall="_subcall"; singleton=this; diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h index 786b9b873e..63b018b0c2 100644 --- a/modules/visual_script/visual_script.h +++ b/modules/visual_script/visual_script.h @@ -20,6 +20,8 @@ friend class VisualScript; void _set_default_input_values(Array p_values); Array _get_default_input_values() const; + + void validate_input_default_values(); protected: virtual bool _use_builtin_script() const { return false; } @@ -36,6 +38,8 @@ public: virtual String get_output_sequence_port_text(int p_port) const=0; + virtual bool has_mixed_input_and_sequence_ports() const { return false; } + virtual int get_input_value_port_count() const=0; virtual int get_output_value_port_count() const=0; @@ -56,6 +60,18 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance)=0; + struct TypeGuess { + + Variant::Type type; + InputEvent::Type ev_type; + StringName obj_type; + Ref<Script> script; + + TypeGuess() { type=Variant::NIL; ev_type=InputEvent::NONE; } + }; + + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + VisualScriptNode(); }; @@ -69,7 +85,6 @@ friend class VisualScriptLanguage; //for debugger INPUT_SHIFT=1<<24, INPUT_MASK=INPUT_SHIFT-1, INPUT_DEFAULT_VALUE_BIT=INPUT_SHIFT, // from unassigned input port, using default value (edited by user) - INPUT_UNSEQUENCED_READ_BIT=INPUT_SHIFT<<1, //from unsequenced read (requires calling a function, used for constants, variales, etc). }; @@ -77,11 +92,13 @@ friend class VisualScriptLanguage; //for debugger int sequence_index; VisualScriptNodeInstance **sequence_outputs; int sequence_output_count; + Vector<VisualScriptNodeInstance*> dependencies; int *input_ports; int input_port_count; int *output_ports; int output_port_count; int working_mem_idx; + int pass_idx; VisualScriptNode *base; @@ -115,10 +132,6 @@ public: virtual int get_working_memory_size() const { return 0; } - //unsequenced ports are those that can return a value even if no sequence happened through them, used for constants, variables, etc. - virtual bool is_output_port_unsequenced(int p_idx) const { return false; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; } - virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str)=0; //do a step, return which sequence port to go out Ref<VisualScriptNode> get_base_node() { return Ref<VisualScriptNode>( base ); } @@ -207,13 +220,13 @@ friend class VisualScriptInstance; struct Variable { PropertyInfo info; Variant default_value; + bool _export; }; Map<StringName,Function> functions; Map<StringName,Variable> variables; - Map<StringName,StringName> script_variable_remap; Map<StringName,Vector<Argument> > custom_signals; Map<Object*,VisualScriptInstance*> instances; @@ -267,15 +280,18 @@ public: bool has_data_connection(const StringName& p_func,int p_from_node,int p_from_port,int p_to_node,int p_to_port) const; void get_data_connection_list(const StringName& p_func,List<DataConnection> *r_connection) const; bool is_input_value_port_connected(const StringName& p_name,int p_node,int p_port) const; + bool get_input_value_port_connection_source(const StringName& p_name,int p_node,int p_port,int *r_node,int *r_port) const; - void add_variable(const StringName& p_name,const Variant& p_default_value=Variant()); + void add_variable(const StringName& p_name,const Variant& p_default_value=Variant(),bool p_export=false); bool has_variable(const StringName& p_name) const; void remove_variable(const StringName& p_name); void set_variable_default_value(const StringName& p_name,const Variant& p_value); Variant get_variable_default_value(const StringName& p_name) const; void set_variable_info(const StringName& p_name,const PropertyInfo& p_info); PropertyInfo get_variable_info(const StringName& p_name) const; - void get_variable_list(List<StringName> *r_variables); + void set_variable_export(const StringName& p_name,bool p_export); + bool get_variable_export(const StringName& p_name) const; + void get_variable_list(List<StringName> *r_variables) const; void rename_variable(const StringName& p_name,const StringName& p_new_name); @@ -300,6 +316,7 @@ public: virtual bool can_instance() const; + virtual Ref<Script> get_base_script() const; virtual StringName get_instance_base_type() const; virtual ScriptInstance* instance_create(Object *p_this); virtual bool instance_has(const Object *p_this) const; @@ -320,12 +337,16 @@ public: virtual void get_script_signal_list(List<MethodInfo> *r_signals) const; virtual bool get_property_default_value(const StringName& p_property,Variant& r_value) const; - virtual void get_method_list(List<MethodInfo> *p_list) const; + virtual void get_script_method_list(List<MethodInfo> *p_list) const; virtual bool has_method(const StringName& p_method) const; virtual MethodInfo get_method_info(const StringName& p_method) const; + virtual void get_script_property_list(List<PropertyInfo> *p_list) const; +#ifdef TOOLS_ENABLED + virtual bool are_subnodes_edited() const; +#endif VisualScript(); ~VisualScript(); @@ -345,18 +366,10 @@ class VisualScriptInstance : public ScriptInstance { int trash_pos; int return_pos; int flow_stack_size; + int pass_stack_size; int node_count; int argument_count; bool valid; - - struct UnsequencedGet { - VisualScriptNodeInstance* from; - int from_port; - int to_stack; - }; - - Vector<UnsequencedGet> unsequenced_gets; - }; Map<StringName,Function> functions; @@ -366,7 +379,8 @@ class VisualScriptInstance : public ScriptInstance { StringName source; - Variant _call_internal(const StringName& p_method, void* p_stack,int p_stack_size, VisualScriptNodeInstance* p_node, int p_flow_stack_pos, bool p_resuming_yield,Variant::CallError &r_error); + void _dependency_step(VisualScriptNodeInstance* node, int p_pass, int *pass_stack, const Variant **input_args, Variant **output_args, Variant *variant_stack, Variant::CallError& r_error, String& error_str, VisualScriptNodeInstance **r_error_node); + Variant _call_internal(const StringName& p_method, void* p_stack,int p_stack_size, VisualScriptNodeInstance* p_node, int p_flow_stack_pos, int p_pass, bool p_resuming_yield,Variant::CallError &r_error); //Map<StringName,Function> functions; @@ -413,6 +427,9 @@ public: virtual ScriptLanguage *get_language(); + virtual RPCMode get_rpc_mode(const StringName& p_method) const; + virtual RPCMode get_rset_mode(const StringName& p_variable) const; + VisualScriptInstance(); ~VisualScriptInstance(); }; @@ -432,6 +449,7 @@ friend class VisualScriptInstance; int variant_stack_size; VisualScriptNodeInstance *node; int flow_stack_pos; + int pass; Variant _signal_callback(const Variant** p_args, int p_argcount, Variant::CallError& r_error); protected: diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp index e813d9ea84..24a44d3506 100644 --- a/modules/visual_script/visual_script_builtin_funcs.cpp +++ b/modules/visual_script/visual_script_builtin_funcs.cpp @@ -65,22 +65,48 @@ const char* VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX "bytes2var", }; +VisualScriptBuiltinFunc::BuiltinFunc VisualScriptBuiltinFunc::find_function(const String& p_string) { + + for(int i=0;i<FUNC_MAX;i++) { + if (p_string==func_name[i]) + return BuiltinFunc(i); + } + + return FUNC_MAX; +} + +String VisualScriptBuiltinFunc::get_func_name(BuiltinFunc p_func) { + + ERR_FAIL_INDEX_V(p_func,FUNC_MAX,String()); + return func_name[p_func]; +} int VisualScriptBuiltinFunc::get_output_sequence_port_count() const { - return 1; + return has_input_sequence_port() ? 1 : 0; } bool VisualScriptBuiltinFunc::has_input_sequence_port() const{ - return true; + switch(func) { + + case MATH_RANDOMIZE: + case TEXT_PRINT: + case TEXT_PRINTERR: + case TEXT_PRINTRAW: + return true; + default: + return false; + + } + } -int VisualScriptBuiltinFunc::get_input_value_port_count() const{ +int VisualScriptBuiltinFunc::get_func_argument_count(BuiltinFunc p_func) { - switch(func) { + switch(p_func) { case MATH_RANDOMIZE: case MATH_RAND: @@ -146,6 +172,11 @@ int VisualScriptBuiltinFunc::get_input_value_port_count() const{ } return 0; } + +int VisualScriptBuiltinFunc::get_input_value_port_count() const{ + + return get_func_argument_count(func); +} int VisualScriptBuiltinFunc::get_output_value_port_count() const{ switch(func) { @@ -549,118 +580,124 @@ VisualScriptBuiltinFunc::BuiltinFunc VisualScriptBuiltinFunc::get_func() { r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;\ r_error.argument=m_arg;\ r_error.expected=Variant::REAL;\ - return 0;\ + return;\ } -class VisualScriptNodeInstanceBuiltinFunc : public VisualScriptNodeInstance { -public: - VisualScriptBuiltinFunc *node; - VisualScriptInstance *instance; +void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func,const Variant** p_inputs,Variant* r_return,Variant::CallError& r_error,String& r_error_str) { - VisualScriptBuiltinFunc::BuiltinFunc func; + switch(p_func) { + case VisualScriptBuiltinFunc::MATH_SIN: { + VALIDATE_ARG_NUM(0); + *r_return=Math::sin(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_COS: { - //virtual int get_working_memory_size() const { return 0; } - //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } - //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; } + VALIDATE_ARG_NUM(0); + *r_return=Math::cos(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_TAN: { - virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + VALIDATE_ARG_NUM(0); + *r_return=Math::tan(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_SINH: { - switch(func) { - case VisualScriptBuiltinFunc::MATH_SIN: { + VALIDATE_ARG_NUM(0); + *r_return=Math::sinh(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_COSH: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::sin(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_COS: { + VALIDATE_ARG_NUM(0); + *r_return=Math::cosh(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_TANH: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::cos(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_TAN: { + VALIDATE_ARG_NUM(0); + *r_return=Math::tanh(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ASIN: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::tan(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_SINH: { + VALIDATE_ARG_NUM(0); + *r_return=Math::asin(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ACOS: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::sinh(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_COSH: { + VALIDATE_ARG_NUM(0); + *r_return=Math::acos(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ATAN: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::cosh(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_TANH: { + VALIDATE_ARG_NUM(0); + *r_return=Math::atan(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ATAN2: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::tanh(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ASIN: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + *r_return=Math::atan2(*p_inputs[0],*p_inputs[1]); + } break; + case VisualScriptBuiltinFunc::MATH_SQRT: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::asin(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ACOS: { + VALIDATE_ARG_NUM(0); + *r_return=Math::sqrt(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_FMOD: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::acos(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ATAN: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + *r_return=Math::fmod(*p_inputs[0],*p_inputs[1]); + } break; + case VisualScriptBuiltinFunc::MATH_FPOSMOD: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::atan(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ATAN2: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + *r_return=Math::fposmod(*p_inputs[0],*p_inputs[1]); + } break; + case VisualScriptBuiltinFunc::MATH_FLOOR: { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - *p_outputs[0]=Math::atan2(*p_inputs[0],*p_inputs[1]); - } break; - case VisualScriptBuiltinFunc::MATH_SQRT: { + VALIDATE_ARG_NUM(0); + *r_return=Math::floor(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_CEIL: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::sqrt(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_FMOD: { + VALIDATE_ARG_NUM(0); + *r_return=Math::ceil(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ROUND: { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - *p_outputs[0]=Math::fmod(*p_inputs[0],*p_inputs[1]); - } break; - case VisualScriptBuiltinFunc::MATH_FPOSMOD: { + VALIDATE_ARG_NUM(0); + *r_return=Math::round(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ABS: { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - *p_outputs[0]=Math::fposmod(*p_inputs[0],*p_inputs[1]); - } break; - case VisualScriptBuiltinFunc::MATH_FLOOR: { + if (p_inputs[0]->get_type()==Variant::INT) { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::floor(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_CEIL: { + int64_t i = *p_inputs[0]; + *r_return=ABS(i); + } else if (p_inputs[0]->get_type()==Variant::REAL) { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::ceil(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ROUND: { + real_t r = *p_inputs[0]; + *r_return=Math::abs(r); + } else { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::round(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ABS: { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::REAL; + + } + } break; + case VisualScriptBuiltinFunc::MATH_SIGN: { if (p_inputs[0]->get_type()==Variant::INT) { int64_t i = *p_inputs[0]; - *p_outputs[0]=ABS(i); + *r_return= i < 0 ? -1 : ( i > 0 ? +1 : 0); } else if (p_inputs[0]->get_type()==Variant::REAL) { real_t r = *p_inputs[0]; - *p_outputs[0]=Math::abs(r); + *r_return= r < 0.0 ? -1.0 : ( r > 0.0 ? +1.0 : 0.0); } else { r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; @@ -668,410 +705,412 @@ public: r_error.expected=Variant::REAL; } - } break; - case VisualScriptBuiltinFunc::MATH_SIGN: { + } break; + case VisualScriptBuiltinFunc::MATH_POW: { - if (p_inputs[0]->get_type()==Variant::INT) { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + *r_return=Math::pow(*p_inputs[0],*p_inputs[1]); + } break; + case VisualScriptBuiltinFunc::MATH_LOG: { - int64_t i = *p_inputs[0]; - *p_outputs[0]= i < 0 ? -1 : ( i > 0 ? +1 : 0); - } else if (p_inputs[0]->get_type()==Variant::REAL) { + VALIDATE_ARG_NUM(0); + *r_return=Math::log(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_EXP: { - real_t r = *p_inputs[0]; - *p_outputs[0]= r < 0.0 ? -1.0 : ( r > 0.0 ? +1.0 : 0.0); - } else { + VALIDATE_ARG_NUM(0); + *r_return=Math::exp(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ISNAN: { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::REAL; + VALIDATE_ARG_NUM(0); + *r_return=Math::is_nan(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_ISINF: { - } - } break; - case VisualScriptBuiltinFunc::MATH_POW: { + VALIDATE_ARG_NUM(0); + *r_return=Math::is_inf(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_EASE: { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - *p_outputs[0]=Math::pow(*p_inputs[0],*p_inputs[1]); - } break; - case VisualScriptBuiltinFunc::MATH_LOG: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + *r_return=Math::ease(*p_inputs[0],*p_inputs[1]); + } break; + case VisualScriptBuiltinFunc::MATH_DECIMALS: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::log(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_EXP: { + VALIDATE_ARG_NUM(0); + *r_return=Math::step_decimals(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_STEPIFY: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::exp(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ISNAN: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + *r_return=Math::stepify(*p_inputs[0],*p_inputs[1]); + } break; + case VisualScriptBuiltinFunc::MATH_LERP: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::is_nan(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_ISINF: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + VALIDATE_ARG_NUM(2); + *r_return=Math::lerp(*p_inputs[0],*p_inputs[1],*p_inputs[2]); + } break; + case VisualScriptBuiltinFunc::MATH_DECTIME: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::is_inf(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_EASE: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + VALIDATE_ARG_NUM(2); + *r_return=Math::dectime(*p_inputs[0],*p_inputs[1],*p_inputs[2]); + } break; + case VisualScriptBuiltinFunc::MATH_RANDOMIZE: { + Math::randomize(); - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - *p_outputs[0]=Math::ease(*p_inputs[0],*p_inputs[1]); - } break; - case VisualScriptBuiltinFunc::MATH_DECIMALS: { + } break; + case VisualScriptBuiltinFunc::MATH_RAND: { + *r_return=Math::rand(); + } break; + case VisualScriptBuiltinFunc::MATH_RANDF: { + *r_return=Math::randf(); + } break; + case VisualScriptBuiltinFunc::MATH_RANDOM: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::step_decimals(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_STEPIFY: { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + *r_return=Math::random(*p_inputs[0],*p_inputs[1]); + } break; + case VisualScriptBuiltinFunc::MATH_SEED: { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - *p_outputs[0]=Math::stepify(*p_inputs[0],*p_inputs[1]); - } break; - case VisualScriptBuiltinFunc::MATH_LERP: { + VALIDATE_ARG_NUM(0); + uint32_t seed=*p_inputs[0]; + Math::seed(seed); - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - VALIDATE_ARG_NUM(2); - *p_outputs[0]=Math::lerp(*p_inputs[0],*p_inputs[1],*p_inputs[2]); - } break; - case VisualScriptBuiltinFunc::MATH_DECTIME: { + } break; + case VisualScriptBuiltinFunc::MATH_RANDSEED: { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - VALIDATE_ARG_NUM(2); - *p_outputs[0]=Math::dectime(*p_inputs[0],*p_inputs[1],*p_inputs[2]); - } break; - case VisualScriptBuiltinFunc::MATH_RANDOMIZE: { - Math::randomize(); - - } break; - case VisualScriptBuiltinFunc::MATH_RAND: { - *p_outputs[0]=Math::rand(); - } break; - case VisualScriptBuiltinFunc::MATH_RANDF: { - *p_outputs[0]=Math::randf(); - } break; - case VisualScriptBuiltinFunc::MATH_RANDOM: { + VALIDATE_ARG_NUM(0); + uint32_t seed=*p_inputs[0]; + int ret = Math::rand_from_seed(&seed); + Array reta; + reta.push_back(ret); + reta.push_back(seed); + *r_return=reta; - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - *p_outputs[0]=Math::random(*p_inputs[0],*p_inputs[1]); - } break; - case VisualScriptBuiltinFunc::MATH_SEED: { + } break; + case VisualScriptBuiltinFunc::MATH_DEG2RAD: { - VALIDATE_ARG_NUM(0); - uint32_t seed=*p_inputs[0]; - Math::seed(seed); + VALIDATE_ARG_NUM(0); + *r_return=Math::deg2rad(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_RAD2DEG: { + + VALIDATE_ARG_NUM(0); + *r_return=Math::rad2deg(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_LINEAR2DB: { - } break; - case VisualScriptBuiltinFunc::MATH_RANDSEED: { + VALIDATE_ARG_NUM(0); + *r_return=Math::linear2db(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_DB2LINEAR: { - VALIDATE_ARG_NUM(0); - uint32_t seed=*p_inputs[0]; - int ret = Math::rand_from_seed(&seed); - Array reta; - reta.push_back(ret); - reta.push_back(seed); - *p_outputs[0]=reta; + VALIDATE_ARG_NUM(0); + *r_return=Math::db2linear(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::LOGIC_MAX: { - } break; - case VisualScriptBuiltinFunc::MATH_DEG2RAD: { + if (p_inputs[0]->get_type()==Variant::INT && p_inputs[1]->get_type()==Variant::INT) { + int64_t a = *p_inputs[0]; + int64_t b = *p_inputs[1]; + *r_return=MAX(a,b); + } else { VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::deg2rad(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_RAD2DEG: { + VALIDATE_ARG_NUM(1); - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::rad2deg(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_LINEAR2DB: { + real_t a = *p_inputs[0]; + real_t b = *p_inputs[1]; - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::linear2db(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_DB2LINEAR: { + *r_return=MAX(a,b); + } + + } break; + case VisualScriptBuiltinFunc::LOGIC_MIN: { + if (p_inputs[0]->get_type()==Variant::INT && p_inputs[1]->get_type()==Variant::INT) { + + int64_t a = *p_inputs[0]; + int64_t b = *p_inputs[1]; + *r_return=MIN(a,b); + } else { VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::db2linear(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::LOGIC_MAX: { + VALIDATE_ARG_NUM(1); - if (p_inputs[0]->get_type()==Variant::INT && p_inputs[1]->get_type()==Variant::INT) { + real_t a = *p_inputs[0]; + real_t b = *p_inputs[1]; - int64_t a = *p_inputs[0]; - int64_t b = *p_inputs[1]; - *p_outputs[0]=MAX(a,b); - } else { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); + *r_return=MIN(a,b); + } + } break; + case VisualScriptBuiltinFunc::LOGIC_CLAMP: { - real_t a = *p_inputs[0]; - real_t b = *p_inputs[1]; + if (p_inputs[0]->get_type()==Variant::INT && p_inputs[1]->get_type()==Variant::INT && p_inputs[2]->get_type()==Variant::INT) { - *p_outputs[0]=MAX(a,b); - } + int64_t a = *p_inputs[0]; + int64_t b = *p_inputs[1]; + int64_t c = *p_inputs[2]; + *r_return=CLAMP(a,b,c); + } else { + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + VALIDATE_ARG_NUM(2); - } break; - case VisualScriptBuiltinFunc::LOGIC_MIN: { + real_t a = *p_inputs[0]; + real_t b = *p_inputs[1]; + real_t c = *p_inputs[2]; - if (p_inputs[0]->get_type()==Variant::INT && p_inputs[1]->get_type()==Variant::INT) { + *r_return=CLAMP(a,b,c); + } + } break; + case VisualScriptBuiltinFunc::LOGIC_NEAREST_PO2: { - int64_t a = *p_inputs[0]; - int64_t b = *p_inputs[1]; - *p_outputs[0]=MIN(a,b); - } else { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); + VALIDATE_ARG_NUM(0); + int64_t num = *p_inputs[0]; + *r_return = nearest_power_of_2(num); + } break; + case VisualScriptBuiltinFunc::OBJ_WEAKREF: { - real_t a = *p_inputs[0]; - real_t b = *p_inputs[1]; + if (p_inputs[0]->get_type()!=Variant::OBJECT) { - *p_outputs[0]=MIN(a,b); - } - } break; - case VisualScriptBuiltinFunc::LOGIC_CLAMP: { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::OBJECT; - if (p_inputs[0]->get_type()==Variant::INT && p_inputs[1]->get_type()==Variant::INT && p_inputs[2]->get_type()==Variant::INT) { + return; - int64_t a = *p_inputs[0]; - int64_t b = *p_inputs[1]; - int64_t c = *p_inputs[2]; - *p_outputs[0]=CLAMP(a,b,c); - } else { - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - VALIDATE_ARG_NUM(2); + } + + if (p_inputs[0]->is_ref()) { - real_t a = *p_inputs[0]; - real_t b = *p_inputs[1]; - real_t c = *p_inputs[2]; + REF r = *p_inputs[0]; + if (!r.is_valid()) { - *p_outputs[0]=CLAMP(a,b,c); + return; } - } break; - case VisualScriptBuiltinFunc::LOGIC_NEAREST_PO2: { - VALIDATE_ARG_NUM(0); - int64_t num = *p_inputs[0]; - *p_outputs[0] = nearest_power_of_2(num); - } break; - case VisualScriptBuiltinFunc::OBJ_WEAKREF: { + Ref<WeakRef> wref = memnew( WeakRef ); + wref->set_ref(r); + *r_return=wref; + } else { + Object *obj = *p_inputs[0]; + if (!obj) { - if (p_inputs[0]->get_type()!=Variant::OBJECT) { + return; + } + Ref<WeakRef> wref = memnew( WeakRef ); + wref->set_obj(obj); + *r_return=wref; + } - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::OBJECT; - return 0; - } - if (p_inputs[0]->is_ref()) { + } break; + case VisualScriptBuiltinFunc::FUNC_FUNCREF: { - REF r = *p_inputs[0]; - if (!r.is_valid()) { + if (p_inputs[0]->get_type()!=Variant::OBJECT) { - return 0; - } + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::OBJECT; - Ref<WeakRef> wref = memnew( WeakRef ); - wref->set_ref(r); - *p_outputs[0]=wref; - } else { - Object *obj = *p_inputs[0]; - if (!obj) { - - return 0; - } - Ref<WeakRef> wref = memnew( WeakRef ); - wref->set_obj(obj); - *p_outputs[0]=wref; - } + return; + } + if (p_inputs[1]->get_type()!=Variant::STRING && p_inputs[1]->get_type()!=Variant::NODE_PATH) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=1; + r_error.expected=Variant::STRING; + return; - } break; - case VisualScriptBuiltinFunc::FUNC_FUNCREF: { + } - if (p_inputs[0]->get_type()!=Variant::OBJECT) { + Ref<FuncRef> fr = memnew( FuncRef); - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::OBJECT; + fr->set_instance(*p_inputs[0]); + fr->set_function(*p_inputs[1]); - return 0; + *r_return=fr; - } - if (p_inputs[1]->get_type()!=Variant::STRING && p_inputs[1]->get_type()!=Variant::NODE_PATH) { + } break; + case VisualScriptBuiltinFunc::TYPE_CONVERT: { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=1; - r_error.expected=Variant::STRING; + VALIDATE_ARG_NUM(1); + int type=*p_inputs[1]; + if (type<0 || type>=Variant::VARIANT_MAX) { - return 0; + r_error_str=RTR("Invalid type argument to convert(), use TYPE_* constants."); + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::INT; + return; + + } else { - } - Ref<FuncRef> fr = memnew( FuncRef); + *r_return=Variant::construct(Variant::Type(type),p_inputs,1,r_error); + } + } break; + case VisualScriptBuiltinFunc::TYPE_OF: { - fr->set_instance(*p_inputs[0]); - fr->set_function(*p_inputs[1]); - *p_outputs[0]=fr; + *r_return = p_inputs[0]->get_type(); - } break; - case VisualScriptBuiltinFunc::TYPE_CONVERT: { + } break; + case VisualScriptBuiltinFunc::TYPE_EXISTS: { - VALIDATE_ARG_NUM(1); - int type=*p_inputs[1]; - if (type<0 || type>=Variant::VARIANT_MAX) { - *p_outputs[0]=RTR("Invalid type argument to convert(), use TYPE_* constants."); - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::INT; - return 0; + *r_return = ObjectTypeDB::type_exists(*p_inputs[0]); - } else { + } break; + case VisualScriptBuiltinFunc::TEXT_STR: { + String str = *p_inputs[0]; - *p_outputs[0]=Variant::construct(Variant::Type(type),p_inputs,1,r_error); - } - } break; - case VisualScriptBuiltinFunc::TYPE_OF: { + *r_return=str; + } break; + case VisualScriptBuiltinFunc::TEXT_PRINT: { - *p_outputs[0] = p_inputs[0]->get_type(); + String str = *p_inputs[0]; + print_line(str); - } break; - case VisualScriptBuiltinFunc::TYPE_EXISTS: { + } break; - *p_outputs[0] = ObjectTypeDB::type_exists(*p_inputs[0]); + case VisualScriptBuiltinFunc::TEXT_PRINTERR: { - } break; - case VisualScriptBuiltinFunc::TEXT_STR: { + String str = *p_inputs[0]; - String str = *p_inputs[0]; + //str+="\n"; + OS::get_singleton()->printerr("%s\n",str.utf8().get_data()); - *p_outputs[0]=str; - } break; - case VisualScriptBuiltinFunc::TEXT_PRINT: { + } break; + case VisualScriptBuiltinFunc::TEXT_PRINTRAW: { + String str = *p_inputs[0]; - String str = *p_inputs[0]; - print_line(str); + //str+="\n"; + OS::get_singleton()->print("%s",str.utf8().get_data()); - } break; + } break; + case VisualScriptBuiltinFunc::VAR_TO_STR: { - case VisualScriptBuiltinFunc::TEXT_PRINTERR: { + String vars; + VariantWriter::write_to_string(*p_inputs[0],vars); + *r_return=vars; + } break; + case VisualScriptBuiltinFunc::STR_TO_VAR: { - String str = *p_inputs[0]; + if (p_inputs[0]->get_type()!=Variant::STRING) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::STRING; - //str+="\n"; - OS::get_singleton()->printerr("%s\n",str.utf8().get_data()); + return; + } + VariantParser::StreamString ss; + ss.s=*p_inputs[0]; - } break; - case VisualScriptBuiltinFunc::TEXT_PRINTRAW: { - String str = *p_inputs[0]; + String errs; + int line; + Error err = VariantParser::parse(&ss,*r_return,errs,line); - //str+="\n"; - OS::get_singleton()->print("%s",str.utf8().get_data()); + if (err!=OK) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::STRING; + *r_return="Parse error at line "+itos(line)+": "+errs; + return; + } + } break; + case VisualScriptBuiltinFunc::VAR_TO_BYTES: { - } break; - case VisualScriptBuiltinFunc::VAR_TO_STR: { - String vars; - VariantWriter::write_to_string(*p_inputs[0],vars); - *p_outputs[0]=vars; - } break; - case VisualScriptBuiltinFunc::STR_TO_VAR: { + ByteArray barr; + int len; + Error err = encode_variant(*p_inputs[0],NULL,len); + if (err) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::NIL; + r_error_str="Unexpected error encoding variable to bytes, likely unserializable type found (Object or RID)."; + return; + } - if (p_inputs[0]->get_type()!=Variant::STRING) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::STRING; + barr.resize(len); + { + ByteArray::Write w = barr.write(); + encode_variant(*p_inputs[0],w.ptr(),len); - return 0; - } + } + *r_return=barr; + } break; + case VisualScriptBuiltinFunc::BYTES_TO_VAR: { - VariantParser::StreamString ss; - ss.s=*p_inputs[0]; + if (p_inputs[0]->get_type()!=Variant::RAW_ARRAY) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::RAW_ARRAY; - String errs; - int line; - Error err = VariantParser::parse(&ss,*p_outputs[0],errs,line); + return; + } + ByteArray varr=*p_inputs[0]; + Variant ret; + { + ByteArray::Read r=varr.read(); + Error err = decode_variant(ret,r.ptr(),varr.size(),NULL); if (err!=OK) { + r_error_str=RTR("Not enough bytes for decoding bytes, or invalid format."); r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument=0; - r_error.expected=Variant::STRING; - *p_outputs[0]="Parse error at line "+itos(line)+": "+errs; - return 0; + r_error.expected=Variant::RAW_ARRAY; + return; } - } break; - case VisualScriptBuiltinFunc::VAR_TO_BYTES: { + } + *r_return=ret; - ByteArray barr; - int len; - Error err = encode_variant(*p_inputs[0],NULL,len); - if (err) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::NIL; - *p_outputs[0]="Unexpected error encoding variable to bytes, likely unserializable type found (Object or RID)."; - return 0; - } + } break; + default: {} + } - barr.resize(len); - { - ByteArray::Write w = barr.write(); - encode_variant(*p_inputs[0],w.ptr(),len); +} - } - *p_outputs[0]=barr; - } break; - case VisualScriptBuiltinFunc::BYTES_TO_VAR: { - if (p_inputs[0]->get_type()!=Variant::RAW_ARRAY) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::RAW_ARRAY; +class VisualScriptNodeInstanceBuiltinFunc : public VisualScriptNodeInstance { +public: - return 0; - } + VisualScriptBuiltinFunc *node; + VisualScriptInstance *instance; - ByteArray varr=*p_inputs[0]; - Variant ret; - { - ByteArray::Read r=varr.read(); - Error err = decode_variant(ret,r.ptr(),varr.size(),NULL); - if (err!=OK) { - *p_outputs[0]=RTR("Not enough bytes for decoding bytes, or invalid format."); - r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; - r_error.argument=0; - r_error.expected=Variant::RAW_ARRAY; - return 0; - } + VisualScriptBuiltinFunc::BuiltinFunc func; - } - *p_outputs[0]=ret; + //virtual int get_working_memory_size() const { return 0; } + //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } + //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - } break; - default: {} - } + VisualScriptBuiltinFunc::exec_func(func,p_inputs,p_outputs[0],r_error,r_error_str); return 0; } diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h index ebf227a192..000230d84f 100644 --- a/modules/visual_script/visual_script_builtin_funcs.h +++ b/modules/visual_script/visual_script_builtin_funcs.h @@ -68,6 +68,11 @@ public: FUNC_MAX }; + static int get_func_argument_count(BuiltinFunc p_func); + static String get_func_name(BuiltinFunc p_func); + static void exec_func(BuiltinFunc p_func, const Variant** p_inputs, Variant* r_return, Variant::CallError& r_error, String& r_error_str); + static BuiltinFunc find_function(const String& p_string); + private: static const char* func_name[FUNC_MAX]; BuiltinFunc func; diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index 412865fbfe..acdcec7ae5 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -3,7 +3,9 @@ #include "visual_script_nodes.h" #include "visual_script_flow_control.h" #include "visual_script_func_nodes.h" +#include "visual_script_expression.h" #include "os/input.h" +#include "tools/editor/editor_resource_preview.h" #include "os/keyboard.h" #ifdef TOOLS_ENABLED @@ -241,6 +243,11 @@ protected: return true; } + if (String(p_name)=="export") { + script->set_variable_export(var,p_value); + return true; + } + return false; } @@ -270,6 +277,11 @@ protected: return true; } + if (String(p_name)=="export") { + r_ret=script->get_variable_export(var); + return true; + } + return false; } void _get_property_list( List<PropertyInfo> *p_list) const { @@ -285,6 +297,7 @@ protected: p_list->push_back(PropertyInfo(script->get_variable_info(var).type,"value",script->get_variable_info(var).hint,script->get_variable_info(var).hint_string,PROPERTY_USAGE_DEFAULT)); p_list->push_back(PropertyInfo(Variant::INT,"hint",PROPERTY_HINT_ENUM,"None,Range,ExpRange,Enum,ExpEasing,Length,SpriteFrame,KeyAccel,BitFlags,AllFlags,File,Dir,GlobalFile,GlobalDir,ResourceType,MultilineText")); p_list->push_back(PropertyInfo(Variant::STRING,"hint_string")); + p_list->push_back(PropertyInfo(Variant::BOOL,"export")); } @@ -301,9 +314,45 @@ public: }; static Color _color_from_type(Variant::Type p_type) { - Color color; - color.set_hsv(p_type/float(Variant::VARIANT_MAX),0.7,0.7); + switch(p_type) { + case Variant::NIL: color = Color::html("69ecbd"); break; + + case Variant::BOOL: color = Color::html("8da6f0"); break; + case Variant::INT: color = Color::html("7dc6ef"); break; + case Variant::REAL: color = Color::html("61daf4"); break; + case Variant::STRING: color = Color::html("6ba7ec"); break; + + case Variant::VECTOR2: color = Color::html("bd91f1"); break; + case Variant::RECT2: color = Color::html("f191a5"); break; + case Variant::VECTOR3: color = Color::html("d67dee"); break; + case Variant::MATRIX32: color = Color::html("c4ec69"); break; + case Variant::PLANE: color = Color::html("f77070"); break; + case Variant::QUAT: color = Color::html("ec69a3"); break; + case Variant::_AABB: color = Color::html("ee7991"); break; + case Variant::MATRIX3: color = Color::html("e3ec69"); break; + case Variant::TRANSFORM: color = Color::html("ecd669"); break; + + case Variant::COLOR: color = Color::html("9dff70"); break; + case Variant::IMAGE: color = Color::html("93f1b9"); break; + case Variant::NODE_PATH: color = Color::html("6993ec"); break; + case Variant::_RID: color = Color::html("69ec9a"); break; + case Variant::OBJECT: color = Color::html("79f3e8"); break; + case Variant::INPUT_EVENT: color = Color::html("adf18f"); break; + case Variant::DICTIONARY: color = Color::html("77edb1"); break; + + case Variant::ARRAY: color = Color::html("e0e0e0"); break; + case Variant::RAW_ARRAY: color = Color::html("aaf4c8"); break; + case Variant::INT_ARRAY: color = Color::html("afdcf5"); break; + case Variant::REAL_ARRAY: color = Color::html("97e7f8"); break; + case Variant::STRING_ARRAY: color = Color::html("9dc4f2"); break; + case Variant::VECTOR2_ARRAY: color = Color::html("d1b3f5"); break; + case Variant::VECTOR3_ARRAY: color = Color::html("df9bf2"); break; + case Variant::COLOR_ARRAY: color = Color::html("e9ff97"); break; + + default: + color.set_hsv(p_type/float(Variant::VARIANT_MAX),0.7,0.7); + } return color; } @@ -347,6 +396,8 @@ void VisualScriptEditor::_update_graph_connections() { void VisualScriptEditor::_update_graph(int p_only_id) { + if (updating_graph) + return; updating_graph=true; @@ -387,7 +438,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) { Control::get_icon("MiniVector2","EditorIcons"), Control::get_icon("MiniRect2","EditorIcons"), Control::get_icon("MiniVector3","EditorIcons"), - Control::get_icon("MiniMatrix2","EditorIcons"), + Control::get_icon("MiniMatrix32","EditorIcons"), Control::get_icon("MiniPlane","EditorIcons"), Control::get_icon("MiniQuat","EditorIcons"), Control::get_icon("MiniAabb","EditorIcons"), @@ -438,6 +489,8 @@ void VisualScriptEditor::_update_graph(int p_only_id) { gnode->set_modulate(EditorSettings::get_singleton()->get("visual_script_editor/color_"+node->get_category())); } + + gnode->set_meta("__vnode",node); gnode->set_name(itos(E->get())); gnode->connect("dragged",this,"_node_moved",varray(E->get())); @@ -449,9 +502,31 @@ void VisualScriptEditor::_update_graph(int p_only_id) { gnode->set_show_close_button(true); } - Label *text = memnew( Label ); - text->set_text(node->get_text()); - gnode->add_child(text); + + if (node->cast_to<VisualScriptExpression>()) { + + LineEdit *line_edit = memnew( LineEdit ); + line_edit->set_text(node->get_text()); + line_edit->set_expand_to_text_length(true); + line_edit->add_font_override("font",get_font("source","EditorFonts")); + gnode->add_child(line_edit); + line_edit->connect("text_changed",this,"_expression_text_changed",varray(E->get())); + } else { + Label *text = memnew( Label ); + text->set_text(node->get_text()); + gnode->add_child(text); + } + + + if (node->cast_to<VisualScriptComment>()) { + Ref<VisualScriptComment> vsc=node; + gnode->set_comment(true); + gnode->set_resizeable(true); + gnode->set_custom_minimum_size(vsc->get_size()*EDSCALE); + gnode->connect("resize_request",this,"_comment_node_resized",varray(E->get())); + + } + int slot_idx=0; @@ -460,24 +535,34 @@ void VisualScriptEditor::_update_graph(int p_only_id) { gnode->set_offset(pos*EDSCALE); slot_idx++; + + int mixed_seq_ports=0; + if (!single_seq_output) { - for(int i=0;i<node->get_output_sequence_port_count();i++) { - Label *text2 = memnew( Label ); - text2->set_text(node->get_output_sequence_port_text(i)); - text2->set_align(Label::ALIGN_RIGHT); - gnode->add_child(text2); - gnode->set_slot(slot_idx,false,0,Color(),true,TYPE_SEQUENCE,Color(1,1,1,1),seq_port,seq_port); - slot_idx++; + if (node->has_mixed_input_and_sequence_ports()) { + mixed_seq_ports=node->get_output_sequence_port_count(); + } else { + for(int i=0;i<node->get_output_sequence_port_count();i++) { + + Label *text2 = memnew( Label ); + text2->set_text(node->get_output_sequence_port_text(i)); + text2->set_align(Label::ALIGN_RIGHT); + gnode->add_child(text2); + gnode->set_slot(slot_idx,false,0,Color(),true,TYPE_SEQUENCE,Color(1,1,1,1),seq_port,seq_port); + slot_idx++; + } } } - for(int i=0;i<MAX(node->get_output_value_port_count(),node->get_input_value_port_count());i++) { + for(int i=0;i<MAX(node->get_output_value_port_count(),MAX(mixed_seq_ports,node->get_input_value_port_count()));i++) { bool left_ok=false; Variant::Type left_type=Variant::NIL; String left_name; + + if (i<node->get_input_value_port_count()) { PropertyInfo pi = node->get_input_value_port_info(i); left_ok=true; @@ -489,8 +574,8 @@ void VisualScriptEditor::_update_graph(int p_only_id) { Variant::Type right_type=Variant::NIL; String right_name; - if (i<node->get_output_value_port_count()) { - PropertyInfo pi = node->get_output_value_port_info(i); + if (i>=mixed_seq_ports && i<node->get_output_value_port_count()+mixed_seq_ports) { + PropertyInfo pi = node->get_output_value_port_info(i-mixed_seq_ports); right_ok=true; right_type=pi.type; right_name=pi.name; @@ -514,6 +599,8 @@ void VisualScriptEditor::_update_graph(int p_only_id) { hbc->add_child(memnew(Label(left_name))); if (left_type!=Variant::NIL && !script->is_input_value_port_connected(edited_func,E->get(),i)) { + + PropertyInfo pi = node->get_input_value_port_info(i); Button *button = memnew( Button ); Variant value = node->get_default_input_value(i); if (value.get_type()!=left_type) { @@ -524,7 +611,24 @@ void VisualScriptEditor::_update_graph(int p_only_id) { value = Variant::construct(left_type,&existingp,1,ce,false); } - button->set_text(value); + if (left_type==Variant::COLOR) { + button->set_custom_minimum_size(Size2(30,0)*EDSCALE); + button->connect("draw",this,"_draw_color_over_button",varray(button,value)); + } else if (left_type==Variant::OBJECT && Ref<Resource>(value).is_valid()) { + + Ref<Resource> res = value; + Array arr; + arr.push_back(button->get_instance_ID()); + arr.push_back(String(value)); + EditorResourcePreview::get_singleton()->queue_edited_resource_preview(res,this,"_button_resource_previewed",arr); + + } else if (pi.type==Variant::INT && pi.hint==PROPERTY_HINT_ENUM){ + + button->set_text(pi.hint_string.get_slice(",",value)); + } else { + + button->set_text(value); + } button->connect("pressed",this,"_default_value_edited",varray(button,E->get(),i)); hbc->add_child(button); } @@ -536,6 +640,14 @@ void VisualScriptEditor::_update_graph(int p_only_id) { hbc->add_spacer(); + if (i<mixed_seq_ports) { + + Label *text2 = memnew( Label ); + text2->set_text(node->get_output_sequence_port_text(i)); + text2->set_align(Label::ALIGN_RIGHT); + hbc->add_child(text2); + } + if (right_ok) { hbc->add_child(memnew(Label(right_name))); @@ -555,12 +667,20 @@ void VisualScriptEditor::_update_graph(int p_only_id) { gnode->add_child(hbc); - gnode->set_slot(slot_idx,left_ok,left_type,_color_from_type(left_type),right_ok,right_type,_color_from_type(right_type)); + if (i<mixed_seq_ports) { + gnode->set_slot(slot_idx,left_ok,left_type,_color_from_type(left_type),true,TYPE_SEQUENCE,Color(1,1,1,1),Ref<Texture>(),seq_port); + } else { + gnode->set_slot(slot_idx,left_ok,left_type,_color_from_type(left_type),right_ok,right_type,_color_from_type(right_type)); + } slot_idx++; } graph->add_child(gnode); + + if (gnode->is_comment()) { + graph->move_child(gnode,0); + } } _update_graph_connections(); @@ -608,12 +728,48 @@ void VisualScriptEditor::_update_members() { variables->add_button(0,Control::get_icon("Add","EditorIcons")); variables->set_custom_bg_color(0,Control::get_color("prop_section","Editor")); + Ref<Texture> type_icons[Variant::VARIANT_MAX]={ + Control::get_icon("MiniVariant","EditorIcons"), + Control::get_icon("MiniBoolean","EditorIcons"), + Control::get_icon("MiniInteger","EditorIcons"), + Control::get_icon("MiniFloat","EditorIcons"), + Control::get_icon("MiniString","EditorIcons"), + Control::get_icon("MiniVector2","EditorIcons"), + Control::get_icon("MiniRect2","EditorIcons"), + Control::get_icon("MiniVector3","EditorIcons"), + Control::get_icon("MiniMatrix32","EditorIcons"), + Control::get_icon("MiniPlane","EditorIcons"), + Control::get_icon("MiniQuat","EditorIcons"), + Control::get_icon("MiniAabb","EditorIcons"), + Control::get_icon("MiniMatrix3","EditorIcons"), + Control::get_icon("MiniTransform","EditorIcons"), + Control::get_icon("MiniColor","EditorIcons"), + Control::get_icon("MiniImage","EditorIcons"), + Control::get_icon("MiniPath","EditorIcons"), + Control::get_icon("MiniRid","EditorIcons"), + Control::get_icon("MiniObject","EditorIcons"), + Control::get_icon("MiniInput","EditorIcons"), + Control::get_icon("MiniDictionary","EditorIcons"), + Control::get_icon("MiniArray","EditorIcons"), + Control::get_icon("MiniRawArray","EditorIcons"), + Control::get_icon("MiniIntArray","EditorIcons"), + Control::get_icon("MiniFloatArray","EditorIcons"), + Control::get_icon("MiniStringArray","EditorIcons"), + Control::get_icon("MiniVector2Array","EditorIcons"), + Control::get_icon("MiniVector3Array","EditorIcons"), + Control::get_icon("MiniColorArray","EditorIcons") + }; List<StringName> var_names; script->get_variable_list(&var_names); for (List<StringName>::Element *E=var_names.front();E;E=E->next()) { TreeItem *ti = members->create_item(variables); + ti->set_text(0,E->get()); + Variant var = script->get_variable_default_value(E->get()); + ti->set_suffix(0,"="+String(var)); + ti->set_icon(0,type_icons[script->get_variable_info(E->get()).type]); + ti->set_selectable(0,true); ti->set_editable(0,true); ti->add_button(0,Control::get_icon("Edit","EditorIcons"),0); @@ -1053,6 +1209,30 @@ void VisualScriptEditor::_member_button(Object *p_item, int p_column, int p_butt } } +void VisualScriptEditor::_expression_text_changed(const String& p_text,int p_id) { + + Ref<VisualScriptExpression> vse = script->get_node(edited_func,p_id); + if (!vse.is_valid()) + return; + + + updating_graph=true; + + undo_redo->create_action(TTR("Change Expression"),UndoRedo::MERGE_ENDS); + undo_redo->add_do_property(vse.ptr(),"expression",p_text); + undo_redo->add_undo_property(vse.ptr(),"expression",vse->get("expression")); + undo_redo->add_do_method(this,"_update_graph",p_id); + undo_redo->add_undo_method(this,"_update_graph",p_id); + undo_redo->commit_action(); + + Node *node = graph->get_node(itos(p_id)); + if (node->cast_to<Control>()) + node->cast_to<Control>()->set_size(Vector2(1,1)); //shrink if text is smaller + + updating_graph=false; + +} + void VisualScriptEditor::_available_node_doubleclicked() { TreeItem *item = nodes->get_selected(); @@ -1385,6 +1565,8 @@ bool VisualScriptEditor::can_drop_data_fw(const Point2& p_point,const Variant& p String(d["type"])=="visual_script_variable_drag" || String(d["type"])=="visual_script_signal_drag" || String(d["type"])=="obj_property" || + String(d["type"])=="resource" || + String(d["type"])=="files" || String(d["type"])=="nodes" ) ) { @@ -1392,18 +1574,27 @@ bool VisualScriptEditor::can_drop_data_fw(const Point2& p_point,const Variant& p if (String(d["type"])=="obj_property") { #ifdef OSX_ENABLED - const_cast<VisualScriptEditor*>(this)->_show_hint("Hold Meta to drop a Setter, Shift+Meta to drop a Setter and copy the value."); + const_cast<VisualScriptEditor*>(this)->_show_hint(TTR("Hold Meta to drop a Getter. Hold Shift to drop a generic signature.")); #else - const_cast<VisualScriptEditor*>(this)->_show_hint("Hold Ctrl to drop a Setter, Shift+Ctrl to drop a Setter and copy the value."); + const_cast<VisualScriptEditor*>(this)->_show_hint(TTR("Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature.")); +#endif + } + + if (String(d["type"])=="nodes") { + +#ifdef OSX_ENABLED + const_cast<VisualScriptEditor*>(this)->_show_hint(TTR("Hold Meta to drop a simple reference to the node.")); +#else + const_cast<VisualScriptEditor*>(this)->_show_hint(TTR("Hold Ctrl to drop a simple reference to the node.")); #endif } if (String(d["type"])=="visual_script_variable_drag") { #ifdef OSX_ENABLED - const_cast<VisualScriptEditor*>(this)->_show_hint("Hold Meta to drop a Variable Setter."); + const_cast<VisualScriptEditor*>(this)->_show_hint(TTR("Hold Meta to drop a Variable Setter.")); #else - const_cast<VisualScriptEditor*>(this)->_show_hint("Hold Ctrl to drop a Variable Setter."); + const_cast<VisualScriptEditor*>(this)->_show_hint(TTR("Hold Ctrl to drop a Variable Setter.")); #endif } @@ -1442,6 +1633,8 @@ static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const R #endif + + void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from){ if (p_from==graph) { @@ -1531,15 +1724,17 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat ofs/=EDSCALE; - Ref<VisualScriptScriptCall> vnode; + Ref<VisualScriptFunctionCall> vnode; vnode.instance(); - vnode->set_call_mode(VisualScriptScriptCall::CALL_MODE_SELF); - vnode->set_function(d["function"]); + vnode->set_call_mode(VisualScriptFunctionCall::CALL_MODE_SELF); int new_id = script->get_available_id(); undo_redo->create_action(TTR("Add Node")); undo_redo->add_do_method(script.ptr(),"add_node",edited_func,new_id,vnode,ofs); + undo_redo->add_do_method(vnode.ptr(),"set_base_type",script->get_instance_base_type()); + undo_redo->add_do_method(vnode.ptr(),"set_function",d["function"]); + undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,new_id); undo_redo->add_do_method(this,"_update_graph"); undo_redo->add_undo_method(this,"_update_graph"); @@ -1550,6 +1745,7 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat graph->set_selected(node); _node_selected(node); } + } @@ -1580,8 +1776,90 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat if (node) { graph->set_selected(node); _node_selected(node); + } + } + + if (d.has("type") && String(d["type"])=="resource") { + + Vector2 ofs = graph->get_scroll_ofs() + p_point; + if (graph->is_using_snap()) { + int snap = graph->get_snap(); + ofs = ofs.snapped(Vector2(snap,snap)); + } + + ofs/=EDSCALE; + + Ref<VisualScriptPreload> prnode; + prnode.instance(); + prnode->set_preload(d["resource"]); + + int new_id = script->get_available_id(); + + undo_redo->create_action(TTR("Add Preload Node")); + undo_redo->add_do_method(script.ptr(),"add_node",edited_func,new_id,prnode,ofs); + undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,new_id); + undo_redo->add_do_method(this,"_update_graph"); + undo_redo->add_undo_method(this,"_update_graph"); + undo_redo->commit_action(); + + Node* node = graph->get_node(itos(new_id)); + if (node) { + graph->set_selected(node); + _node_selected(node); + } + } + + if (d.has("type") && String(d["type"])=="files") { + + Vector2 ofs = graph->get_scroll_ofs() + p_point; + if (graph->is_using_snap()) { + int snap = graph->get_snap(); + ofs = ofs.snapped(Vector2(snap,snap)); + } + + ofs/=EDSCALE; + + Array files = d["files"]; + + List<int> new_ids; + int new_id = script->get_available_id(); + + if (files.size()) { + undo_redo->create_action(TTR("Add Preload Node")); + + for(int i=0;i<files.size();i++) { + + Ref<Resource> res = ResourceLoader::load(files[i]); + if (!res.is_valid()) + continue; + + Ref<VisualScriptPreload> prnode; + prnode.instance(); + prnode->set_preload(res); + + undo_redo->add_do_method(script.ptr(),"add_node",edited_func,new_id,prnode,ofs); + undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,new_id); + new_ids.push_back(new_id); + new_id++; + ofs+=Vector2(20,20)*EDSCALE; + } + + + undo_redo->add_do_method(this,"_update_graph"); + undo_redo->add_undo_method(this,"_update_graph"); + undo_redo->commit_action(); + } + + for(List<int>::Element *E=new_ids.front();E;E=E->next()) { + + Node* node = graph->get_node(itos(E->get())); + if (node) { + graph->set_selected(node); + _node_selected(node); + } } } + if (d.has("type") && String(d["type"])=="nodes") { Node* sn = _find_script_node(get_tree()->get_edited_scene_root(),get_tree()->get_edited_scene_root(),script); @@ -1592,6 +1870,14 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat return; } + +#ifdef OSX_ENABLED + bool use_node = Input::get_singleton()->is_key_pressed(KEY_META); +#else + bool use_node = Input::get_singleton()->is_key_pressed(KEY_CONTROL); +#endif + + Array nodes = d["nodes"]; Vector2 ofs = graph->get_scroll_ofs() + p_point; @@ -1605,6 +1891,10 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat undo_redo->create_action(TTR("Add Node(s) From Tree")); int base_id = script->get_available_id(); + if (nodes.size()>1) { + use_node=true; + } + for(int i=0;i<nodes.size();i++) { NodePath np = nodes[i]; @@ -1613,10 +1903,30 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat continue; } - Ref<VisualScriptSceneNode> scene_node; - scene_node.instance(); - scene_node->set_node_path(sn->get_path_to(node)); - undo_redo->add_do_method(script.ptr(),"add_node",edited_func,base_id,scene_node,ofs); + Ref<VisualScriptNode> n; + + if (use_node) { + Ref<VisualScriptSceneNode> scene_node; + scene_node.instance(); + scene_node->set_node_path(sn->get_path_to(node)); + n=scene_node; + + + } else { + Ref<VisualScriptFunctionCall> call; + call.instance(); + call->set_call_mode(VisualScriptFunctionCall::CALL_MODE_NODE_PATH); + call->set_base_path(sn->get_path_to(node));; + call->set_base_type(node->get_type()); + n=call; + + method_select->select_method_from_instance(node); + selecting_method_id=base_id; + + } + + + undo_redo->add_do_method(script.ptr(),"add_node",edited_func,base_id,n,ofs); undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,base_id); base_id++; @@ -1634,9 +1944,9 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat Node* sn = _find_script_node(get_tree()->get_edited_scene_root(),get_tree()->get_edited_scene_root(),script); - if (!sn) { - //EditorNode::get_singleton()->show_warning("Can't drop properties because script '"+get_name()+"' is not used in this scene."); - //return; + if (!sn && !Input::get_singleton()->is_key_pressed(KEY_SHIFT)) { + EditorNode::get_singleton()->show_warning("Can't drop properties because script '"+get_name()+"' is not used in this scene.\nDrop holding 'Shift' to just copy the signature."); + return; } Object *obj=d["object"]; @@ -1654,36 +1964,33 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat ofs/=EDSCALE; #ifdef OSX_ENABLED - bool use_set = Input::get_singleton()->is_key_pressed(KEY_META); + bool use_get = Input::get_singleton()->is_key_pressed(KEY_META); #else - bool use_set = Input::get_singleton()->is_key_pressed(KEY_CONTROL); + bool use_get = Input::get_singleton()->is_key_pressed(KEY_CONTROL); #endif - bool use_value = Input::get_singleton()->is_key_pressed(KEY_SHIFT); - - if (!node) { + if (!node || Input::get_singleton()->is_key_pressed(KEY_SHIFT)) { - if (use_set) - undo_redo->create_action(TTR("Add Setter Property")); - else + if (use_get) undo_redo->create_action(TTR("Add Getter Property")); + else + undo_redo->create_action(TTR("Add Setter Property")); int base_id = script->get_available_id(); Ref<VisualScriptNode> vnode; - if (use_set) { + if (!use_get) { Ref<VisualScriptPropertySet> pset; pset.instance(); pset->set_call_mode(VisualScriptPropertySet::CALL_MODE_INSTANCE); pset->set_base_type(obj->get_type()); - pset->set_property(d["property"]); - if (use_value) { + /*if (use_value) { pset->set_use_builtin_value(true); pset->set_builtin_value(d["value"]); - } + }*/ vnode=pset; } else { @@ -1691,12 +1998,17 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat pget.instance(); pget->set_call_mode(VisualScriptPropertyGet::CALL_MODE_INSTANCE); pget->set_base_type(obj->get_type()); - pget->set_property(d["property"]); + vnode=pget; } undo_redo->add_do_method(script.ptr(),"add_node",edited_func,base_id,vnode,ofs); + undo_redo->add_do_method(vnode.ptr(),"set_property",d["property"]); + if (!use_get) { + undo_redo->add_do_method(vnode.ptr(),"set_default_input_value",0,d["value"]); + } + undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,base_id); undo_redo->add_do_method(this,"_update_graph"); @@ -1707,25 +2019,24 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat - if (use_set) - undo_redo->create_action(TTR("Add Setter Property")); - else + if (use_get) undo_redo->create_action(TTR("Add Getter Property")); + else + undo_redo->create_action(TTR("Add Setter Property")); int base_id = script->get_available_id(); Ref<VisualScriptNode> vnode; - if (use_set) { + if (!use_get) { Ref<VisualScriptPropertySet> pset; pset.instance(); - pset->set_call_mode(VisualScriptPropertySet::CALL_MODE_NODE_PATH); - pset->set_base_path(sn->get_path_to(sn)); - pset->set_property(d["property"]); - if (use_value) { - pset->set_use_builtin_value(true); - pset->set_builtin_value(d["value"]); + if (sn==node) { + pset->set_call_mode(VisualScriptPropertySet::CALL_MODE_SELF); + } else { + pset->set_call_mode(VisualScriptPropertySet::CALL_MODE_NODE_PATH); + pset->set_base_path(sn->get_path_to(node)); } vnode=pset; @@ -1733,13 +2044,20 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat Ref<VisualScriptPropertyGet> pget; pget.instance(); - pget->set_call_mode(VisualScriptPropertyGet::CALL_MODE_NODE_PATH); - pget->set_base_path(sn->get_path_to(sn)); - pget->set_property(d["property"]); + if (sn==node) { + pget->set_call_mode(VisualScriptPropertyGet::CALL_MODE_SELF); + } else { + pget->set_call_mode(VisualScriptPropertyGet::CALL_MODE_NODE_PATH); + pget->set_base_path(sn->get_path_to(node)); + } vnode=pget; } undo_redo->add_do_method(script.ptr(),"add_node",edited_func,base_id,vnode,ofs); + undo_redo->add_do_method(vnode.ptr(),"set_property",d["property"]); + if (!use_get) { + undo_redo->add_do_method(vnode.ptr(),"set_default_input_value",0,d["value"]); + } undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,base_id); undo_redo->add_do_method(this,"_update_graph"); @@ -1757,6 +2075,50 @@ void VisualScriptEditor::drop_data_fw(const Point2& p_point,const Variant& p_dat } +void VisualScriptEditor::_selected_method(const String& p_method) { + + Ref<VisualScriptFunctionCall> vsfc = script->get_node(edited_func,selecting_method_id); + if (!vsfc.is_valid()) + return; + vsfc->set_function(p_method); + +} + +void VisualScriptEditor::_draw_color_over_button(Object* obj,Color p_color) { + + Button *button = obj->cast_to<Button>(); + if (!button) + return; + + Ref<StyleBox> normal = get_stylebox("normal","Button" ); + button->draw_rect(Rect2(normal->get_offset(),button->get_size()-normal->get_minimum_size()),p_color); + +} + +void VisualScriptEditor::_button_resource_previewed(const String& p_path,const Ref<Texture>& p_preview,Variant p_ud) { + + + Array ud=p_ud; + ERR_FAIL_COND(ud.size()!=2); + + ObjectID id = ud[0]; + Object *obj = ObjectDB::get_instance(id); + + if (!obj) + return; + + Button *b = obj->cast_to<Button>(); + ERR_FAIL_COND(!b); + + if (p_preview.is_null()) { + b->set_text(ud[1]); + } else { + + b->set_icon(p_preview); + } + +} + ///////////////////////// @@ -1821,7 +2183,8 @@ Ref<Texture> VisualScriptEditor::get_icon(){ bool VisualScriptEditor::is_unsaved(){ #ifdef TOOLS_ENABLED - return script->is_edited(); + + return script->is_edited() || script->are_subnodes_edited(); #else return false; #endif @@ -2251,6 +2614,320 @@ void VisualScriptEditor::_graph_disconnected(const String& p_from,int p_from_slo } + +void VisualScriptEditor::_graph_connect_to_empty(const String& p_from,int p_from_slot,const Vector2& p_release_pos) { + + Node* node = graph->get_node(p_from); + if (!node) + return; + + GraphNode *gn = node->cast_to<GraphNode>(); + if (!gn) + return; + + Ref<VisualScriptNode> vsn = script->get_node(edited_func,p_from.to_int()); + if (!vsn.is_valid()) + return; + + if (p_from_slot<vsn->get_output_sequence_port_count()) { + + port_action_popup->clear(); + port_action_popup->add_item(TTR("Condition"),CREATE_COND); + port_action_popup->add_item(TTR("Sequence"),CREATE_SEQUENCE); + port_action_popup->add_item(TTR("Switch"),CREATE_SWITCH); + port_action_popup->add_item(TTR("Iterator"),CREATE_ITERATOR); + port_action_popup->add_item(TTR("While"),CREATE_WHILE); + port_action_popup->add_item(TTR("Return"),CREATE_RETURN); + + port_action_node=p_from.to_int(); + port_action_output=p_from_slot; + + } else { + port_action_popup->clear(); + port_action_popup->add_item(TTR("Call"),CREATE_CALL); + port_action_popup->add_item(TTR("Get"),CREATE_GET); + port_action_popup->add_item(TTR("Set"),CREATE_SET); + + + port_action_output=p_from_slot-vsn->get_output_sequence_port_count(); + port_action_node=p_from.to_int(); + + + } + + port_action_pos=p_release_pos; + port_action_popup->set_size(Size2(1,1)); + port_action_popup->set_pos(graph->get_global_pos()+p_release_pos); + port_action_popup->popup(); +} + +VisualScriptNode::TypeGuess VisualScriptEditor::_guess_output_type(int p_node,int p_output,Set<int> &visited_nodes) { + + + VisualScriptNode::TypeGuess tg; + tg.type=Variant::NIL; + + if (visited_nodes.has(p_node)) + return tg; //no loop + + visited_nodes.insert(p_node); + + Ref<VisualScriptNode> node = script->get_node(edited_func,p_node); + + if (!node.is_valid()) { + + return tg; + } + + Vector<VisualScriptNode::TypeGuess> in_guesses; + + for(int i=0;i<node->get_input_value_port_count();i++) { + PropertyInfo pi = node->get_input_value_port_info(i); + VisualScriptNode::TypeGuess g; + g.type=pi.type; + + if (g.type==Variant::NIL || g.type==Variant::OBJECT) { + //any or object input, must further guess what this is + int from_node; + int from_port; + + if (script->get_input_value_port_connection_source(edited_func,p_node,i,&from_node,&from_port)) { + + g = _guess_output_type(from_node,from_port,visited_nodes); + } else { + Variant defval = node->get_default_input_value(i); + if (defval.get_type()==Variant::OBJECT) { + + Object *obj = defval; + + if (obj) { + + g.type=Variant::OBJECT; + g.obj_type=obj->get_type(); + g.script=obj->get_script(); + } + } + } + + } + + in_guesses.push_back(g); + } + + return node->guess_output_type(in_guesses.ptr(),p_output); +} + +void VisualScriptEditor::_port_action_menu(int p_option) { + + Vector2 ofs = graph->get_scroll_ofs() + port_action_pos; + if (graph->is_using_snap()) { + int snap = graph->get_snap(); + ofs = ofs.snapped(Vector2(snap,snap)); + } + ofs/=EDSCALE; + + bool seq_connect=false; + + Ref<VisualScriptNode> vnode; + Set<int> vn; + + switch(p_option) { + + case CREATE_CALL: { + + Ref<VisualScriptFunctionCall> n; + n.instance(); + vnode=n; + + VisualScriptNode::TypeGuess tg = _guess_output_type(port_action_node,port_action_output,vn); + + if (tg.type==Variant::OBJECT) { + n->set_call_mode(VisualScriptFunctionCall::CALL_MODE_INSTANCE); + + if (tg.obj_type!=StringName()) { + n->set_base_type(tg.obj_type); + } else { + n->set_base_type("Object"); + } + + if (tg.script.is_valid()) { + n->set_base_script(tg.script->get_path()); + new_connect_node_select->select_method_from_script(tg.script); + } else { + new_connect_node_select->select_method_from_base_type(n->get_base_type()); + } + + + } else { + n->set_call_mode(VisualScriptFunctionCall::CALL_MODE_BASIC_TYPE); + n->set_basic_type(tg.type); + new_connect_node_select->select_method_from_basic_type(tg.type); + } + + + + } break; + case CREATE_SET: { + + Ref<VisualScriptPropertySet> n; + n.instance(); + vnode=n; + + + VisualScriptNode::TypeGuess tg = _guess_output_type(port_action_node,port_action_output,vn); + + if (tg.type==Variant::OBJECT) { + n->set_call_mode(VisualScriptPropertySet::CALL_MODE_INSTANCE); + + if (tg.obj_type!=StringName()) { + n->set_base_type(tg.obj_type); + } else { + n->set_base_type("Object"); + } + + if (tg.script.is_valid()) { + n->set_base_script(tg.script->get_path()); + new_connect_node_select->select_property_from_script(tg.script); + } else { + new_connect_node_select->select_property_from_base_type(n->get_base_type()); + } + + + } else { + n->set_call_mode(VisualScriptPropertySet::CALL_MODE_BASIC_TYPE); + n->set_basic_type(tg.type); + new_connect_node_select->select_property_from_basic_type(tg.type,tg.ev_type); + } + } break; + case CREATE_GET: { + + Ref<VisualScriptPropertyGet> n; + n.instance(); + vnode=n; + + VisualScriptNode::TypeGuess tg = _guess_output_type(port_action_node,port_action_output,vn); + + if (tg.type==Variant::OBJECT) { + n->set_call_mode(VisualScriptPropertyGet::CALL_MODE_INSTANCE); + + if (tg.obj_type!=StringName()) { + n->set_base_type(tg.obj_type); + } else { + n->set_base_type("Object"); + } + + if (tg.script.is_valid()) { + n->set_base_script(tg.script->get_path()); + new_connect_node_select->select_property_from_script(tg.script); + } else { + new_connect_node_select->select_property_from_base_type(n->get_base_type()); + } + + + } else { + n->set_call_mode(VisualScriptPropertyGet::CALL_MODE_BASIC_TYPE); + n->set_basic_type(tg.type); + new_connect_node_select->select_property_from_basic_type(tg.type,tg.ev_type); + } + + } break; + case CREATE_COND: { + + Ref<VisualScriptCondition> n; + n.instance(); + vnode=n; + seq_connect=true; + + } break; + case CREATE_SEQUENCE: { + + Ref<VisualScriptSequence> n; + n.instance(); + vnode=n; + seq_connect=true; + + } break; + case CREATE_SWITCH: { + + Ref<VisualScriptSwitch> n; + n.instance(); + vnode=n; + seq_connect=true; + + } break; + case CREATE_ITERATOR: { + + Ref<VisualScriptIterator> n; + n.instance(); + vnode=n; + seq_connect=true; + + } break; + case CREATE_WHILE: { + + Ref<VisualScriptWhile> n; + n.instance(); + vnode=n; + seq_connect=true; + + } break; + case CREATE_RETURN: { + + Ref<VisualScriptReturn> n; + n.instance(); + vnode=n; + seq_connect=true; + + } break; + + } + + int new_id = script->get_available_id(); + undo_redo->create_action(TTR("Add Node")); + undo_redo->add_do_method(script.ptr(),"add_node",edited_func,new_id,vnode,ofs); + if (seq_connect) { + undo_redo->add_do_method(script.ptr(),"sequence_connect",edited_func,port_action_node,port_action_output,new_id); + } + undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,new_id); + undo_redo->add_do_method(this,"_update_graph",new_id); + undo_redo->add_undo_method(this,"_update_graph",new_id); + undo_redo->commit_action(); + + port_action_new_node=new_id; + +} + +void VisualScriptEditor::_selected_connect_node_method_or_setget(const String& p_text) { + + Ref<VisualScriptNode> vsn = script->get_node(edited_func,port_action_new_node); + + if (vsn->cast_to<VisualScriptFunctionCall>()) { + + Ref<VisualScriptFunctionCall> vsfc = vsn; + vsfc->set_function(p_text); + script->data_connect(edited_func,port_action_node,port_action_output,port_action_new_node,0); + } + + if (vsn->cast_to<VisualScriptPropertySet>()) { + + Ref<VisualScriptPropertySet> vsp = vsn; + vsp->set_property(p_text); + script->data_connect(edited_func,port_action_node,port_action_output,port_action_new_node,0); + } + + if (vsn->cast_to<VisualScriptPropertyGet>()) { + + Ref<VisualScriptPropertyGet> vsp = vsn; + vsp->set_property(p_text); + script->data_connect(edited_func,port_action_node,port_action_output,port_action_new_node,0); + } + + _update_graph(port_action_new_node); + _update_graph_connections(); + +} + + void VisualScriptEditor::_default_value_changed() { @@ -2286,8 +2963,12 @@ void VisualScriptEditor::_default_value_edited(Node * p_button,int p_id,int p_in default_value_edit->set_pos(p_button->cast_to<Control>()->get_global_pos()+Vector2(0,p_button->cast_to<Control>()->get_size().y)); default_value_edit->set_size(Size2(1,1)); - if (default_value_edit->edit(NULL,pinfo.name,pinfo.type,existing,pinfo.hint,pinfo.hint_string)) - default_value_edit->popup(); + if (default_value_edit->edit(NULL,pinfo.name,pinfo.type,existing,pinfo.hint,pinfo.hint_string)) { + if (pinfo.hint==PROPERTY_HINT_MULTILINE_TEXT) + default_value_edit->popup_centered_ratio(); + else + default_value_edit->popup(); + } editing_id = p_id; editing_input=p_input_port; @@ -2332,6 +3013,39 @@ void VisualScriptEditor::_graph_ofs_changed(const Vector2& p_ofs) { updating_graph=false; } +void VisualScriptEditor::_comment_node_resized(const Vector2& p_new_size,int p_node) { + + if (updating_graph) + return; + + Ref<VisualScriptComment> vsc = script->get_node(edited_func,p_node); + if (vsc.is_null()) + return; + + Node *node = graph->get_node(itos(p_node)); + if (!node) + return; + GraphNode *gn = node->cast_to<GraphNode>(); + if (!gn) + return; + + updating_graph=true; + + graph->set_block_minimum_size_adjust(true); //faster resize + + undo_redo->create_action("Resize Comment",UndoRedo::MERGE_ENDS); + undo_redo->add_do_method(vsc.ptr(),"set_size",p_new_size/EDSCALE); + undo_redo->add_undo_method(vsc.ptr(),"set_size",vsc->get_size()); + undo_redo->commit_action(); + + gn->set_custom_minimum_size(p_new_size); //for this time since graph update is blocked + gn->set_size(Size2(1,1)); + graph->set_block_minimum_size_adjust(false); + updating_graph=false; + + +} + void VisualScriptEditor::_menu_option(int p_what) { switch(p_what) { @@ -2367,8 +3081,151 @@ void VisualScriptEditor::_menu_option(int p_what) { //popup disappearing grabs focus to owner, so use call deferred node_filter->call_deferred("grab_focus"); node_filter->call_deferred("select_all"); + } break; + case EDIT_COPY_NODES: + case EDIT_CUT_NODES: { + + if (!script->has_function(edited_func)) + break; + + clipboard->nodes.clear(); + clipboard->data_connections.clear(); + clipboard->sequence_connections.clear(); + + for(int i=0;i<graph->get_child_count();i++) { + GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>(); + if (gn) { + if (gn->is_selected()) { + + int id = String(gn->get_name()).to_int(); + Ref<VisualScriptNode> node = script->get_node(edited_func,id); + if (node->cast_to<VisualScriptFunction>()) { + EditorNode::get_singleton()->show_warning("Can't copy the function node."); + return; + } + if (node.is_valid()) { + clipboard->nodes[id]=node->duplicate(); + clipboard->nodes_positions[id]=script->get_node_pos(edited_func,id); + } + + } + } + } + + if (clipboard->nodes.empty()) + break; + + List<VisualScript::SequenceConnection> sequence_connections; + + script->get_sequence_connection_list(edited_func,&sequence_connections); + + for (List<VisualScript::SequenceConnection>::Element *E=sequence_connections.front();E;E=E->next()) { + + if (clipboard->nodes.has(E->get().from_node) && clipboard->nodes.has(E->get().to_node)) { + + clipboard->sequence_connections.insert(E->get()); + } + } + + List<VisualScript::DataConnection> data_connections; + + script->get_data_connection_list(edited_func,&data_connections); + + for (List<VisualScript::DataConnection>::Element *E=data_connections.front();E;E=E->next()) { + + if (clipboard->nodes.has(E->get().from_node) && clipboard->nodes.has(E->get().to_node)) { + + clipboard->data_connections.insert(E->get()); + } + } + + if (p_what==EDIT_CUT_NODES) { + _on_nodes_delete(); // oh yeah, also delete on cut + } + + + } break; + case EDIT_PASTE_NODES: { + if (!script->has_function(edited_func)) + break; + + if (clipboard->nodes.empty()) { + EditorNode::get_singleton()->show_warning("Clipboard is empty!"); + break; + } + + Map<int,int> remap; + + undo_redo->create_action("Paste VisualScript Nodes"); + int idc=script->get_available_id()+1; + + Set<int> to_select; + + Set<Vector2> existing_positions; + + { + List<int> nodes; + script->get_node_list(edited_func,&nodes); + for (List<int>::Element *E=nodes.front();E;E=E->next()) { + Vector2 pos = script->get_node_pos(edited_func,E->get()).snapped(Vector2(2,2)); + existing_positions.insert(pos); + } + } + + for (Map<int,Ref<VisualScriptNode> >::Element *E=clipboard->nodes.front();E;E=E->next()) { + + + Ref<VisualScriptNode> node = E->get()->duplicate(); + + int new_id = idc++; + to_select.insert(new_id); + + remap[E->key()]=new_id; + + Vector2 paste_pos = clipboard->nodes_positions[E->key()]; + + while(existing_positions.has(paste_pos.snapped(Vector2(2,2)))) { + paste_pos+=Vector2(20,20)*EDSCALE; + } + + + undo_redo->add_do_method(script.ptr(),"add_node",edited_func,new_id,node,paste_pos); + undo_redo->add_undo_method(script.ptr(),"remove_node",edited_func,new_id); + + } + + for (Set<VisualScript::SequenceConnection>::Element *E=clipboard->sequence_connections.front();E;E=E->next()) { + + + undo_redo->add_do_method(script.ptr(),"sequence_connect",edited_func,remap[E->get().from_node],E->get().from_output,remap[E->get().to_node]); + undo_redo->add_undo_method(script.ptr(),"sequence_disconnect",edited_func,remap[E->get().from_node],E->get().from_output,remap[E->get().to_node]); + + } + + for (Set<VisualScript::DataConnection>::Element *E=clipboard->data_connections.front();E;E=E->next()) { + + + undo_redo->add_do_method(script.ptr(),"data_connect",edited_func,remap[E->get().from_node],E->get().from_port,remap[E->get().to_node],E->get().to_port); + undo_redo->add_undo_method(script.ptr(),"data_disconnect",edited_func,remap[E->get().from_node],E->get().from_port,remap[E->get().to_node],E->get().to_port); + + } + + undo_redo->add_do_method(this,"_update_graph"); + undo_redo->add_undo_method(this,"_update_graph"); + + undo_redo->commit_action(); + + for(int i=0;i<graph->get_child_count();i++) { + GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>(); + if (gn) { + int id = gn->get_name().operator String().to_int(); + gn->set_selected(to_select.has(id)); + + } + } } break; + } } @@ -2395,6 +3252,12 @@ void VisualScriptEditor::_bind_methods() { ObjectTypeDB::bind_method("_menu_option",&VisualScriptEditor::_menu_option); ObjectTypeDB::bind_method("_graph_ofs_changed",&VisualScriptEditor::_graph_ofs_changed); ObjectTypeDB::bind_method("_center_on_node",&VisualScriptEditor::_center_on_node); + ObjectTypeDB::bind_method("_comment_node_resized",&VisualScriptEditor::_comment_node_resized); + ObjectTypeDB::bind_method("_button_resource_previewed",&VisualScriptEditor::_button_resource_previewed); + ObjectTypeDB::bind_method("_port_action_menu",&VisualScriptEditor::_port_action_menu); + ObjectTypeDB::bind_method("_selected_connect_node_method_or_setget",&VisualScriptEditor::_selected_connect_node_method_or_setget); + ObjectTypeDB::bind_method("_expression_text_changed",&VisualScriptEditor::_expression_text_changed); + @@ -2410,9 +3273,16 @@ void VisualScriptEditor::_bind_methods() { ObjectTypeDB::bind_method("_graph_connected",&VisualScriptEditor::_graph_connected); ObjectTypeDB::bind_method("_graph_disconnected",&VisualScriptEditor::_graph_disconnected); + ObjectTypeDB::bind_method("_graph_connect_to_empty",&VisualScriptEditor::_graph_connect_to_empty); + ObjectTypeDB::bind_method("_update_graph_connections",&VisualScriptEditor::_update_graph_connections); ObjectTypeDB::bind_method("_node_filter_changed",&VisualScriptEditor::_node_filter_changed); + ObjectTypeDB::bind_method("_selected_method",&VisualScriptEditor::_selected_method); + ObjectTypeDB::bind_method("_draw_color_over_button",&VisualScriptEditor::_draw_color_over_button); + + + } @@ -2420,6 +3290,9 @@ void VisualScriptEditor::_bind_methods() { VisualScriptEditor::VisualScriptEditor() { + if (!clipboard) { + clipboard = memnew( Clipboard ); + } updating_graph=false; edit_menu = memnew( MenuButton ); @@ -2427,6 +3300,11 @@ VisualScriptEditor::VisualScriptEditor() { edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/delete_selected"), EDIT_DELETE_NODES); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/toggle_breakpoint"), EDIT_TOGGLE_BREAKPOINT); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/find_node_type"), EDIT_FIND_NODE_TYPE); + edit_menu->get_popup()->add_separator(); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/copy_nodes"), EDIT_COPY_NODES); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/cut_nodes"), EDIT_CUT_NODES); + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("visual_script_editor/paste_nodes"), EDIT_PASTE_NODES); + edit_menu->get_popup()->connect("item_pressed",this,"_menu_option"); main_hsplit = memnew( HSplitContainer ); @@ -2439,9 +3317,9 @@ VisualScriptEditor::VisualScriptEditor() { VBoxContainer *left_vb = memnew( VBoxContainer ); left_vsplit->add_child(left_vb); left_vb->set_v_size_flags(SIZE_EXPAND_FILL); - left_vb->set_custom_minimum_size(Size2(180,1)*EDSCALE); + left_vb->set_custom_minimum_size(Size2(230,1)*EDSCALE); - base_type_select = memnew( Button ); + base_type_select = memnew( Button ); left_vb->add_margin_child(TTR("Base Type:"),base_type_select); base_type_select->connect("pressed",this,"_change_base_type"); @@ -2532,6 +3410,7 @@ VisualScriptEditor::VisualScriptEditor() { graph->connect("connection_request",this,"_graph_connected"); graph->connect("disconnection_request",this,"_graph_disconnected"); + graph->connect("connection_to_empty",this,"_graph_connect_to_empty"); edit_signal_dialog = memnew( AcceptDialog ); edit_signal_dialog->get_ok()->set_text(TTR("Close")); @@ -2577,7 +3456,20 @@ VisualScriptEditor::VisualScriptEditor() { add_child(default_value_edit); default_value_edit->connect("variant_changed",this,"_default_value_changed"); + method_select = memnew( PropertySelector ); + add_child(method_select); + method_select->connect("selected",this,"_selected_method"); error_line=-1; + + new_connect_node_select = memnew( PropertySelector ); + add_child(new_connect_node_select); + new_connect_node_select->connect("selected",this,"_selected_connect_node_method_or_setget"); + + port_action_popup = memnew( PopupMenu ); + add_child(port_action_popup); + port_action_popup->connect("item_pressed",this,"_port_action_menu"); + + } VisualScriptEditor::~VisualScriptEditor() { @@ -2596,6 +3488,14 @@ static ScriptEditorBase * create_editor(const Ref<Script>& p_script) { return NULL; } + +VisualScriptEditor::Clipboard *VisualScriptEditor::clipboard=NULL; + +void VisualScriptEditor::free_clipboard() { + if (clipboard) + memdelete(clipboard); +} + static void register_editor_callback() { ScriptEditor::register_create_script_editor_function(create_editor); @@ -2604,11 +3504,15 @@ static void register_editor_callback() { EditorSettings::get_singleton()->set("visual_script_editor/color_operators",Color(0.9,0.9,1.0)); EditorSettings::get_singleton()->set("visual_script_editor/color_flow_control",Color(1.0,1.0,0.8)); EditorSettings::get_singleton()->set("visual_script_editor/color_custom",Color(0.8,1.0,1.0)); + EditorSettings::get_singleton()->set("visual_script_editor/color_constants",Color(1.0,0.8,1.0)); ED_SHORTCUT("visual_script_editor/delete_selected", TTR("Delete Selected")); ED_SHORTCUT("visual_script_editor/toggle_breakpoint", TTR("Toggle Breakpoint"), KEY_F9); - ED_SHORTCUT("visual_script_editor/find_node_type", TTR("Find Node Tyoe"), KEY_MASK_CMD+KEY_F); + ED_SHORTCUT("visual_script_editor/find_node_type", TTR("Find Node Type"), KEY_MASK_CMD+KEY_F); + ED_SHORTCUT("visual_script_editor/copy_nodes", TTR("Copy Nodes"), KEY_MASK_CMD+KEY_C); + ED_SHORTCUT("visual_script_editor/cut_nodes", TTR("Cut Nodes"), KEY_MASK_CMD+KEY_X); + ED_SHORTCUT("visual_script_editor/paste_nodes", TTR("Paste Nodes"), KEY_MASK_CMD+KEY_V); } diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h index 252519913d..483ae1644c 100644 --- a/modules/visual_script/visual_script_editor.h +++ b/modules/visual_script/visual_script_editor.h @@ -6,13 +6,14 @@ #include "tools/editor/property_editor.h" #include "scene/gui/graph_edit.h" #include "tools/editor/create_dialog.h" - +#include "tools/editor/property_selector.h" class VisualScriptEditorSignalEdit; class VisualScriptEditorVariableEdit; #ifdef TOOLS_ENABLED + class VisualScriptEditor : public ScriptEditorBase { OBJ_TYPE(VisualScriptEditor,ScriptEditorBase) @@ -27,6 +28,22 @@ class VisualScriptEditor : public ScriptEditorBase { EDIT_DELETE_NODES, EDIT_TOGGLE_BREAKPOINT, EDIT_FIND_NODE_TYPE, + EDIT_COPY_NODES, + EDIT_CUT_NODES, + EDIT_PASTE_NODES, + }; + + enum PortAction { + + CREATE_CALL, + CREATE_SET, + CREATE_GET, + CREATE_COND, + CREATE_SEQUENCE, + CREATE_SWITCH, + CREATE_ITERATOR, + CREATE_WHILE, + CREATE_RETURN, }; MenuButton *edit_menu; @@ -48,6 +65,8 @@ class VisualScriptEditor : public ScriptEditorBase { AcceptDialog *edit_signal_dialog; PropertyEditor *edit_signal_edit; + PropertySelector *method_select; + PropertySelector *new_connect_node_select; VisualScriptEditorVariableEdit *variable_editor; @@ -98,6 +117,27 @@ class VisualScriptEditor : public ScriptEditorBase { String _validate_name(const String& p_name) const; + struct Clipboard { + + Map<int,Ref<VisualScriptNode> > nodes; + Map<int,Vector2 > nodes_positions; + + Set<VisualScript::SequenceConnection> sequence_connections; + Set<VisualScript::DataConnection> data_connections; + }; + + static Clipboard *clipboard; + + PopupMenu *port_action_popup; + + PortAction port_action; + int port_action_node; + int port_action_output; + Vector2 port_action_pos; + int port_action_new_node; + void _port_action_menu(int p_option); + void _selected_connect_node_method_or_setget(const String& p_text); + int error_line; @@ -119,6 +159,8 @@ class VisualScriptEditor : public ScriptEditorBase { void _remove_node(int p_id); void _graph_connected(const String& p_from,int p_from_slot,const String& p_to,int p_to_slot); void _graph_disconnected(const String& p_from,int p_from_slot,const String& p_to,int p_to_slot); + void _graph_connect_to_empty(const String& p_from,int p_from_slot,const Vector2& p_release_pos); + void _node_ports_changed(const String& p_func,int p_id); void _available_node_doubleclicked(); @@ -126,6 +168,8 @@ class VisualScriptEditor : public ScriptEditorBase { void _member_button(Object *p_item, int p_column, int p_button); + void _expression_text_changed(const String& p_text,int p_id); + String revert_on_drag; @@ -147,6 +191,17 @@ class VisualScriptEditor : public ScriptEditorBase { void _menu_option(int p_what); void _graph_ofs_changed(const Vector2& p_ofs); + void _comment_node_resized(const Vector2& p_new_size,int p_node); + + int selecting_method_id; + void _selected_method(const String& p_method); + + void _draw_color_over_button(Object* obj,Color p_color); + void _button_resource_previewed(const String& p_path,const Ref<Texture>& p_preview,Variant p_ud); + + VisualScriptNode::TypeGuess _guess_output_type(int p_port_action_node,int p_port_action_output,Set<int> &visited_nodes); + + protected: void _notification(int p_what); @@ -175,9 +230,12 @@ public: virtual void set_debugger_active(bool p_active); virtual void set_tooltip_request_func(String p_method,Object* p_obj); virtual Control *get_edit_menu(); + virtual bool can_lose_focus_on_node_selection() { return false; } static void register_editor(); + static void free_clipboard(); + VisualScriptEditor(); ~VisualScriptEditor(); }; diff --git a/modules/visual_script/visual_script_expression.cpp b/modules/visual_script/visual_script_expression.cpp new file mode 100644 index 0000000000..cc3b5f2174 --- /dev/null +++ b/modules/visual_script/visual_script_expression.cpp @@ -0,0 +1,1523 @@ +#include "visual_script_expression.h" + + +bool VisualScriptExpression::_set(const StringName& p_name, const Variant& p_value) { + + if (String(p_name)=="expression") { + expression=p_value; + expression_dirty=true; + ports_changed_notify(); + return true; + } + + if (String(p_name)=="out_type") { + output_type=Variant::Type(int(p_value)); + expression_dirty=true; + ports_changed_notify(); + return true; + } + if (String(p_name)=="sequenced") { + sequenced=p_value; + ports_changed_notify(); + return true; + } + + if (String(p_name)=="input_count") { + + int from=inputs.size(); + inputs.resize(int(p_value)); + for(int i=from;i<inputs.size();i++) { + inputs[i].name=String::chr('a'+i); + if (from==0) { + inputs[i].type=output_type; + } else { + inputs[i].type=inputs[from-1].type; + } + } + expression_dirty=true; + ports_changed_notify(); + _change_notify(); + return true; + } + + if (String(p_name).begins_with("input/")) { + + int idx=String(p_name).get_slice("/",1).to_int(); + ERR_FAIL_INDEX_V(idx,inputs.size(),false); + + String what=String(p_name).get_slice("/",2); + + if (what=="type") { + + inputs[idx].type=Variant::Type(int(p_value)); + } else if (what=="name") { + + inputs[idx].name=p_value; + } else { + return false; + } + + expression_dirty=true; + ports_changed_notify(); + return true; + } + + + return false; + +} + +bool VisualScriptExpression::_get(const StringName& p_name,Variant &r_ret) const { + + if (String(p_name)=="expression") { + r_ret=expression; + return true; + } + + if (String(p_name)=="out_type") { + r_ret=output_type; + return true; + } + + if (String(p_name)=="sequenced") { + r_ret=sequenced; + return true; + } + + if (String(p_name)=="input_count") { + r_ret=inputs.size(); + return true; + } + + if (String(p_name).begins_with("input/")) { + + int idx=String(p_name).get_slice("/",1).to_int(); + ERR_FAIL_INDEX_V(idx,inputs.size(),false); + + String what=String(p_name).get_slice("/",2); + + if (what=="type") { + + r_ret=inputs[idx].type; + } else if (what=="name") { + + r_ret=inputs[idx].name; + } else { + return false; + } + + return true; + } + + + return false; +} +void VisualScriptExpression::_get_property_list( List<PropertyInfo> *p_list) const { + + + String argt="Any"; + for(int i=1;i<Variant::VARIANT_MAX;i++) { + argt+=","+Variant::get_type_name(Variant::Type(i)); + } + + p_list->push_back(PropertyInfo(Variant::STRING,"expression",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::INT,"out_type",PROPERTY_HINT_ENUM,argt)); + p_list->push_back(PropertyInfo(Variant::INT,"input_count",PROPERTY_HINT_RANGE,"0,64,1")); + p_list->push_back(PropertyInfo(Variant::BOOL,"sequenced")); + + for(int i=0;i<inputs.size();i++) { + + p_list->push_back(PropertyInfo(Variant::INT,"input/"+itos(i)+"/type",PROPERTY_HINT_ENUM,argt)); + p_list->push_back(PropertyInfo(Variant::STRING,"input/"+itos(i)+"/name")); + } +} + +int VisualScriptExpression::get_output_sequence_port_count() const { + + return sequenced?1:0; +} +bool VisualScriptExpression::has_input_sequence_port() const{ + + return sequenced; +} + + +String VisualScriptExpression::get_output_sequence_port_text(int p_port) const{ + + return String(); +} + + +int VisualScriptExpression::get_input_value_port_count() const{ + + return inputs.size(); + +} +int VisualScriptExpression::get_output_value_port_count() const{ + + return 1; +} + + +PropertyInfo VisualScriptExpression::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(inputs[p_idx].type,inputs[p_idx].name); +} +PropertyInfo VisualScriptExpression::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(output_type,"result"); +} + +String VisualScriptExpression::get_caption() const{ + + return "Expression"; +} +String VisualScriptExpression::get_text() const{ + + return expression; +} + + +Error VisualScriptExpression::_get_token(Token& r_token) { + + while (true) { +#define GET_CHAR() (str_ofs>=expression.length()?0:expression[str_ofs++]) + + CharType cchar = GET_CHAR(); + if (cchar==0) { + r_token.type=TK_EOF; + return OK; + } + + + switch(cchar) { + + case 0: { + r_token.type=TK_EOF; + return OK; + } break; + case '{': { + + r_token.type=TK_CURLY_BRACKET_OPEN; + return OK; + }; + case '}': { + + r_token.type=TK_CURLY_BRACKET_CLOSE; + return OK; + }; + case '[': { + + r_token.type=TK_BRACKET_OPEN; + return OK; + }; + case ']': { + + r_token.type=TK_BRACKET_CLOSE; + return OK; + }; + case '(': { + + r_token.type=TK_PARENTHESIS_OPEN; + return OK; + }; + case ')': { + + r_token.type=TK_PARENTHESIS_CLOSE; + return OK; + }; + case ',': { + + r_token.type=TK_COMMA; + return OK; + }; + case ':': { + + r_token.type=TK_COLON; + return OK; + }; + case '.': { + + r_token.type=TK_PERIOD; + return OK; + }; + case '=': { + + cchar=GET_CHAR(); + if (cchar=='=') { + r_token.type=TK_OP_EQUAL; + } else { + _set_error("Expected '='"); + r_token.type=TK_ERROR; + return ERR_PARSE_ERROR; + } + return OK; + }; + case '!': { + + if (expression[str_ofs]=='=') { + r_token.type=TK_OP_NOT_EQUAL; + str_ofs++; + } else { + r_token.type=TK_OP_NOT; + } + return OK; + }; + case '>': { + + if (expression[str_ofs]=='=') { + r_token.type=TK_OP_GREATER_EQUAL; + str_ofs++; + } else if (expression[str_ofs]=='>') { + r_token.type=TK_OP_SHIFT_RIGHT; + str_ofs++; + } else { + r_token.type=TK_OP_GREATER; + } + return OK; + }; + case '<': { + + if (expression[str_ofs]=='=') { + r_token.type=TK_OP_LESS_EQUAL; + str_ofs++; + } else if (expression[str_ofs]=='<') { + r_token.type=TK_OP_SHIFT_LEFT; + str_ofs++; + } else { + r_token.type=TK_OP_LESS; + } + return OK; + }; + case '+': { + r_token.type=TK_OP_ADD; + return OK; + }; + case '-': { + r_token.type=TK_OP_SUB; + return OK; + }; + case '/': { + r_token.type=TK_OP_DIV; + return OK; + }; + case '*': { + r_token.type=TK_OP_MUL; + return OK; + }; + case '%': { + r_token.type=TK_OP_MOD; + return OK; + }; + case '&': { + + if (expression[str_ofs]=='&') { + r_token.type=TK_OP_AND; + str_ofs++; + } else { + r_token.type=TK_OP_BIT_AND; + } + return OK; + }; + case '|': { + + if (expression[str_ofs]=='|') { + r_token.type=TK_OP_OR; + str_ofs++; + } else { + r_token.type=TK_OP_BIT_OR; + } + return OK; + }; + case '^': { + + r_token.type=TK_OP_BIT_XOR; + + return OK; + }; + case '~': { + + r_token.type=TK_OP_BIT_INVERT; + + return OK; + }; + case '"': { + + + String str; + while(true) { + + CharType ch=GET_CHAR(); + + if (ch==0) { + _set_error("Unterminated String"); + r_token.type=TK_ERROR; + return ERR_PARSE_ERROR; + } else if (ch=='"') { + break; + } else if (ch=='\\') { + //escaped characters... + + CharType next = GET_CHAR(); + if (next==0) { + _set_error("Unterminated String"); + r_token.type=TK_ERROR; + return ERR_PARSE_ERROR; + } + CharType res=0; + + switch(next) { + + case 'b': res=8; break; + case 't': res=9; break; + case 'n': res=10; break; + case 'f': res=12; break; + case 'r': res=13; break; + case 'u': { + //hexnumbarh - oct is deprecated + + + for(int j=0;j<4;j++) { + CharType c = GET_CHAR(); + + if (c==0) { + _set_error("Unterminated String"); + r_token.type=TK_ERROR; + return ERR_PARSE_ERROR; + } + if (!((c>='0' && c<='9') || (c>='a' && c<='f') || (c>='A' && c<='F'))) { + + _set_error("Malformed hex constant in string"); + r_token.type=TK_ERROR; + return ERR_PARSE_ERROR; + } + CharType v; + if (c>='0' && c<='9') { + v=c-'0'; + } else if (c>='a' && c<='f') { + v=c-'a'; + v+=10; + } else if (c>='A' && c<='F') { + v=c-'A'; + v+=10; + } else { + ERR_PRINT("BUG"); + v=0; + } + + res<<=4; + res|=v; + + + } + + + + } break; + //case '\"': res='\"'; break; + //case '\\': res='\\'; break; + //case '/': res='/'; break; + default: { + res = next; + //r_err_str="Invalid escape sequence"; + //return ERR_PARSE_ERROR; + } break; + } + + str+=res; + + } else { + str+=ch; + } + } + + r_token.type=TK_CONSTANT; + r_token.value=str; + return OK; + + } break; + default: { + + if (cchar<=32) { + break; + } + + if (cchar=='-' || (cchar>='0' && cchar<='9')) { + //a number + + + String num; +#define READING_SIGN 0 +#define READING_INT 1 +#define READING_DEC 2 +#define READING_EXP 3 +#define READING_DONE 4 + int reading=READING_INT; + + if (cchar=='-') { + num+='-'; + cchar=GET_CHAR(); + + } + + + + CharType c = cchar; + bool exp_sign=false; + bool exp_beg=false; + bool is_float=false; + + while(true) { + + switch(reading) { + case READING_INT: { + + if (c>='0' && c<='9') { + //pass + } else if (c=='.') { + reading=READING_DEC; + is_float=true; + } else if (c=='e') { + reading=READING_EXP; + } else { + reading=READING_DONE; + } + + } break; + case READING_DEC: { + + if (c>='0' && c<='9') { + + } else if (c=='e') { + reading=READING_EXP; + + } else { + reading=READING_DONE; + } + + } break; + case READING_EXP: { + + if (c>='0' && c<='9') { + exp_beg=true; + + } else if ((c=='-' || c=='+') && !exp_sign && !exp_beg) { + if (c=='-') + is_float=true; + exp_sign=true; + + } else { + reading=READING_DONE; + } + } break; + } + + if (reading==READING_DONE) + break; + num+=String::chr(c); + c = GET_CHAR(); + + + } + + str_ofs--; + + r_token.type=TK_CONSTANT; + + if (is_float) + r_token.value=num.to_double(); + else + r_token.value=num.to_int(); + return OK; + + } else if ((cchar>='A' && cchar<='Z') || (cchar>='a' && cchar<='z') || cchar=='_') { + + String id; + bool first=true; + + while((cchar>='A' && cchar<='Z') || (cchar>='a' && cchar<='z') || cchar=='_' || (!first && cchar>='0' && cchar<='9')) { + + id+=String::chr(cchar); + cchar=GET_CHAR(); + first=false; + } + + str_ofs--; //go back one + + if (id=="in") { + r_token.type=TK_OP_IN; + } else if (id=="null") { + r_token.type=TK_CONSTANT; + r_token.value=Variant(); + } else if (id=="true") { + r_token.type=TK_CONSTANT; + r_token.value=true; + } else if (id=="false") { + r_token.type=TK_CONSTANT; + r_token.value=false; + } else if (id=="PI") { + r_token.type=TK_CONSTANT; + r_token.value=Math_PI; + } else if (id=="not") { + r_token.type=TK_OP_NOT; + } else if (id=="or") { + r_token.type=TK_OP_OR; + } else if (id=="and") { + r_token.type=TK_OP_AND; + } else if (id=="self") { + r_token.type=TK_SELF; + } else { + + for(int i=0;i<Variant::VARIANT_MAX;i++) { + if (id==Variant::get_type_name(Variant::Type(i))) { + r_token.type=TK_BASIC_TYPE; + r_token.value=i; + return OK; + break; + } + } + + VisualScriptBuiltinFunc::BuiltinFunc bifunc = VisualScriptBuiltinFunc::find_function(id); + if (bifunc!=VisualScriptBuiltinFunc::FUNC_MAX) { + r_token.type=TK_BUILTIN_FUNC; + r_token.value=bifunc; + return OK; + } + + r_token.type=TK_IDENTIFIER; + r_token.value=id; + } + + return OK; + } else { + _set_error("Unexpected character."); + r_token.type=TK_ERROR; + return ERR_PARSE_ERROR; + } + } + } + } + + r_token.type=TK_ERROR; + return ERR_PARSE_ERROR; +} + +const char* VisualScriptExpression::token_name[TK_MAX]={ +"CURLY BRACKET OPEN", +"CURLY BRACKET CLOSE", +"BRACKET OPEN", +"BRACKET CLOSE", +"PARENTHESIS OPEN", +"PARENTHESIS CLOSE", +"IDENTIFIER", +"BUILTIN FUNC", +"SELF", +"CONSTANT", +"BASIC TYPE", +"COLON", +"COMMA", +"PERIOD", +"OP IN", +"OP EQUAL", +"OP NOT EQUAL", +"OP LESS", +"OP LESS EQUAL", +"OP GREATER", +"OP GREATER EQUAL", +"OP AND", +"OP OR", +"OP NOT", +"OP ADD", +"OP SUB", +"OP MUL", +"OP DIV", +"OP MOD", +"OP SHIFT LEFT", +"OP SHIFT RIGHT", +"OP BIT AND", +"OP BIT OR", +"OP BIT XOR", +"OP BIT INVERT", +"EOF", +"ERROR" +}; + +VisualScriptExpression::ENode* VisualScriptExpression::_parse_expression() { + + + Vector<Expression> expression; + + while(true) { + //keep appending stuff to expression + ENode*expr=NULL; + + Token tk; + _get_token(tk); + if (error_set) + return NULL; + + + + switch(tk.type) { + case TK_CURLY_BRACKET_OPEN: { + //a dictionary + DictionaryNode *dn = alloc_node<DictionaryNode>(); + + + while(true) { + + int cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_CURLY_BRACKET_CLOSE) { + break; + } + str_ofs=cofs; //revert + //parse an expression + ENode* expr=_parse_expression(); + if (!expr) + return NULL; + dn->dict.push_back(expr); + + _get_token(tk); + if (tk.type!=TK_COLON) { + _set_error("Expected ':'"); + return NULL; + } + + expr=_parse_expression(); + if (!expr) + return NULL; + + dn->dict.push_back(expr); + + cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_COMMA) { + //all good + } else if (tk.type==TK_CURLY_BRACKET_CLOSE) { + str_ofs=cofs; + } else { + _set_error("Expected ',' or '}'"); + } + } + + expr=dn; + } break; + case TK_BRACKET_OPEN: { + //an array + + ArrayNode *an = alloc_node<ArrayNode>(); + + + while(true) { + + int cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_BRACKET_CLOSE) { + break; + } + str_ofs=cofs; //revert + //parse an expression + ENode* expr=_parse_expression(); + if (!expr) + return NULL; + an->array.push_back(expr); + + cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_COMMA) { + //all good + } else if (tk.type==TK_BRACKET_CLOSE) { + str_ofs=cofs; + } else { + _set_error("Expected ',' or ']'"); + } + } + + expr=an; + } break; + case TK_PARENTHESIS_OPEN: { + //a suexpression + ENode* e=_parse_expression(); + if (error_set) + return NULL; + _get_token(tk); + if (tk.type!=TK_PARENTHESIS_CLOSE) { + _set_error("Expected ')'"); + return NULL; + } + + expr=e; + + } break; + case TK_IDENTIFIER: { + + String what = tk.value; + int index=-1; + for(int i=0;i<inputs.size();i++) { + if (what==inputs[i].name) { + index=i; + break; + } + } + + if (index!=-1) { + InputNode *input = alloc_node<InputNode>(); + input->index=index; + expr=input; + } else { + _set_error("Invalid input identifier '"+what+"'. For script variables, use self (locals are for inputs)."+what); + return NULL; + } + } break; + case TK_SELF: { + + SelfNode *self = alloc_node<SelfNode>(); + expr=self; + } break; + case TK_CONSTANT: { + ConstantNode *constant = alloc_node<ConstantNode>(); + constant->value=tk.value; + expr=constant; + } break; + case TK_BASIC_TYPE: { + //constructor.. + + Variant::Type bt = Variant::Type(int(tk.value)); + _get_token(tk); + if (tk.type!=TK_PARENTHESIS_OPEN) { + _set_error("Expected '('"); + return NULL; + } + + ConstructorNode *constructor = alloc_node<ConstructorNode>(); + constructor->data_type=bt; + + while(true) { + + int cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_PARENTHESIS_CLOSE) { + break; + } + str_ofs=cofs; //revert + //parse an expression + ENode* expr=_parse_expression(); + if (!expr) + return NULL; + + constructor->arguments.push_back(expr); + + cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_COMMA) { + //all good + } else if (tk.type==TK_PARENTHESIS_CLOSE) { + str_ofs=cofs; + } else { + _set_error("Expected ',' or ')'"); + } + } + + expr=constructor; + + } break; + case TK_BUILTIN_FUNC: { + //builtin function + + Variant::Type bt = Variant::Type(int(tk.value)); + _get_token(tk); + if (tk.type!=TK_PARENTHESIS_OPEN) { + _set_error("Expected '('"); + return NULL; + } + + BuiltinFuncNode *bifunc = alloc_node<BuiltinFuncNode>(); + bifunc->func=VisualScriptBuiltinFunc::BuiltinFunc(int(tk.value)); + + while(true) { + + int cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_PARENTHESIS_CLOSE) { + break; + } + str_ofs=cofs; //revert + //parse an expression + ENode* expr=_parse_expression(); + if (!expr) + return NULL; + + bifunc->arguments.push_back(expr); + + cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_COMMA) { + //all good + } else if (tk.type==TK_PARENTHESIS_CLOSE) { + str_ofs=cofs; + } else { + _set_error("Expected ',' or ')'"); + } + } + + int expected_args = VisualScriptBuiltinFunc::get_func_argument_count(bifunc->func); + if (bifunc->arguments.size() != expected_args) { + _set_error("Builtin func '"+VisualScriptBuiltinFunc::get_func_name(bifunc->func)+"' expects "+itos(expected_args)+" arguments."); + } + + expr=bifunc; + + } break; + case TK_OP_SUB: { + + Expression e; + e.is_op=true; + e.op=Variant::OP_NEGATE; + expression.push_back(e); + continue; + } break; + case TK_OP_NOT: { + + Expression e; + e.is_op=true; + e.op=Variant::OP_NOT; + expression.push_back(e); + continue; + } break; + + default: { + _set_error("Expected expression."); + return NULL; + } break; + + } + + //before going to operators, must check indexing! + + while(true) { + int cofs2=str_ofs; + _get_token(tk); + if (error_set) + return NULL; + + bool done=false; + + switch(tk.type) { + case TK_BRACKET_OPEN: { + //value indexing + + IndexNode *index = alloc_node<IndexNode>(); + index->base=expr; + + ENode* what=_parse_expression(); + if (!what) + return NULL; + + index->index=what; + + _get_token(tk); + if (tk.type!=TK_BRACKET_CLOSE) { + _set_error("Expected ']' at end of index."); + return NULL; + } + expr=index; + + } break; + case TK_PERIOD: { + //named indexing or function call + _get_token(tk); + if (tk.type!=TK_IDENTIFIER) { + _set_error("Expected identifier after '.'"); + return NULL; + } + + StringName identifier=tk.value; + + int cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_PARENTHESIS_OPEN) { + //function call + CallNode *func_call = alloc_node<CallNode>(); + func_call->method=identifier; + func_call->base=expr; + + while(true) { + + int cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_PARENTHESIS_CLOSE) { + break; + } + str_ofs=cofs; //revert + //parse an expression + ENode* expr=_parse_expression(); + if (!expr) + return NULL; + + func_call->arguments.push_back(expr); + + cofs=str_ofs; + _get_token(tk); + if (tk.type==TK_COMMA) { + //all good + } else if (tk.type==TK_PARENTHESIS_CLOSE) { + str_ofs=cofs; + } else { + _set_error("Expected ',' or ')'"); + } + } + + expr=func_call; + } else { + //named indexing + str_ofs=cofs; + + NamedIndexNode *index = alloc_node<NamedIndexNode>(); + index->base=expr; + index->name=identifier; + expr=index; + + } + + } break; + default: { + str_ofs=cofs2; + done=true; + } break; + } + + if (done) + break; + } + + //push expression + { + Expression e; + e.is_op=false; + e.node=expr; + expression.push_back(e); + } + + //ok finally look for an operator + + + int cofs=str_ofs; + _get_token(tk); + if (error_set) + return NULL; + + + Variant::Operator op = Variant::OP_MAX; + + switch(tk.type) { + case TK_OP_IN: op=Variant::OP_IN; break; + case TK_OP_EQUAL: op=Variant::OP_EQUAL; break; + case TK_OP_NOT_EQUAL: op=Variant::OP_NOT_EQUAL; break; + case TK_OP_LESS: op=Variant::OP_LESS; break; + case TK_OP_LESS_EQUAL: op=Variant::OP_LESS_EQUAL; break; + case TK_OP_GREATER: op=Variant::OP_GREATER; break; + case TK_OP_GREATER_EQUAL: op=Variant::OP_GREATER_EQUAL; break; + case TK_OP_AND: op=Variant::OP_AND; break; + case TK_OP_OR: op=Variant::OP_OR; break; + case TK_OP_NOT: op=Variant::OP_NOT; break; + case TK_OP_ADD: op=Variant::OP_ADD; break; + case TK_OP_SUB: op=Variant::OP_SUBSTRACT; break; + case TK_OP_MUL: op=Variant::OP_MULTIPLY; break; + case TK_OP_DIV: op=Variant::OP_DIVIDE; break; + case TK_OP_MOD: op=Variant::OP_MODULE; break; + case TK_OP_SHIFT_LEFT: op=Variant::OP_SHIFT_LEFT; break; + case TK_OP_SHIFT_RIGHT: op=Variant::OP_SHIFT_RIGHT; break; + case TK_OP_BIT_AND: op=Variant::OP_BIT_AND; break; + case TK_OP_BIT_OR: op=Variant::OP_BIT_OR; break; + case TK_OP_BIT_XOR: op=Variant::OP_BIT_XOR; break; + case TK_OP_BIT_INVERT: op=Variant::OP_BIT_NEGATE; break; + default: {}; + } + + if (op==Variant::OP_MAX) { //stop appending stuff + str_ofs=cofs; + break; + } + + //push operator and go on + { + Expression e; + e.is_op=true; + e.op=op; + expression.push_back(e); + } + } + + + /* Reduce the set set of expressions and place them in an operator tree, respecting precedence */ + + + while(expression.size()>1) { + + int next_op=-1; + int min_priority=0xFFFFF; + bool is_unary=false; + + for(int i=0;i<expression.size();i++) { + + + + if (!expression[i].is_op) { + + continue; + } + + int priority; + + bool unary=false; + + switch(expression[i].op) { + + + case Variant::OP_BIT_NEGATE: priority=0; unary=true; break; + case Variant::OP_NEGATE: priority=1; unary=true; break; + + case Variant::OP_MULTIPLY: priority=2; break; + case Variant::OP_DIVIDE: priority=2; break; + case Variant::OP_MODULE: priority=2; break; + + case Variant::OP_ADD: priority=3; break; + case Variant::OP_SUBSTRACT: priority=3; break; + + case Variant::OP_SHIFT_LEFT: priority=4; break; + case Variant::OP_SHIFT_RIGHT: priority=4; break; + + case Variant::OP_BIT_AND: priority=5; break; + case Variant::OP_BIT_XOR: priority=6; break; + case Variant::OP_BIT_OR: priority=7; break; + + case Variant::OP_LESS: priority=8; break; + case Variant::OP_LESS_EQUAL: priority=8; break; + case Variant::OP_GREATER: priority=8; break; + case Variant::OP_GREATER_EQUAL: priority=8; break; + + case Variant::OP_EQUAL: priority=8; break; + case Variant::OP_NOT_EQUAL: priority=8; break; + + case Variant::OP_IN: priority=10; break; + + case Variant::OP_NOT: priority=11; unary=true; break; + case Variant::OP_AND: priority=12; break; + case Variant::OP_OR: priority=13; break; + + + default: { + _set_error("Parser bug, invalid operator in expression: "+itos(expression[i].op)); + return NULL; + } + + } + + if (priority<min_priority) { + // < is used for left to right (default) + // <= is used for right to left + + next_op=i; + min_priority=priority; + is_unary=unary; + } + + } + + if (next_op==-1) { + + + _set_error("Yet another parser bug...."); + ERR_FAIL_COND_V(next_op==-1,NULL); + } + + + // OK! create operator.. + if (is_unary) { + + int expr_pos=next_op; + while(expression[expr_pos].is_op) { + + expr_pos++; + if (expr_pos==expression.size()) { + //can happen.. + _set_error("Unexpected end of expression.."); + return NULL; + } + } + + //consecutively do unary opeators + for(int i=expr_pos-1;i>=next_op;i--) { + + OperatorNode *op = alloc_node<OperatorNode>(); + op->op=expression[i].op; + op->nodes[0]=expression[i+1].node; + op->nodes[1]=NULL; + expression[i].is_op=false; + expression[i].node=op; + expression.remove(i+1); + } + + + } else { + + if (next_op <1 || next_op>=(expression.size()-1)) { + _set_error("Parser bug.."); + ERR_FAIL_V(NULL); + } + + OperatorNode *op = alloc_node<OperatorNode>(); + op->op=expression[next_op].op; + + if (expression[next_op-1].is_op) { + + _set_error("Parser bug.."); + ERR_FAIL_V(NULL); + } + + if (expression[next_op+1].is_op) { + // this is not invalid and can really appear + // but it becomes invalid anyway because no binary op + // can be followed by an unary op in a valid combination, + // due to how precedence works, unaries will always dissapear first + + _set_error("Unexpected two consecutive operators."); + return NULL; + } + + + op->nodes[0]=expression[next_op-1].node; //expression goes as left + op->nodes[1]=expression[next_op+1].node; //next expression goes as right + + //replace all 3 nodes by this operator and make it an expression + expression[next_op-1].node=op; + expression.remove(next_op); + expression.remove(next_op); + } + } + + return expression[0].node; +} + +bool VisualScriptExpression::_compile_expression() { + + if (!expression_dirty) + return error_set; + + if (nodes) { + memdelete(nodes); + nodes=NULL; + root=NULL; + + } + + error_str=String(); + error_set=false; + str_ofs=0; + + root=_parse_expression(); + + if (error_set) { + root=NULL; + if (nodes) { + memdelete(nodes); + } + nodes=NULL; + return true; + } + + expression_dirty=false; + return false; +} + + +class VisualScriptNodeInstanceExpression : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + VisualScriptExpression *expression; + + //virtual int get_working_memory_size() const { return 0; } + //execute by parsing the tree directly + virtual bool _execute(const Variant** p_inputs,VisualScriptExpression::ENode *p_node,Variant& r_ret,String& r_error_str,Variant::CallError &ce) { + + switch(p_node->type) { + case VisualScriptExpression::ENode::TYPE_INPUT: { + + const VisualScriptExpression::InputNode *in = static_cast<const VisualScriptExpression::InputNode*>(p_node); + r_ret=*p_inputs[in->index]; + } break; + case VisualScriptExpression::ENode::TYPE_CONSTANT: { + + const VisualScriptExpression::ConstantNode *c = static_cast<const VisualScriptExpression::ConstantNode*>(p_node); + r_ret=c->value; + + } break; + case VisualScriptExpression::ENode::TYPE_SELF: { + + r_ret=instance->get_owner_ptr(); + } break; + case VisualScriptExpression::ENode::TYPE_OPERATOR: { + + + const VisualScriptExpression::OperatorNode *op = static_cast<const VisualScriptExpression::OperatorNode*>(p_node); + + Variant a; + bool ret = _execute(p_inputs,op->nodes[0],a,r_error_str,ce); + if (ret) + return true; + + Variant b; + + if (op->nodes[1]) { + ret = _execute(p_inputs,op->nodes[1],b,r_error_str,ce); + if (ret) + return true; + } + + bool valid=true; + Variant::evaluate(op->op,a,b,r_ret,valid); + if (!valid) { + r_error_str="Invalid operands to operator "+Variant::get_operator_name(op->op)+": "+Variant::get_type_name(a.get_type())+" and "+Variant::get_type_name(b.get_type())+"."; + return true; + } + + } break; + case VisualScriptExpression::ENode::TYPE_INDEX: { + + const VisualScriptExpression::IndexNode *index = static_cast<const VisualScriptExpression::IndexNode*>(p_node); + + Variant base; + bool ret = _execute(p_inputs,index->base,base,r_error_str,ce); + if (ret) + return true; + + Variant idx; + + ret = _execute(p_inputs,index->index,idx,r_error_str,ce); + if (ret) + return true; + + bool valid; + r_ret=base.get(idx,&valid); + if (!valid) { + r_error_str="Invalid index of type "+Variant::get_type_name(idx.get_type())+" for base of type "+Variant::get_type_name(base.get_type())+"."; + return true; + } + + + + } break; + case VisualScriptExpression::ENode::TYPE_NAMED_INDEX: { + + const VisualScriptExpression::NamedIndexNode *index = static_cast<const VisualScriptExpression::NamedIndexNode*>(p_node); + + Variant base; + bool ret = _execute(p_inputs,index->base,base,r_error_str,ce); + if (ret) + return true; + + bool valid; + r_ret=base.get_named(index->name,&valid); + if (!valid) { + r_error_str="Invalid index '"+String(index->name)+"' for base of type "+Variant::get_type_name(base.get_type())+"."; + return true; + } + + } break; + case VisualScriptExpression::ENode::TYPE_ARRAY: { + const VisualScriptExpression::ArrayNode *array = static_cast<const VisualScriptExpression::ArrayNode*>(p_node); + + Array arr; + arr.resize(array->array.size()); + for (int i=0;i<array->array.size();i++) { + + Variant value; + bool ret = _execute(p_inputs,array->array[i],value,r_error_str,ce); + if (ret) + return true; + arr[i]=value; + } + + r_ret=arr; + + } break; + case VisualScriptExpression::ENode::TYPE_DICTIONARY: { + const VisualScriptExpression::DictionaryNode *dictionary = static_cast<const VisualScriptExpression::DictionaryNode*>(p_node); + + Dictionary d; + for (int i=0;i<dictionary->dict.size();i+=2) { + + Variant key; + bool ret = _execute(p_inputs,dictionary->dict[i+0],key,r_error_str,ce); + if (ret) + return true; + + Variant value; + ret = _execute(p_inputs,dictionary->dict[i+1],value,r_error_str,ce); + if (ret) + return true; + + d[key]=value; + } + + r_ret=d; + } break; + case VisualScriptExpression::ENode::TYPE_CONSTRUCTOR: { + + const VisualScriptExpression::ConstructorNode *constructor = static_cast<const VisualScriptExpression::ConstructorNode*>(p_node); + + Vector<Variant> arr; + Vector<const Variant*> argp; + arr.resize(constructor->arguments.size()); + argp.resize(constructor->arguments.size()); + + for (int i=0;i<constructor->arguments.size();i++) { + + Variant value; + bool ret = _execute(p_inputs,constructor->arguments[i],value,r_error_str,ce); + if (ret) + return true; + arr[i]=value; + argp[i]=&arr[i]; + } + + + r_ret=Variant::construct(constructor->data_type,argp.ptr(),argp.size(),ce); + + if (ce.error!=Variant::CallError::CALL_OK) { + r_error_str="Invalid arguments to construct '"+Variant::get_type_name(constructor->data_type)+"'."; + return true; + } + + + } break; + case VisualScriptExpression::ENode::TYPE_BUILTIN_FUNC: { + + const VisualScriptExpression::BuiltinFuncNode *bifunc = static_cast<const VisualScriptExpression::BuiltinFuncNode*>(p_node); + + Vector<Variant> arr; + Vector<const Variant*> argp; + arr.resize(bifunc->arguments.size()); + argp.resize(bifunc->arguments.size()); + + for (int i=0;i<bifunc->arguments.size();i++) { + + Variant value; + bool ret = _execute(p_inputs,bifunc->arguments[i],value,r_error_str,ce); + if (ret) + return true; + arr[i]=value; + argp[i]=&arr[i]; + } + + + VisualScriptBuiltinFunc::exec_func(bifunc->func,argp.ptr(),&r_ret,ce,r_error_str); + + if (ce.error!=Variant::CallError::CALL_OK) { + r_error_str="Builtin Call Failed. "+r_error_str; + return true; + } + + } break; + case VisualScriptExpression::ENode::TYPE_CALL: { + + const VisualScriptExpression::CallNode *call = static_cast<const VisualScriptExpression::CallNode*>(p_node); + + + Variant base; + bool ret = _execute(p_inputs,call->base,base,r_error_str,ce); + if (ret) + return true; + + Vector<Variant> arr; + Vector<const Variant*> argp; + arr.resize(call->arguments.size()); + argp.resize(call->arguments.size()); + + for (int i=0;i<call->arguments.size();i++) { + + Variant value; + bool ret = _execute(p_inputs,call->arguments[i],value,r_error_str,ce); + if (ret) + return true; + arr[i]=value; + argp[i]=&arr[i]; + } + + + r_ret=base.call(call->method,argp.ptr(),argp.size(),ce); + + if (ce.error!=Variant::CallError::CALL_OK) { + r_error_str="On call to '"+String(call->method)+"':"; + return true; + } + + } break; + } + return false; + } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + if (!expression->root || expression->error_set) { + r_error_str=expression->error_str; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + return 0; + } + + + bool error = _execute(p_inputs,expression->root,*p_outputs[0],r_error_str,r_error); + if (error && r_error.error==Variant::CallError::CALL_OK) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + } + +#ifdef DEBUG_ENABLED + if (!error && expression->output_type!=Variant::NIL && !Variant::can_convert_strict(p_outputs[0]->get_type(),expression->output_type)) { + + r_error_str+="Can't convert expression result from "+Variant::get_type_name(p_outputs[0]->get_type())+" to "+Variant::get_type_name(expression->output_type)+"."; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + + } +#endif + + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptExpression::instance(VisualScriptInstance* p_instance){ + + _compile_expression(); + VisualScriptNodeInstanceExpression *instance = memnew( VisualScriptNodeInstanceExpression ); + instance->instance=p_instance; + instance->expression=this; + return instance; +} + + +VisualScriptExpression::VisualScriptExpression() +{ + output_type=Variant::NIL; + expression_dirty=true; + error_set=true; + root=NULL; + nodes=NULL; + sequenced=false; +} + +VisualScriptExpression::~VisualScriptExpression() { + + if (nodes) { + memdelete(nodes); + } +} + + +void register_visual_script_expression_node() { + + VisualScriptLanguage::singleton->add_register_func("operators/expression",create_node_generic<VisualScriptExpression>); + +} diff --git a/modules/visual_script/visual_script_expression.h b/modules/visual_script/visual_script_expression.h new file mode 100644 index 0000000000..4edae133c7 --- /dev/null +++ b/modules/visual_script/visual_script_expression.h @@ -0,0 +1,280 @@ +#ifndef VISUALSCRIPTEXPRESSION_H +#define VISUALSCRIPTEXPRESSION_H + +#include "visual_script.h" +#include "visual_script_builtin_funcs.h" + +class VisualScriptExpression : public VisualScriptNode { + + OBJ_TYPE(VisualScriptExpression,VisualScriptNode) +friend class VisualScriptNodeInstanceExpression; + + struct Input { + + Variant::Type type; + String name; + + Input() { type=Variant::NIL; } + }; + + Vector<Input> inputs; + Variant::Type output_type; + + String expression; + + bool sequenced; + int str_ofs; + bool expression_dirty; + + bool _compile_expression(); + + enum TokenType { + TK_CURLY_BRACKET_OPEN, + TK_CURLY_BRACKET_CLOSE, + TK_BRACKET_OPEN, + TK_BRACKET_CLOSE, + TK_PARENTHESIS_OPEN, + TK_PARENTHESIS_CLOSE, + TK_IDENTIFIER, + TK_BUILTIN_FUNC, + TK_SELF, + TK_CONSTANT, + TK_BASIC_TYPE, + TK_COLON, + TK_COMMA, + TK_PERIOD, + TK_OP_IN, + TK_OP_EQUAL, + TK_OP_NOT_EQUAL, + TK_OP_LESS, + TK_OP_LESS_EQUAL, + TK_OP_GREATER, + TK_OP_GREATER_EQUAL, + TK_OP_AND, + TK_OP_OR, + TK_OP_NOT, + TK_OP_ADD, + TK_OP_SUB, + TK_OP_MUL, + TK_OP_DIV, + TK_OP_MOD, + TK_OP_SHIFT_LEFT, + TK_OP_SHIFT_RIGHT, + TK_OP_BIT_AND, + TK_OP_BIT_OR, + TK_OP_BIT_XOR, + TK_OP_BIT_INVERT, + TK_EOF, + TK_ERROR, + TK_MAX + }; + + static const char* token_name[TK_MAX]; + struct Token { + + TokenType type; + Variant value; + }; + + + void _set_error(const String& p_err) { + if (error_set) + return; + error_str=p_err; + error_set=true; + } + + Error _get_token(Token& r_token); + + String error_str; + bool error_set; + + + + struct ENode { + + enum Type { + TYPE_INPUT, + TYPE_CONSTANT, + TYPE_SELF, + TYPE_OPERATOR, + TYPE_INDEX, + TYPE_NAMED_INDEX, + TYPE_ARRAY, + TYPE_DICTIONARY, + TYPE_CONSTRUCTOR, + TYPE_BUILTIN_FUNC, + TYPE_CALL + }; + + ENode *next; + + Type type; + + ENode() { next=NULL; } + virtual ~ENode() { if (next) { memdelete(next); } } + }; + + struct Expression { + + bool is_op; + union { + Variant::Operator op; + ENode *node; + }; + }; + + ENode* _parse_expression(); + + struct InputNode : public ENode { + + int index; + InputNode() { + type=TYPE_INPUT; + } + }; + + + struct ConstantNode : public ENode { + + Variant value; + ConstantNode() { + type=TYPE_CONSTANT; + } + }; + + struct OperatorNode : public ENode { + + Variant::Operator op; + + ENode* nodes[2]; + + OperatorNode() { + type=TYPE_OPERATOR; + } + }; + + struct SelfNode : public ENode { + + + SelfNode() { + type=TYPE_SELF; + } + }; + + struct IndexNode : public ENode { + ENode*base; + ENode*index; + + IndexNode() { + type=TYPE_INDEX; + } + }; + + struct NamedIndexNode : public ENode { + ENode*base; + StringName name; + + NamedIndexNode() { + type=TYPE_NAMED_INDEX; + } + + }; + + struct ConstructorNode : public ENode { + Variant::Type data_type; + Vector<ENode*> arguments; + + ConstructorNode() { + type=TYPE_CONSTRUCTOR; + } + }; + + struct CallNode : public ENode { + ENode*base; + StringName method; + Vector<ENode*> arguments; + + CallNode() { + type=TYPE_CALL; + } + + }; + + struct ArrayNode : public ENode { + Vector<ENode*> array; + ArrayNode() { + type=TYPE_ARRAY; + } + + }; + + struct DictionaryNode : public ENode { + Vector<ENode*> dict; + DictionaryNode() { + type=TYPE_DICTIONARY; + } + + }; + + struct BuiltinFuncNode : public ENode { + VisualScriptBuiltinFunc::BuiltinFunc func; + Vector<ENode*> arguments; + BuiltinFuncNode() { + type=TYPE_BUILTIN_FUNC; + } + }; + + template<class T> + T* alloc_node() { + T* node = memnew(T); + node->next=nodes; + nodes=node; + return node; + } + + ENode *root; + ENode *nodes; + + + + + +protected: + + bool _set(const StringName& p_name, const Variant& p_value); + bool _get(const StringName& p_name,Variant &r_ret) const; + void _get_property_list( List<PropertyInfo> *p_list) const; + +public: + + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const { return "operators"; } + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptExpression(); + ~VisualScriptExpression(); +}; + + +void register_visual_script_expression_node(); + + +#endif // VISUALSCRIPTEXPRESSION_H diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp index cb0ff4086c..97338da187 100644 --- a/modules/visual_script/visual_script_flow_control.cpp +++ b/modules/visual_script/visual_script_flow_control.cpp @@ -2,6 +2,7 @@ #include "os/keyboard.h" #include "globals.h" + ////////////////////////////////////////// ////////////////RETURN//////////////////// ////////////////////////////////////////// @@ -85,7 +86,7 @@ void VisualScriptReturn::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_enable_return_value","enable"),&VisualScriptReturn::set_enable_return_value); ObjectTypeDB::bind_method(_MD("is_return_value_enabled"),&VisualScriptReturn::is_return_value_enabled); - String argt="Variant"; + String argt="Any"; for(int i=1;i<Variant::VARIANT_MAX;i++) { argt+=","+Variant::get_type_name(Variant::Type(i)); } @@ -152,7 +153,7 @@ static Ref<VisualScriptNode> create_return_node(const String& p_name) { int VisualScriptCondition::get_output_sequence_port_count() const { - return 2; + return 3; } bool VisualScriptCondition::has_input_sequence_port() const{ @@ -173,8 +174,10 @@ String VisualScriptCondition::get_output_sequence_port_text(int p_port) const { if (p_port==0) return "true"; - else + else if (p_port==1) return "false"; + else + return "done"; } PropertyInfo VisualScriptCondition::get_input_value_port_info(int p_idx) const{ @@ -217,10 +220,12 @@ public: virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - if (p_inputs[0]->operator bool()) - return 0; + if (p_start_mode==START_MODE_CONTINUE_SEQUENCE) + return 2; + else if (p_inputs[0]->operator bool()) + return 0 | STEP_FLAG_PUSH_STACK_BIT; else - return 1; + return 1 | STEP_FLAG_PUSH_STACK_BIT; } @@ -598,70 +603,64 @@ VisualScriptSequence::VisualScriptSequence() { ////////////////EVENT TYPE FILTER/////////// ////////////////////////////////////////// -static const char* event_type_names[InputEvent::TYPE_MAX]={ - "None", - "Key", - "MouseMotion", - "MouseButton", - "JoystickMotion", - "JoystickButton", - "ScreenTouch", - "ScreenDrag", - "Action" -}; - -int VisualScriptInputSelector::get_output_sequence_port_count() const { +int VisualScriptSwitch::get_output_sequence_port_count() const { - return InputEvent::TYPE_MAX; + return case_values.size()+1; } -bool VisualScriptInputSelector::has_input_sequence_port() const{ +bool VisualScriptSwitch::has_input_sequence_port() const{ return true; } -int VisualScriptInputSelector::get_input_value_port_count() const{ +int VisualScriptSwitch::get_input_value_port_count() const{ - return 1; + return case_values.size()+1; } -int VisualScriptInputSelector::get_output_value_port_count() const{ +int VisualScriptSwitch::get_output_value_port_count() const{ - return 1; + return 0; } -String VisualScriptInputSelector::get_output_sequence_port_text(int p_port) const { +String VisualScriptSwitch::get_output_sequence_port_text(int p_port) const { + + if (p_port==case_values.size()) + return "done"; - return event_type_names[p_port]; + return String(); } -PropertyInfo VisualScriptInputSelector::get_input_value_port_info(int p_idx) const{ +PropertyInfo VisualScriptSwitch::get_input_value_port_info(int p_idx) const{ - return PropertyInfo(Variant::INPUT_EVENT,"event"); + if (p_idx<case_values.size()) { + return PropertyInfo(case_values[p_idx].type," ="); + } else + return PropertyInfo(Variant::NIL,"input"); } -PropertyInfo VisualScriptInputSelector::get_output_value_port_info(int p_idx) const{ +PropertyInfo VisualScriptSwitch::get_output_value_port_info(int p_idx) const{ - return PropertyInfo(Variant::INPUT_EVENT,""); + return PropertyInfo(); } -String VisualScriptInputSelector::get_caption() const { +String VisualScriptSwitch::get_caption() const { - return "InputSelector"; + return "Switch"; } -String VisualScriptInputSelector::get_text() const { +String VisualScriptSwitch::get_text() const { - return ""; + return "'input' is:"; } -class VisualScriptNodeInstanceInputSelector : public VisualScriptNodeInstance { +class VisualScriptNodeInstanceSwitch : public VisualScriptNodeInstance { public: VisualScriptInstance* instance; - InputEvent::Type type; + int case_count; //virtual int get_working_memory_size() const { return 0; } //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } @@ -669,37 +668,95 @@ public: virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - if (p_inputs[0]->get_type()!=Variant::INPUT_EVENT) { - r_error_str="Input value not of type event"; - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - return 0; + if (p_start_mode==START_MODE_CONTINUE_SEQUENCE) { + return case_count; //exit } - InputEvent event = *p_inputs[0]; + for(int i=0;i<case_count;i++) { - *p_outputs[0] = event; + if (*p_inputs[i]==*p_inputs[case_count]) { + return i|STEP_FLAG_PUSH_STACK_BIT; + } + } - return event.type; + return case_count; } }; -VisualScriptNodeInstance* VisualScriptInputSelector::instance(VisualScriptInstance* p_instance) { +VisualScriptNodeInstance* VisualScriptSwitch::instance(VisualScriptInstance* p_instance) { - VisualScriptNodeInstanceInputSelector * instance = memnew(VisualScriptNodeInstanceInputSelector ); + VisualScriptNodeInstanceSwitch * instance = memnew(VisualScriptNodeInstanceSwitch ); instance->instance=p_instance; + instance->case_count=case_values.size(); return instance; } +bool VisualScriptSwitch::_set(const StringName& p_name, const Variant& p_value) { + if (String(p_name)=="case_count") { + case_values.resize(p_value); + _change_notify(); + ports_changed_notify(); + return true; + } -void VisualScriptInputSelector::_bind_methods() { + if (String(p_name).begins_with("case/")) { + int idx = String(p_name).get_slice("/",1).to_int(); + ERR_FAIL_INDEX_V(idx,case_values.size(),false); + case_values[idx].type=Variant::Type(int(p_value)); + _change_notify(); + ports_changed_notify(); + + return true; + } + + return false; } -VisualScriptInputSelector::VisualScriptInputSelector() { +bool VisualScriptSwitch::_get(const StringName& p_name,Variant &r_ret) const { + + if (String(p_name)=="case_count") { + r_ret=case_values.size(); + return true; + } + + if (String(p_name).begins_with("case/")) { + + int idx = String(p_name).get_slice("/",1).to_int(); + ERR_FAIL_INDEX_V(idx,case_values.size(),false); + + r_ret=case_values[idx].type; + return true; + } + + return false; + +} +void VisualScriptSwitch::_get_property_list( List<PropertyInfo> *p_list) const { + + p_list->push_back(PropertyInfo(Variant::INT,"case_count",PROPERTY_HINT_RANGE,"0,128")); + + String argt="Any"; + for(int i=1;i<Variant::VARIANT_MAX;i++) { + argt+=","+Variant::get_type_name(Variant::Type(i)); + } + + for(int i=0;i<case_values.size();i++) { + p_list->push_back(PropertyInfo(Variant::INT,"case/"+itos(i),PROPERTY_HINT_ENUM,argt)); + } +} + + +void VisualScriptSwitch::_bind_methods() { + + +} + +VisualScriptSwitch::VisualScriptSwitch() { } @@ -1354,6 +1411,19 @@ bool VisualScriptInputFilter::_get(const StringName& p_name,Variant &r_ret) cons } return false; } + +static const char* event_type_names[InputEvent::TYPE_MAX]={ + "None", + "Key", + "MouseMotion", + "MouseButton", + "JoystickMotion", + "JoystickButton", + "ScreenTouch", + "ScreenDrag", + "Action" +}; + void VisualScriptInputFilter::_get_property_list( List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::INT,"filter_count",PROPERTY_HINT_RANGE,"0,64")); @@ -1660,6 +1730,197 @@ VisualScriptInputFilter::VisualScriptInputFilter() { } +////////////////////////////////////////// +////////////////TYPE CAST/////////// +////////////////////////////////////////// + + +int VisualScriptTypeCast::get_output_sequence_port_count() const { + + return 2; +} + +bool VisualScriptTypeCast::has_input_sequence_port() const{ + + return true; +} + +int VisualScriptTypeCast::get_input_value_port_count() const{ + + + return 1; +} +int VisualScriptTypeCast::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptTypeCast::get_output_sequence_port_text(int p_port) const { + + return p_port==0 ? "yes" : "no"; +} + +PropertyInfo VisualScriptTypeCast::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(Variant::OBJECT,"instance"); +} + +PropertyInfo VisualScriptTypeCast::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(Variant::OBJECT,""); +} + + +String VisualScriptTypeCast::get_caption() const { + + return "TypeCast"; +} + +String VisualScriptTypeCast::get_text() const { + + if (script!=String()) + return "Is "+script.get_file()+"?"; + else + return "Is "+base_type+"?"; +} + +void VisualScriptTypeCast::set_base_type(const StringName& p_type) { + + if (base_type==p_type) + return; + + base_type=p_type; + _change_notify(); + ports_changed_notify(); +} + +StringName VisualScriptTypeCast::get_base_type() const{ + + return base_type; +} + +void VisualScriptTypeCast::set_base_script(const String& p_path){ + + if (script==p_path) + return; + + script=p_path; + _change_notify(); + ports_changed_notify(); + +} +String VisualScriptTypeCast::get_base_script() const{ + + return script; +} + + +class VisualScriptNodeInstanceTypeCast : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + StringName base_type; + String script; + + //virtual int get_working_memory_size() const { return 0; } + //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } + //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return false; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + Object *obj = *p_inputs[0]; + + *p_outputs[0]=Variant(); + + if (!obj) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Instance is null"; + return 0; + } + + if (script!=String()) { + + Ref<Script> obj_script = obj->get_script(); + if (!obj_script.is_valid()) { + return 1; //well, definitely not the script because object we got has no script. + } + + if (!ResourceCache::has(script)) { + //if the script is not in use by anyone, we can safely assume whathever we got is not casting to it. + return 1; + } + Ref<Script> cast_script = Ref<Resource>(ResourceCache::get(script)); + if (!cast_script.is_valid()) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Script path is not a script: "+script; + return 1; + } + + while(obj_script.is_valid()) { + + if (cast_script==obj_script) { + *p_outputs[0]=*p_inputs[0]; //copy + return 0; // it is the script, yey + } + + obj_script=obj_script->get_base_script(); + } + + return 1; //not found sorry + } + + if (ObjectTypeDB::is_type(obj->get_type_name(),base_type)) { + *p_outputs[0]=*p_inputs[0]; //copy + return 0; + } else + return 1; + + } + + +}; + +VisualScriptNodeInstance* VisualScriptTypeCast::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceTypeCast * instance = memnew(VisualScriptNodeInstanceTypeCast ); + instance->instance=p_instance; + instance->base_type=base_type; + instance->script=script; + return instance; +} + + + +void VisualScriptTypeCast::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_base_type","type"),&VisualScriptTypeCast::set_base_type); + ObjectTypeDB::bind_method(_MD("get_base_type"),&VisualScriptTypeCast::get_base_type); + + ObjectTypeDB::bind_method(_MD("set_base_script","path"),&VisualScriptTypeCast::set_base_script); + ObjectTypeDB::bind_method(_MD("get_base_script"),&VisualScriptTypeCast::get_base_script); + + + List<String> script_extensions; + for(int i=0;i>ScriptServer::get_language_count();i++) { + ScriptServer::get_language(i)->get_recognized_extensions(&script_extensions); + } + + String script_ext_hint; + for (List<String>::Element *E=script_extensions.front();E;E=E->next()) { + if (script_ext_hint!=String()) + script_ext_hint+=","; + script_ext_hint+="*."+E->get(); + } + + ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/base_type",PROPERTY_HINT_TYPE_STRING,"Object"),_SCS("set_base_type"),_SCS("get_base_type")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"property/base_script",PROPERTY_HINT_FILE,script_ext_hint),_SCS("set_base_script"),_SCS("get_base_script")); + +} + +VisualScriptTypeCast::VisualScriptTypeCast() { + + base_type="Object"; +} void register_visual_script_flow_control_nodes() { @@ -1670,8 +1931,9 @@ void register_visual_script_flow_control_nodes() { VisualScriptLanguage::singleton->add_register_func("flow_control/while",create_node_generic<VisualScriptWhile>); VisualScriptLanguage::singleton->add_register_func("flow_control/iterator",create_node_generic<VisualScriptIterator>); VisualScriptLanguage::singleton->add_register_func("flow_control/sequence",create_node_generic<VisualScriptSequence>); - VisualScriptLanguage::singleton->add_register_func("flow_control/input_select",create_node_generic<VisualScriptInputSelector>); + VisualScriptLanguage::singleton->add_register_func("flow_control/switch",create_node_generic<VisualScriptSwitch>); VisualScriptLanguage::singleton->add_register_func("flow_control/input_filter",create_node_generic<VisualScriptInputFilter>); + VisualScriptLanguage::singleton->add_register_func("flow_control/type_cast",create_node_generic<VisualScriptTypeCast>); diff --git a/modules/visual_script/visual_script_flow_control.h b/modules/visual_script/visual_script_flow_control.h index ed0e328629..e0da84a534 100644 --- a/modules/visual_script/visual_script_flow_control.h +++ b/modules/visual_script/visual_script_flow_control.h @@ -197,14 +197,24 @@ public: -class VisualScriptInputSelector : public VisualScriptNode { +class VisualScriptSwitch : public VisualScriptNode { - OBJ_TYPE(VisualScriptInputSelector,VisualScriptNode) + OBJ_TYPE(VisualScriptSwitch,VisualScriptNode) + struct Case { + Variant::Type type; + Case() { type=Variant::NIL; } + }; + Vector<Case> case_values; +friend class VisualScriptNodeInstanceSwitch; protected: + bool _set(const StringName& p_name, const Variant& p_value); + bool _get(const StringName& p_name,Variant &r_ret) const; + void _get_property_list( List<PropertyInfo> *p_list) const; + static void _bind_methods(); public: @@ -213,6 +223,7 @@ public: virtual String get_output_sequence_port_text(int p_port) const; + virtual bool has_mixed_input_and_sequence_ports() const { return true; } virtual int get_input_value_port_count() const; @@ -229,7 +240,7 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); - VisualScriptInputSelector(); + VisualScriptSwitch(); }; @@ -273,6 +284,56 @@ public: VisualScriptInputFilter(); }; + + + + +class VisualScriptTypeCast : public VisualScriptNode { + + OBJ_TYPE(VisualScriptTypeCast,VisualScriptNode) + + + StringName base_type; + String script; + +protected: + + static void _bind_methods(); +public: + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const { return "flow_control"; } + + void set_base_type(const StringName& p_type); + StringName get_base_type() const; + + void set_base_script(const String& p_path); + String get_base_script() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + + VisualScriptTypeCast(); +}; + + + + void register_visual_script_flow_control_nodes(); diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp index 4006dab4a5..5a21cb40e9 100644 --- a/modules/visual_script/visual_script_func_nodes.cpp +++ b/modules/visual_script/visual_script_func_nodes.cpp @@ -3,6 +3,8 @@ #include "os/os.h" #include "scene/main/node.h" #include "visual_script_nodes.h" +#include "io/resource_loader.h" +#include "globals.h" ////////////////////////////////////////// ////////////////CALL////////////////////// @@ -10,12 +12,18 @@ int VisualScriptFunctionCall::get_output_sequence_port_count() const { - return 1; + if (method_cache.flags&METHOD_FLAG_CONST || call_mode==CALL_MODE_BASIC_TYPE) + return 0; + else + return 1; } bool VisualScriptFunctionCall::has_input_sequence_port() const{ - return true; + if (method_cache.flags&METHOD_FLAG_CONST || call_mode==CALL_MODE_BASIC_TYPE) + return false; + else + return true; } #ifdef TOOLS_ENABLED @@ -91,20 +99,23 @@ StringName VisualScriptFunctionCall::_get_base_type() const { return base_type; } + int VisualScriptFunctionCall::get_input_value_port_count() const{ if (call_mode==CALL_MODE_BASIC_TYPE) { Vector<StringName> names = Variant::get_method_argument_names(basic_type,function); - return names.size()+1; + return names.size() + (rpc_call_mode>=RPC_RELIABLE_TO_ID?1:0) + 1; } else { + MethodBind *mb = ObjectTypeDB::get_method(_get_base_type(),function); - if (!mb) - return 0; + if (mb) { + return mb->get_argument_count() + (call_mode==CALL_MODE_INSTANCE?1:0) + (rpc_call_mode>=RPC_RELIABLE_TO_ID?1:0) - use_default_args; + } - return mb->get_argument_count() + (call_mode==CALL_MODE_INSTANCE?1:0) - use_default_args; + return method_cache.arguments.size() + (call_mode==CALL_MODE_INSTANCE?1:0) + (rpc_call_mode>=RPC_RELIABLE_TO_ID?1:0) - use_default_args; } } @@ -117,11 +128,18 @@ int VisualScriptFunctionCall::get_output_value_port_count() const{ return returns?1:0; } else { + int ret; MethodBind *mb = ObjectTypeDB::get_method(_get_base_type(),function); - if (!mb) - return 0; + if (mb) { + ret = mb->has_return() ? 1 : 0; + } else + ret = 1; //it is assumed that script always returns something + + if (call_mode==CALL_MODE_INSTANCE) { + ret++; + } - return mb->has_return() ? 1 : 0; + return ret; } } @@ -143,6 +161,16 @@ PropertyInfo VisualScriptFunctionCall::get_input_value_port_info(int p_idx) cons } } + if (rpc_call_mode>=RPC_RELIABLE_TO_ID) { + + if (p_idx==0) { + return PropertyInfo(Variant::INT,"peer_id"); + } else { + p_idx--; + } + + } + #ifdef DEBUG_METHODS_ENABLED if (call_mode==CALL_MODE_BASIC_TYPE) { @@ -155,10 +183,15 @@ PropertyInfo VisualScriptFunctionCall::get_input_value_port_info(int p_idx) cons } else { MethodBind *mb = ObjectTypeDB::get_method(_get_base_type(),function); - if (!mb) - return PropertyInfo(); + if (mb) { + return mb->get_argument_info(p_idx); + } + + if (p_idx>=0 && p_idx < method_cache.arguments.size()) { + return method_cache.arguments[p_idx]; + } - return mb->get_argument_info(p_idx); + return PropertyInfo(); } #else return PropertyInfo(); @@ -177,13 +210,34 @@ PropertyInfo VisualScriptFunctionCall::get_output_value_port_info(int p_idx) con return PropertyInfo(Variant::get_method_return_type(basic_type,function),""); } else { - MethodBind *mb = ObjectTypeDB::get_method(_get_base_type(),function); - if (!mb) - return PropertyInfo(); + if (call_mode==CALL_MODE_INSTANCE) { + if (p_idx==0) { + return PropertyInfo(Variant::OBJECT,"pass"); + } else { + p_idx--; + } + } + + PropertyInfo ret; + + /*MethodBind *mb = ObjectTypeDB::get_method(_get_base_type(),function); + if (mb) { + + ret = mb->get_argument_info(-1); + } else {*/ + + ret = method_cache.return_val; + + //} + + if (call_mode==CALL_MODE_INSTANCE) { + ret.name="return"; + } else { + ret.name=""; + } + return ret; + - PropertyInfo pi = mb->get_argument_info(-1); - pi.name=""; - return pi; } #else return PropertyInfo(); @@ -193,59 +247,38 @@ PropertyInfo VisualScriptFunctionCall::get_output_value_port_info(int p_idx) con String VisualScriptFunctionCall::get_caption() const { - static const char*cname[4]= { + static const char*cname[5]= { "CallSelf", "CallNode", "CallInstance", - "CallBasic" + "CallBasic", + "CallSingleton" }; - return cname[call_mode]; + String caption = cname[call_mode]; + + if (rpc_call_mode) { + caption+=" (RPC)"; + } + + return caption; } String VisualScriptFunctionCall::get_text() const { if (call_mode==CALL_MODE_SELF) return " "+String(function)+"()"; + if (call_mode==CALL_MODE_SINGLETON) + return String(singleton)+":"+String(function)+"()"; else if (call_mode==CALL_MODE_BASIC_TYPE) return Variant::get_type_name(basic_type)+"."+String(function)+"()"; + else if (call_mode==CALL_MODE_NODE_PATH) + return " ["+String(base_path.simplified())+"]."+String(function)+"()"; else return " "+base_type+"."+String(function)+"()"; } -void VisualScriptFunctionCall::_update_defargs() { - - //save base type if accessible - - if (call_mode==CALL_MODE_NODE_PATH) { - - Node* node=_get_base_node(); - if (node) { - base_type=node->get_type(); - } - } else if (call_mode==CALL_MODE_SELF) { - - if (get_visual_script().is_valid()) { - base_type=get_visual_script()->get_instance_base_type(); - } - } - - - if (call_mode==CALL_MODE_BASIC_TYPE) { - use_default_args = Variant::get_method_default_arguments(basic_type,function).size(); - } else { - if (!get_visual_script().is_valid()) - return; //do not change if not valid yet - - MethodBind *mb = ObjectTypeDB::get_method(_get_base_type(),function); - if (!mb) - return; - - use_default_args=mb->get_default_argument_count(); - } - -} void VisualScriptFunctionCall::set_basic_type(Variant::Type p_type) { @@ -253,7 +286,7 @@ void VisualScriptFunctionCall::set_basic_type(Variant::Type p_type) { return; basic_type=p_type; - _update_defargs(); + _change_notify(); ports_changed_notify(); } @@ -269,7 +302,6 @@ void VisualScriptFunctionCall::set_base_type(const StringName& p_type) { return; base_type=p_type; - _update_defargs(); _change_notify(); ports_changed_notify(); } @@ -279,13 +311,144 @@ StringName VisualScriptFunctionCall::get_base_type() const{ return base_type; } +void VisualScriptFunctionCall::set_base_script(const String& p_path) { + + if (base_script==p_path) + return; + + base_script=p_path; + _change_notify(); + ports_changed_notify(); +} + +String VisualScriptFunctionCall::get_base_script() const { + + return base_script; +} + +void VisualScriptFunctionCall::set_singleton(const StringName& p_path) { + + if (singleton==p_path) + return; + + singleton=p_path; + Object *obj = Globals::get_singleton()->get_singleton_object(singleton); + if (obj) { + base_type=obj->get_type(); + } + + _change_notify(); + ports_changed_notify(); +} + +StringName VisualScriptFunctionCall::get_singleton() const { + + return singleton; +} + + + +void VisualScriptFunctionCall::_update_method_cache() { + StringName type; + Ref<Script> script; + + if (call_mode==CALL_MODE_NODE_PATH) { + + Node* node=_get_base_node(); + if (node) { + type=node->get_type(); + base_type=type; //cache, too + script = node->get_script(); + } + } else if (call_mode==CALL_MODE_SELF) { + + if (get_visual_script().is_valid()) { + type=get_visual_script()->get_instance_base_type(); + base_type=type; //cache, too + script=get_visual_script(); + } + + } else if (call_mode==CALL_MODE_SINGLETON) { + + Object *obj = Globals::get_singleton()->get_singleton_object(singleton); + if (obj) { + type=obj->get_type(); + script=obj->get_script(); + } + + } else if (call_mode==CALL_MODE_INSTANCE) { + + type=base_type; + if (base_script!=String()) { + + if (!ResourceCache::has(base_script) && ScriptServer::edit_request_func) { + + ScriptServer::edit_request_func(base_script); //make sure it's loaded + } + + if (ResourceCache::has(base_script)) { + + script = Ref<Resource>( ResourceCache::get(base_script) ); + } else { + return; + } + } + } + + +// print_line("BASE: "+String(type)+" FUNC: "+String(function)); + MethodBind *mb = ObjectTypeDB::get_method(type,function); + if (mb) { + use_default_args=mb->get_default_argument_count(); + method_cache = MethodInfo(); + for(int i=0;i<mb->get_argument_count();i++) { +#ifdef DEBUG_METHODS_ENABLED + method_cache.arguments.push_back(mb->get_argument_info(i)); +#else + method_cache.arguments.push_back(PropertyInfo()); +#endif + } + + if (mb->is_const()) { + method_cache.flags|=METHOD_FLAG_CONST; + } + +#ifdef DEBUG_METHODS_ENABLED + + method_cache.return_val = mb->get_argument_info(-1); +#endif + + if (mb->is_vararg()) { + //for vararg just give it 10 arguments (should be enough for most use cases) + for(int i=0;i<10;i++) { + method_cache.arguments.push_back(PropertyInfo(Variant::NIL,"arg"+itos(i))); + use_default_args++; + } + } + } else if (script.is_valid() && script->has_method(function)) { + + method_cache = script->get_method_info(function); + use_default_args=method_cache.default_arguments.size(); + } +} + void VisualScriptFunctionCall::set_function(const StringName& p_type){ if (function==p_type) return; function=p_type; - _update_defargs(); + + if (call_mode==CALL_MODE_BASIC_TYPE) { + use_default_args = Variant::get_method_default_arguments(basic_type,function).size(); + } else { + //update all caches + + _update_method_cache(); + + } + + _change_notify(); ports_changed_notify(); } @@ -301,7 +464,6 @@ void VisualScriptFunctionCall::set_base_path(const NodePath& p_type) { return; base_path=p_type; - _update_defargs(); _change_notify(); ports_changed_notify(); } @@ -318,7 +480,6 @@ void VisualScriptFunctionCall::set_call_mode(CallMode p_mode) { return; call_mode=p_mode; - _update_defargs(); _change_notify(); ports_changed_notify(); @@ -339,10 +500,49 @@ void VisualScriptFunctionCall::set_use_default_args(int p_amount) { } +void VisualScriptFunctionCall::set_rpc_call_mode(VisualScriptFunctionCall::RPCCallMode p_mode) { + + if (rpc_call_mode==p_mode) + return; + rpc_call_mode=p_mode; + ports_changed_notify(); + _change_notify(); +} + +VisualScriptFunctionCall::RPCCallMode VisualScriptFunctionCall::get_rpc_call_mode() const{ + + return rpc_call_mode; +} + + int VisualScriptFunctionCall::get_use_default_args() const{ return use_default_args; } + + +void VisualScriptFunctionCall::set_validate(bool p_amount) { + + validate=p_amount; +} + +bool VisualScriptFunctionCall::get_validate() const { + + return validate; +} + + +void VisualScriptFunctionCall::_set_argument_cache(const Dictionary& p_cache) { + //so everything works in case all else fails + method_cache=MethodInfo::from_dict(p_cache); + +} + +Dictionary VisualScriptFunctionCall::_get_argument_cache() const { + + return method_cache; +} + void VisualScriptFunctionCall::_validate_property(PropertyInfo& property) const { if (property.name=="function/base_type") { @@ -351,12 +551,36 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo& property) const } } + if (property.name=="function/base_script") { + if (call_mode!=CALL_MODE_INSTANCE) { + property.usage=0; + } + } + if (property.name=="function/basic_type") { if (call_mode!=CALL_MODE_BASIC_TYPE) { property.usage=0; } } + if (property.name=="function/singleton") { + if (call_mode!=CALL_MODE_SINGLETON) { + property.usage=0; + } else { + List<Globals::Singleton> names; + Globals::get_singleton()->get_singletons(&names); + property.hint=PROPERTY_HINT_ENUM; + String sl; + for (List<Globals::Singleton>::Element *E=names.front();E;E=E->next()) { + if (sl!=String()) + sl+=","; + sl+=E->get().name; + } + property.hint_string=sl; + + } + } + if (property.name=="function/node_path") { if (call_mode!=CALL_MODE_NODE_PATH) { property.usage=0; @@ -372,48 +596,59 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo& property) const } if (property.name=="function/function") { - property.hint=PROPERTY_HINT_ENUM; - - - List<MethodInfo> methods; if (call_mode==CALL_MODE_BASIC_TYPE) { - if (basic_type==Variant::NIL) { - property.usage=0; - return; //nothing for nil - } - Variant::CallError ce; - Variant v = Variant::construct(basic_type,NULL,0,ce); - v.get_method_list(&methods); + property.hint=PROPERTY_HINT_METHOD_OF_VARIANT_TYPE; + property.hint_string=Variant::get_type_name(basic_type); + } else if (call_mode==CALL_MODE_SELF && get_visual_script().is_valid()) { + property.hint=PROPERTY_HINT_METHOD_OF_SCRIPT; + property.hint_string=itos(get_visual_script()->get_instance_ID()); + } else if (call_mode==CALL_MODE_SINGLETON) { - } else { + Object *obj = Globals::get_singleton()->get_singleton_object(singleton); + if (obj) { + property.hint=PROPERTY_HINT_METHOD_OF_INSTANCE; + property.hint_string=itos(obj->get_instance_ID()); + } else { - StringName base = _get_base_type(); - ObjectTypeDB::get_method_list(base,&methods); + property.hint=PROPERTY_HINT_METHOD_OF_BASE_TYPE; + property.hint_string=base_type;//should be cached + } + } else if (call_mode==CALL_MODE_INSTANCE) { + property.hint=PROPERTY_HINT_METHOD_OF_BASE_TYPE; + property.hint_string=base_type; + if (base_script!=String()) { + if (!ResourceCache::has(base_script) && ScriptServer::edit_request_func) { - } + ScriptServer::edit_request_func(base_script); //make sure it's loaded + } - List<String> mstring; - for (List<MethodInfo>::Element *E=methods.front();E;E=E->next()) { - if (E->get().name.begins_with("_")) - continue; - mstring.push_back(E->get().name.get_slice(":",0)); - } + if (ResourceCache::has(base_script)) { - mstring.sort(); + Ref<Script> script = Ref<Resource>( ResourceCache::get(base_script) ); + if (script.is_valid()) { - String ml; - for (List<String>::Element *E=mstring.front();E;E=E->next()) { + property.hint=PROPERTY_HINT_METHOD_OF_SCRIPT; + property.hint_string=itos(script->get_instance_ID()); + } + } + } + + } else if (call_mode==CALL_MODE_NODE_PATH) { + Node *node = _get_base_node(); + if (node) { + property.hint=PROPERTY_HINT_METHOD_OF_INSTANCE; + property.hint_string=itos(node->get_instance_ID()); + } else { + property.hint=PROPERTY_HINT_METHOD_OF_BASE_TYPE; + property.hint_string=get_base_type(); + } - if (ml!=String()) - ml+=","; - ml+=E->get(); } - property.hint_string=ml; } if (property.name=="function/use_default_args") { @@ -440,6 +675,13 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo& property) const property.hint_string="0,"+itos(mc)+",1"; } } + + if (property.name=="rpc/call_mode") { + if (call_mode==CALL_MODE_BASIC_TYPE) { + property.usage=0; + } + } + } @@ -448,9 +690,15 @@ void VisualScriptFunctionCall::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_base_type","base_type"),&VisualScriptFunctionCall::set_base_type); ObjectTypeDB::bind_method(_MD("get_base_type"),&VisualScriptFunctionCall::get_base_type); + ObjectTypeDB::bind_method(_MD("set_base_script","base_script"),&VisualScriptFunctionCall::set_base_script); + ObjectTypeDB::bind_method(_MD("get_base_script"),&VisualScriptFunctionCall::get_base_script); + ObjectTypeDB::bind_method(_MD("set_basic_type","basic_type"),&VisualScriptFunctionCall::set_basic_type); ObjectTypeDB::bind_method(_MD("get_basic_type"),&VisualScriptFunctionCall::get_basic_type); + ObjectTypeDB::bind_method(_MD("set_singleton","singleton"),&VisualScriptFunctionCall::set_singleton); + ObjectTypeDB::bind_method(_MD("get_singleton"),&VisualScriptFunctionCall::get_singleton); + ObjectTypeDB::bind_method(_MD("set_function","function"),&VisualScriptFunctionCall::set_function); ObjectTypeDB::bind_method(_MD("get_function"),&VisualScriptFunctionCall::get_function); @@ -463,6 +711,14 @@ void VisualScriptFunctionCall::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_use_default_args","amount"),&VisualScriptFunctionCall::set_use_default_args); ObjectTypeDB::bind_method(_MD("get_use_default_args"),&VisualScriptFunctionCall::get_use_default_args); + ObjectTypeDB::bind_method(_MD("_set_argument_cache","argument_cache"),&VisualScriptFunctionCall::_set_argument_cache); + ObjectTypeDB::bind_method(_MD("_get_argument_cache"),&VisualScriptFunctionCall::_get_argument_cache); + + ObjectTypeDB::bind_method(_MD("set_rpc_call_mode","mode"),&VisualScriptFunctionCall::set_rpc_call_mode); + ObjectTypeDB::bind_method(_MD("get_rpc_call_mode"),&VisualScriptFunctionCall::get_rpc_call_mode); + + ObjectTypeDB::bind_method(_MD("set_validate","enable"),&VisualScriptFunctionCall::set_validate); + ObjectTypeDB::bind_method(_MD("get_validate"),&VisualScriptFunctionCall::get_validate); String bt; for(int i=0;i<Variant::VARIANT_MAX;i++) { @@ -472,12 +728,32 @@ void VisualScriptFunctionCall::_bind_methods() { bt+=Variant::get_type_name(Variant::Type(i)); } - ADD_PROPERTY(PropertyInfo(Variant::INT,"function/call_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance,Basic Type",PROPERTY_USAGE_NOEDITOR),_SCS("set_call_mode"),_SCS("get_call_mode")); + + List<String> script_extensions; + for(int i=0;i<ScriptServer::get_language_count();i++) { + ScriptServer::get_language(i)->get_recognized_extensions(&script_extensions); + } + + String script_ext_hint; + for (List<String>::Element *E=script_extensions.front();E;E=E->next()) { + if (script_ext_hint!=String()) + script_ext_hint+=","; + script_ext_hint+="*."+E->get(); + } + + + + ADD_PROPERTY(PropertyInfo(Variant::INT,"function/call_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance,Basic Type,Singleton"),_SCS("set_call_mode"),_SCS("get_call_mode")); ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/base_type",PROPERTY_HINT_TYPE_STRING,"Object"),_SCS("set_base_type"),_SCS("get_base_type")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/base_script",PROPERTY_HINT_FILE,script_ext_hint),_SCS("set_base_script"),_SCS("get_base_script")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/singleton"),_SCS("set_singleton"),_SCS("get_singleton")); ADD_PROPERTY(PropertyInfo(Variant::INT,"function/basic_type",PROPERTY_HINT_ENUM,bt),_SCS("set_basic_type"),_SCS("get_basic_type")); ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH,"function/node_path",PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE),_SCS("set_base_path"),_SCS("get_base_path")); - ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/function"),_SCS("set_function"),_SCS("get_function")); + ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY,"function/argument_cache",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR),_SCS("_set_argument_cache"),_SCS("_get_argument_cache")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/function"),_SCS("set_function"),_SCS("get_function")); //when set, if loaded properly, will override argument count. ADD_PROPERTY(PropertyInfo(Variant::INT,"function/use_default_args"),_SCS("set_use_default_args"),_SCS("get_use_default_args")); + ADD_PROPERTY(PropertyInfo(Variant::BOOL,"function/validate"),_SCS("set_validate"),_SCS("get_validate")); + ADD_PROPERTY(PropertyInfo(Variant::INT,"rpc/call_mode",PROPERTY_HINT_ENUM,"Disabled,Reliable,Unreliable,ReliableToID,UnreliableToID"),_SCS("set_rpc_call_mode"),_SCS("get_rpc_call_mode")); //when set, if loaded properly, will override argument count. BIND_CONSTANT( CALL_MODE_SELF ); BIND_CONSTANT( CALL_MODE_NODE_PATH); @@ -492,8 +768,11 @@ public: VisualScriptFunctionCall::CallMode call_mode; NodePath node_path; int input_args; + bool validate; bool returns; + VisualScriptFunctionCall::RPCCallMode rpc_mode; StringName function; + StringName singleton; VisualScriptFunctionCall *node; VisualScriptInstance *instance; @@ -504,6 +783,35 @@ public: //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; } + + _FORCE_INLINE_ bool call_rpc(Object* p_base,const Variant** p_args,int p_argcount) { + + if (!p_base) + return false; + + Node * node = p_base->cast_to<Node>(); + if (!node) + return false; + + int to_id=0; + bool reliable=true; + + if (rpc_mode>=VisualScriptFunctionCall::RPC_RELIABLE_TO_ID) { + to_id = *p_args[0]; + p_args+=1; + p_argcount-=1; + if (rpc_mode==VisualScriptFunctionCall::RPC_UNRELIABLE_TO_ID) { + reliable=false; + } + } else if (rpc_mode==VisualScriptFunctionCall::RPC_UNRELIABLE) { + reliable=false; + } + + node->rpcp(to_id,!reliable,function,p_args,p_argcount); + + return true; + } + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { @@ -513,7 +821,9 @@ public: Object *object=instance->get_owner_ptr(); - if (returns) { + if (rpc_mode) { + call_rpc(object,p_inputs,input_args); + } else if (returns) { *p_outputs[0] = object->call(function,p_inputs,input_args,r_error); } else { object->call(function,p_inputs,input_args,r_error); @@ -535,7 +845,9 @@ public: return 0; } - if (returns) { + if (rpc_mode) { + call_rpc(node,p_inputs,input_args); + } else if (returns) { *p_outputs[0] = another->call(function,p_inputs,input_args,r_error); } else { another->call(function,p_inputs,input_args,r_error); @@ -547,15 +859,53 @@ public: Variant v = *p_inputs[0]; - if (returns) { - *p_outputs[0] = v.call(function,p_inputs+1,input_args,r_error); + if (rpc_mode) { + Object *obj = v; + if (obj) { + call_rpc(obj,p_inputs+1,input_args-1); + } + } else if (returns) { + if (call_mode==VisualScriptFunctionCall::CALL_MODE_INSTANCE) { + *p_outputs[1] = v.call(function,p_inputs+1,input_args,r_error); + } else { + *p_outputs[0] = v.call(function,p_inputs+1,input_args,r_error); + } } else { v.call(function,p_inputs+1,input_args,r_error); } + if (call_mode==VisualScriptFunctionCall::CALL_MODE_INSTANCE) { + *p_outputs[0]=*p_inputs[0]; + } + + } break; + case VisualScriptFunctionCall::CALL_MODE_SINGLETON: { + + Object *object=Globals::get_singleton()->get_singleton_object(singleton); + if (!object) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Invalid singleton name: '"+String(singleton)+"'"; + return 0; + } + + if (rpc_mode) { + call_rpc(object,p_inputs,input_args); + } else if (returns) { + *p_outputs[0] = object->call(function,p_inputs,input_args,r_error); + } else { + object->call(function,p_inputs,input_args,r_error); + } } break; } + + if (!validate) { + + //ignore call errors if validation is disabled + r_error.error=Variant::CallError::CALL_OK; + r_error_str=String(); + } + return 0; } @@ -568,19 +918,37 @@ VisualScriptNodeInstance* VisualScriptFunctionCall::instance(VisualScriptInstanc VisualScriptNodeInstanceFunctionCall * instance = memnew(VisualScriptNodeInstanceFunctionCall ); instance->node=this; instance->instance=p_instance; + instance->singleton=singleton; instance->function=function; instance->call_mode=call_mode; instance->returns=get_output_value_port_count(); instance->node_path=base_path; instance->input_args = get_input_value_port_count() - ( (call_mode==CALL_MODE_BASIC_TYPE || call_mode==CALL_MODE_INSTANCE) ? 1: 0 ); + instance->rpc_mode=rpc_call_mode; + instance->validate=validate; return instance; } + + +VisualScriptFunctionCall::TypeGuess VisualScriptFunctionCall::guess_output_type(TypeGuess* p_inputs, int p_output) const { + + if (p_output==0 && call_mode==CALL_MODE_INSTANCE) { + return p_inputs[0]; + } + + return VisualScriptNode::guess_output_type(p_inputs,p_output); + +} + VisualScriptFunctionCall::VisualScriptFunctionCall() { - call_mode=CALL_MODE_INSTANCE; + validate=true; + call_mode=CALL_MODE_SELF; basic_type=Variant::NIL; use_default_args=0; base_type="Object"; + rpc_call_mode=RPC_DISABLED; + } @@ -613,12 +981,12 @@ static const char* event_type_names[InputEvent::TYPE_MAX]={ int VisualScriptPropertySet::get_output_sequence_port_count() const { - return 1; + return call_mode!=CALL_MODE_BASIC_TYPE ? 1 : 0; } bool VisualScriptPropertySet::has_input_sequence_port() const{ - return true; + return call_mode!=CALL_MODE_BASIC_TYPE ? true : false; } Node *VisualScriptPropertySet::_get_base_node() const { @@ -675,16 +1043,13 @@ StringName VisualScriptPropertySet::_get_base_type() const { int VisualScriptPropertySet::get_input_value_port_count() const{ - int pc = (call_mode==CALL_MODE_BASIC_TYPE || call_mode==CALL_MODE_INSTANCE)?1:0; - - if (!use_builtin_value) - pc++; + int pc = (call_mode==CALL_MODE_BASIC_TYPE || call_mode==CALL_MODE_INSTANCE)?2:1; return pc; } int VisualScriptPropertySet::get_output_value_port_count() const{ - return call_mode==CALL_MODE_BASIC_TYPE? 1 : 0; + return (call_mode==CALL_MODE_BASIC_TYPE || call_mode==CALL_MODE_INSTANCE) ? 1 : 0; } String VisualScriptPropertySet::get_output_sequence_port_text(int p_port) const { @@ -705,60 +1070,16 @@ PropertyInfo VisualScriptPropertySet::get_input_value_port_info(int p_idx) const } } -#ifdef DEBUG_METHODS_ENABLED - - //not very efficient but.. - - - List<PropertyInfo> pinfo; - - if (call_mode==CALL_MODE_BASIC_TYPE) { - - - Variant v; - if (basic_type==Variant::INPUT_EVENT) { - InputEvent ev; - ev.type=event_type; - v=ev; - } else { - Variant::CallError ce; - v = Variant::construct(basic_type,NULL,0,ce); - } - v.get_property_list(&pinfo); - - } else if (call_mode==CALL_MODE_NODE_PATH) { - - Node *n = _get_base_node(); - if (n) { - n->get_property_list(&pinfo); - } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - } - } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - } - - - for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { - - if (E->get().name==property) { - - PropertyInfo info=E->get(); - info.name="value"; - return info; - } - } - - -#endif - - return PropertyInfo(Variant::NIL,"value"); - + PropertyInfo pinfo=type_cache; + pinfo.name="value"; + return pinfo; } PropertyInfo VisualScriptPropertySet::get_output_value_port_info(int p_idx) const{ if (call_mode==CALL_MODE_BASIC_TYPE) { return PropertyInfo(basic_type,"out"); + } else if (call_mode==CALL_MODE_INSTANCE) { + return PropertyInfo(Variant::OBJECT,"pass"); } else { return PropertyInfo(); } @@ -784,18 +1105,12 @@ String VisualScriptPropertySet::get_text() const { if (call_mode==CALL_MODE_BASIC_TYPE) prop=Variant::get_type_name(basic_type)+"."+property; - else + else if (call_mode==CALL_MODE_NODE_PATH) + prop=String(base_path)+":"+property; + else if (call_mode==CALL_MODE_SELF) prop=property; - - if (use_builtin_value) { - String bit = builtin_value.get_construct_string(); - if (bit.length()>40) { - bit=bit.substr(0,40); - bit+="..."; - } - - prop+="\n "+bit; - } + else if (call_mode==CALL_MODE_INSTANCE) + prop=String(base_type)+":"+property; return prop; @@ -839,6 +1154,9 @@ void VisualScriptPropertySet::set_event_type(InputEvent::Type p_type) { if (event_type==p_type) return; event_type=p_type; + if (call_mode==CALL_MODE_BASIC_TYPE) { + _update_cache(); + } _change_notify(); _update_base_type(); ports_changed_notify(); @@ -865,12 +1183,133 @@ StringName VisualScriptPropertySet::get_base_type() const{ return base_type; } + +void VisualScriptPropertySet::set_base_script(const String& p_path) { + + if (base_script==p_path) + return; + + base_script=p_path; + _change_notify(); + ports_changed_notify(); +} + +String VisualScriptPropertySet::get_base_script() const { + + return base_script; +} + + +void VisualScriptPropertySet::_update_cache() { + + + if (!OS::get_singleton()->get_main_loop()) + return; + if (!OS::get_singleton()->get_main_loop()->cast_to<SceneTree>()) + return; + + if (!OS::get_singleton()->get_main_loop()->cast_to<SceneTree>()->is_editor_hint()) //only update cache if editor exists, it's pointless otherwise + return; + + if (call_mode==CALL_MODE_BASIC_TYPE) { + + //not super efficient.. + + Variant v; + if (basic_type==Variant::INPUT_EVENT) { + InputEvent ev; + ev.type=event_type; + v=ev; + } else { + Variant::CallError ce; + v = Variant::construct(basic_type,NULL,0,ce); + } + + List<PropertyInfo> pinfo; + v.get_property_list(&pinfo); + + for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { + + if (E->get().name==property) { + + type_cache=E->get(); + } + } + + } else { + + + StringName type; + Ref<Script> script; + Node *node=NULL; + + if (call_mode==CALL_MODE_NODE_PATH) { + + node=_get_base_node(); + if (node) { + type=node->get_type(); + base_type=type; //cache, too + script = node->get_script(); + } + } else if (call_mode==CALL_MODE_SELF) { + + if (get_visual_script().is_valid()) { + type=get_visual_script()->get_instance_base_type(); + base_type=type; //cache, too + script=get_visual_script(); + } + } else if (call_mode==CALL_MODE_INSTANCE) { + + type=base_type; + if (base_script!=String()) { + + if (!ResourceCache::has(base_script) && ScriptServer::edit_request_func) { + + ScriptServer::edit_request_func(base_script); //make sure it's loaded + } + + if (ResourceCache::has(base_script)) { + + script = Ref<Resource>( ResourceCache::get(base_script) ); + } else { + return; + } + } + } + + List<PropertyInfo> pinfo; + + + if (node) { + + node->get_property_list(&pinfo); + } else { + ObjectTypeDB::get_property_list(type,&pinfo); + } + + if (script.is_valid()) { + + script->get_script_property_list(&pinfo); + } + + for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { + + if (E->get().name==property) { + type_cache=E->get(); + return; + } + } + + } +} + void VisualScriptPropertySet::set_property(const StringName& p_type){ if (property==p_type) return; property=p_type; + _update_cache(); _change_notify(); ports_changed_notify(); } @@ -914,34 +1353,17 @@ VisualScriptPropertySet::CallMode VisualScriptPropertySet::get_call_mode() const } -void VisualScriptPropertySet::set_use_builtin_value(bool p_use) { - - if (use_builtin_value==p_use) - return; - - use_builtin_value=p_use; - _change_notify(); - ports_changed_notify(); - -} -bool VisualScriptPropertySet::is_using_builtin_value() const{ - return use_builtin_value; +void VisualScriptPropertySet::_set_type_cache(const Dictionary &p_type) { + type_cache=PropertyInfo::from_dict(p_type); } -void VisualScriptPropertySet::set_builtin_value(const Variant& p_value){ - - if (builtin_value==p_value) - return; - - builtin_value=p_value; +Dictionary VisualScriptPropertySet::_get_type_cache() const { + return type_cache; } -Variant VisualScriptPropertySet::get_builtin_value() const{ - return builtin_value; -} void VisualScriptPropertySet::_validate_property(PropertyInfo& property) const { if (property.name=="property/base_type") { @@ -950,6 +1372,11 @@ void VisualScriptPropertySet::_validate_property(PropertyInfo& property) const { } } + if (property.name=="property/base_script") { + if (call_mode!=CALL_MODE_INSTANCE) { + property.usage=0; + } + } if (property.name=="property/basic_type") { if (call_mode!=CALL_MODE_BASIC_TYPE) { @@ -978,99 +1405,50 @@ void VisualScriptPropertySet::_validate_property(PropertyInfo& property) const { } if (property.name=="property/property") { - property.hint=PROPERTY_HINT_ENUM; - - - List<PropertyInfo> pinfo; - if (call_mode==CALL_MODE_BASIC_TYPE) { - Variant::CallError ce; - Variant v; - if (basic_type==Variant::INPUT_EVENT) { - InputEvent ev; - ev.type=event_type; - v=ev; - } else { - v = Variant::construct(basic_type,NULL,0,ce); - } - v.get_property_list(&pinfo); - } else if (call_mode==CALL_MODE_NODE_PATH) { + property.hint=PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE; + property.hint_string=Variant::get_type_name(basic_type); - Node *n = _get_base_node(); - if (n) { - n->get_property_list(&pinfo); - } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - } - } else { + } else if (call_mode==CALL_MODE_SELF && get_visual_script().is_valid()) { + property.hint=PROPERTY_HINT_PROPERTY_OF_SCRIPT; + property.hint_string=itos(get_visual_script()->get_instance_ID()); + } else if (call_mode==CALL_MODE_INSTANCE) { + property.hint=PROPERTY_HINT_PROPERTY_OF_BASE_TYPE; + property.hint_string=base_type; + if (base_script!=String()) { + if (!ResourceCache::has(base_script) && ScriptServer::edit_request_func) { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - - } + ScriptServer::edit_request_func(base_script); //make sure it's loaded + } - List<String> mstring; + if (ResourceCache::has(base_script)) { - for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { + Ref<Script> script = Ref<Resource>( ResourceCache::get(base_script) ); + if (script.is_valid()) { - if (E->get().usage&PROPERTY_USAGE_EDITOR) { - mstring.push_back(E->get().name); + property.hint=PROPERTY_HINT_PROPERTY_OF_SCRIPT; + property.hint_string=itos(script->get_instance_ID()); + } + } } - } - - String ml; - for (List<String>::Element *E=mstring.front();E;E=E->next()) { - - if (ml!=String()) - ml+=","; - ml+=E->get(); - } - - if (ml==String()) { - property.usage=PROPERTY_USAGE_NOEDITOR; //do not show for editing if empty - } else { - property.hint_string=ml; - } - } - - if (property.name=="value/builtin") { - - if (!use_builtin_value) { - property.usage=0; - } else { - List<PropertyInfo> pinfo; - - if (call_mode==CALL_MODE_BASIC_TYPE) { - Variant::CallError ce; - Variant v = Variant::construct(basic_type,NULL,0,ce); - v.get_property_list(&pinfo); - } else if (call_mode==CALL_MODE_NODE_PATH) { - - Node *n = _get_base_node(); - if (n) { - n->get_property_list(&pinfo); - } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - } + } else if (call_mode==CALL_MODE_NODE_PATH) { + Node *node = _get_base_node(); + if (node) { + property.hint=PROPERTY_HINT_PROPERTY_OF_INSTANCE; + property.hint_string=itos(node->get_instance_ID()); } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); + property.hint=PROPERTY_HINT_PROPERTY_OF_BASE_TYPE; + property.hint_string=get_base_type(); } - for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { - - if (E->get().name==this->property) { - - property.hint=E->get().hint; - property.type=E->get().type; - property.hint_string=E->get().hint_string; - } - } } } + } void VisualScriptPropertySet::_bind_methods() { @@ -1078,10 +1456,15 @@ void VisualScriptPropertySet::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_base_type","base_type"),&VisualScriptPropertySet::set_base_type); ObjectTypeDB::bind_method(_MD("get_base_type"),&VisualScriptPropertySet::get_base_type); + ObjectTypeDB::bind_method(_MD("set_base_script","base_script"),&VisualScriptPropertySet::set_base_script); + ObjectTypeDB::bind_method(_MD("get_base_script"),&VisualScriptPropertySet::get_base_script); ObjectTypeDB::bind_method(_MD("set_basic_type","basic_type"),&VisualScriptPropertySet::set_basic_type); ObjectTypeDB::bind_method(_MD("get_basic_type"),&VisualScriptPropertySet::get_basic_type); + ObjectTypeDB::bind_method(_MD("_set_type_cache","type_cache"),&VisualScriptPropertySet::_set_type_cache); + ObjectTypeDB::bind_method(_MD("_get_type_cache"),&VisualScriptPropertySet::_get_type_cache); + ObjectTypeDB::bind_method(_MD("set_event_type","event_type"),&VisualScriptPropertySet::set_event_type); ObjectTypeDB::bind_method(_MD("get_event_type"),&VisualScriptPropertySet::get_event_type); @@ -1094,11 +1477,7 @@ void VisualScriptPropertySet::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_base_path","base_path"),&VisualScriptPropertySet::set_base_path); ObjectTypeDB::bind_method(_MD("get_base_path"),&VisualScriptPropertySet::get_base_path); - ObjectTypeDB::bind_method(_MD("set_builtin_value","value"),&VisualScriptPropertySet::set_builtin_value); - ObjectTypeDB::bind_method(_MD("get_builtin_value"),&VisualScriptPropertySet::get_builtin_value); - ObjectTypeDB::bind_method(_MD("set_use_builtin_value","enable"),&VisualScriptPropertySet::set_use_builtin_value); - ObjectTypeDB::bind_method(_MD("is_using_builtin_value"),&VisualScriptPropertySet::is_using_builtin_value); String bt; for(int i=0;i<Variant::VARIANT_MAX;i++) { @@ -1116,15 +1495,26 @@ void VisualScriptPropertySet::_bind_methods() { et+=event_type_names[i]; } + List<String> script_extensions; + for(int i=0;i<ScriptServer::get_language_count();i++) { + ScriptServer::get_language(i)->get_recognized_extensions(&script_extensions); + } - ADD_PROPERTY(PropertyInfo(Variant::INT,"property/set_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance,Basic Type",PROPERTY_USAGE_NOEDITOR),_SCS("set_call_mode"),_SCS("get_call_mode")); + String script_ext_hint; + for (List<String>::Element *E=script_extensions.front();E;E=E->next()) { + if (script_ext_hint!=String()) + script_ext_hint+=","; + script_ext_hint+="*."+E->get(); + } + + ADD_PROPERTY(PropertyInfo(Variant::INT,"property/set_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance,Basic Type"),_SCS("set_call_mode"),_SCS("get_call_mode")); ADD_PROPERTY(PropertyInfo(Variant::STRING,"property/base_type",PROPERTY_HINT_TYPE_STRING,"Object"),_SCS("set_base_type"),_SCS("get_base_type")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"property/base_script",PROPERTY_HINT_FILE,script_ext_hint),_SCS("set_base_script"),_SCS("get_base_script")); + ADD_PROPERTY(PropertyInfo(Variant::INT,"property/type_cache",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR),_SCS("_set_type_cache"),_SCS("_get_type_cache")); ADD_PROPERTY(PropertyInfo(Variant::INT,"property/basic_type",PROPERTY_HINT_ENUM,bt),_SCS("set_basic_type"),_SCS("get_basic_type")); ADD_PROPERTY(PropertyInfo(Variant::INT,"property/event_type",PROPERTY_HINT_ENUM,et),_SCS("set_event_type"),_SCS("get_event_type")); ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH,"property/node_path",PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE),_SCS("set_base_path"),_SCS("get_base_path")); ADD_PROPERTY(PropertyInfo(Variant::STRING,"property/property"),_SCS("set_property"),_SCS("get_property")); - ADD_PROPERTY(PropertyInfo(Variant::BOOL,"value/use_builtin"),_SCS("set_use_builtin_value"),_SCS("is_using_builtin_value")); - ADD_PROPERTY(PropertyInfo(Variant::NIL,"value/builtin"),_SCS("set_builtin_value"),_SCS("get_builtin_value")); BIND_CONSTANT( CALL_MODE_SELF ); BIND_CONSTANT( CALL_MODE_NODE_PATH); @@ -1139,8 +1529,6 @@ public: VisualScriptPropertySet::CallMode call_mode; NodePath node_path; StringName property; - bool use_builtin; - Variant builtin_val; VisualScriptPropertySet *node; VisualScriptInstance *instance; @@ -1162,15 +1550,11 @@ public: bool valid; - if (use_builtin) { - object->set(property,builtin_val,&valid); - } else { - object->set(property,*p_inputs[0],&valid); - } + object->set(property,*p_inputs[0],&valid); if (!valid) { r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error_str="Invalid index property name."; + r_error_str="Invalid set value '"+String(*p_inputs[0])+"' on property '"+String(property)+"' of type "+object->get_type(); } } break; case VisualScriptPropertySet::CALL_MODE_NODE_PATH: { @@ -1191,15 +1575,11 @@ public: bool valid; - if (use_builtin) { - another->set(property,builtin_val,&valid); - } else { - another->set(property,*p_inputs[0],&valid); - } + another->set(property,*p_inputs[0],&valid); if (!valid) { r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error_str="Invalid index property name."; + r_error_str="Invalid set value '"+String(*p_inputs[0])+"' on property '"+String(property)+"' of type "+another->get_type(); } } break; @@ -1210,20 +1590,14 @@ public: bool valid; - if (use_builtin) { - v.set(property,builtin_val,&valid); - } else { - v.set(property,p_inputs[1],&valid); - } + v.set(property,*p_inputs[1],&valid); if (!valid) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error_str="Invalid index property name."; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Invalid set value '"+String(*p_inputs[1])+"' ("+Variant::get_type_name(p_inputs[1]->get_type())+") on property '"+String(property)+"' of type "+Variant::get_type_name(v.get_type()); } - if (call_mode==VisualScriptPropertySet::CALL_MODE_BASIC_TYPE) { - *p_outputs[0]=v; - } + *p_outputs[0]=v; } break; @@ -1243,14 +1617,23 @@ VisualScriptNodeInstance* VisualScriptPropertySet::instance(VisualScriptInstance instance->property=property; instance->call_mode=call_mode; instance->node_path=base_path; - instance->use_builtin=use_builtin_value; - instance->builtin_val=builtin_value; return instance; } + + +VisualScriptPropertySet::TypeGuess VisualScriptPropertySet::guess_output_type(TypeGuess* p_inputs, int p_output) const { + + if (p_output==0 && call_mode==CALL_MODE_INSTANCE) { + return p_inputs[0]; + } + + return VisualScriptNode::guess_output_type(p_inputs,p_output); + +} VisualScriptPropertySet::VisualScriptPropertySet() { - call_mode=CALL_MODE_INSTANCE; + call_mode=CALL_MODE_SELF; base_type="Object"; basic_type=Variant::NIL; event_type=InputEvent::NONE; @@ -1273,12 +1656,12 @@ static Ref<VisualScriptNode> create_property_set_node(const String& p_name) { int VisualScriptPropertyGet::get_output_sequence_port_count() const { - return (call_mode==CALL_MODE_SELF || call_mode==CALL_MODE_NODE_PATH)?0:1; + return 0;// (call_mode==CALL_MODE_SELF || call_mode==CALL_MODE_NODE_PATH)?0:1; } bool VisualScriptPropertyGet::has_input_sequence_port() const{ - return (call_mode==CALL_MODE_SELF || call_mode==CALL_MODE_NODE_PATH)?false:true; + return false;//(call_mode==CALL_MODE_SELF || call_mode==CALL_MODE_NODE_PATH)?false:true; } void VisualScriptPropertyGet::_update_base_type() { //cache it because this information may not be available on load @@ -1348,6 +1731,7 @@ StringName VisualScriptPropertyGet::_get_base_type() const { return base_type; } + int VisualScriptPropertyGet::get_input_value_port_count() const{ return (call_mode==CALL_MODE_BASIC_TYPE || call_mode==CALL_MODE_INSTANCE)?1:0; @@ -1381,17 +1765,75 @@ PropertyInfo VisualScriptPropertyGet::get_input_value_port_info(int p_idx) const PropertyInfo VisualScriptPropertyGet::get_output_value_port_info(int p_idx) const{ + return PropertyInfo(type_cache,"value"); +} -#ifdef DEBUG_METHODS_ENABLED +String VisualScriptPropertyGet::get_caption() const { - //not very efficient but.. + static const char*cname[4]= { + "SelfGet", + "NodeGet", + "InstanceGet", + "BasicGet" + }; + return cname[call_mode]; +} + +String VisualScriptPropertyGet::get_text() const { + + String prop; + + if (call_mode==CALL_MODE_BASIC_TYPE) + prop=Variant::get_type_name(basic_type)+"."+property; + else if (call_mode==CALL_MODE_NODE_PATH) + prop=String(base_path)+":"+property; + else if (call_mode==CALL_MODE_SELF) + prop=property; + else if (call_mode==CALL_MODE_INSTANCE) + prop=String(base_type)+":"+property; + + return prop; +} + +void VisualScriptPropertyGet::set_base_type(const StringName& p_type) { + + if (base_type==p_type) + return; + + base_type=p_type; + _change_notify(); + ports_changed_notify(); +} + +StringName VisualScriptPropertyGet::get_base_type() const{ + + return base_type; +} + +void VisualScriptPropertyGet::set_base_script(const String& p_path) { + + if (base_script==p_path) + return; + + base_script=p_path; + _change_notify(); + ports_changed_notify(); +} + +String VisualScriptPropertyGet::get_base_script() const { + + return base_script; +} + + +void VisualScriptPropertyGet::_update_cache() { - List<PropertyInfo> pinfo; if (call_mode==CALL_MODE_BASIC_TYPE) { + //not super efficient.. Variant v; if (basic_type==Variant::INPUT_EVENT) { @@ -1402,71 +1844,91 @@ PropertyInfo VisualScriptPropertyGet::get_output_value_port_info(int p_idx) cons Variant::CallError ce; v = Variant::construct(basic_type,NULL,0,ce); } + + List<PropertyInfo> pinfo; v.get_property_list(&pinfo); - } else if (call_mode==CALL_MODE_NODE_PATH) { - Node *n = _get_base_node(); - if (n) { - n->get_property_list(&pinfo); - } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); + for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { + + if (E->get().name==property) { + + type_cache=E->get().type; + return; + } } + } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - } - for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { - if (E->get().name==property) { + StringName type; + Ref<Script> script; + Node *node=NULL; - PropertyInfo info=E->get(); - info.name=""; - return info; - } - } + if (call_mode==CALL_MODE_NODE_PATH) { + node=_get_base_node(); + if (node) { + type=node->get_type(); + base_type=type; //cache, too + script = node->get_script(); + } + } else if (call_mode==CALL_MODE_SELF) { -#endif + if (get_visual_script().is_valid()) { + type=get_visual_script()->get_instance_base_type(); + base_type=type; //cache, too + script=get_visual_script(); + } + } else if (call_mode==CALL_MODE_INSTANCE) { - return PropertyInfo(Variant::NIL,""); -} + type=base_type; + if (base_script!=String()) { + if (!ResourceCache::has(base_script) && ScriptServer::edit_request_func) { -String VisualScriptPropertyGet::get_caption() const { + ScriptServer::edit_request_func(base_script); //make sure it's loaded + } - static const char*cname[4]= { - "SelfGet", - "NodeGet", - "InstanceGet", - "BasicGet" - }; + if (ResourceCache::has(base_script)) { - return cname[call_mode]; -} + script = Ref<Resource>( ResourceCache::get(base_script) ); + } else { + return; + } + } + } -String VisualScriptPropertyGet::get_text() const { + bool valid=false; - if (call_mode==CALL_MODE_BASIC_TYPE) - return Variant::get_type_name(basic_type)+"."+property; - else - return property; + Variant::Type type_ret; -} + type_ret=ObjectTypeDB::get_property_type(base_type,property,&valid); -void VisualScriptPropertyGet::set_base_type(const StringName& p_type) { + if (valid) { + type_cache=type_ret; + return; //all dandy + } - if (base_type==p_type) - return; + if (node) { - base_type=p_type; - _change_notify(); - ports_changed_notify(); -} + Variant prop = node->get(property,&valid); + if (valid) { + type_cache=prop.get_type(); + return; //all dandy again + } + } -StringName VisualScriptPropertyGet::get_base_type() const{ + if (script.is_valid()) { - return base_type; + type_ret=script->get_static_property_type(property,&valid); + + if (valid) { + type_cache=type_ret; + return; //all dandy + } + } + } } void VisualScriptPropertyGet::set_property(const StringName& p_type){ @@ -1475,6 +1937,9 @@ void VisualScriptPropertyGet::set_property(const StringName& p_type){ return; property=p_type; + + + _update_cache(); _change_notify(); ports_changed_notify(); } @@ -1541,6 +2006,9 @@ void VisualScriptPropertyGet::set_event_type(InputEvent::Type p_type) { if (event_type==p_type) return; event_type=p_type; + if(call_mode==CALL_MODE_BASIC_TYPE) { + _update_cache(); + } _change_notify(); _update_base_type(); ports_changed_notify(); @@ -1551,6 +2019,17 @@ InputEvent::Type VisualScriptPropertyGet::get_event_type() const{ return event_type; } + +void VisualScriptPropertyGet::_set_type_cache(Variant::Type p_type) { + type_cache=p_type; +} + +Variant::Type VisualScriptPropertyGet::_get_type_cache() const { + + return type_cache; +} + + void VisualScriptPropertyGet::_validate_property(PropertyInfo& property) const { if (property.name=="property/base_type") { @@ -1559,6 +2038,11 @@ void VisualScriptPropertyGet::_validate_property(PropertyInfo& property) const { } } + if (property.name=="property/base_script") { + if (call_mode!=CALL_MODE_INSTANCE) { + property.usage=0; + } + } if (property.name=="property/basic_type") { if (call_mode!=CALL_MODE_BASIC_TYPE) { @@ -1586,55 +2070,45 @@ void VisualScriptPropertyGet::_validate_property(PropertyInfo& property) const { } if (property.name=="property/property") { - property.hint=PROPERTY_HINT_ENUM; - - - List<PropertyInfo> pinfo; if (call_mode==CALL_MODE_BASIC_TYPE) { - Variant::CallError ce; - Variant v; - if (basic_type==Variant::INPUT_EVENT) { - InputEvent ev; - ev.type=event_type; - v=ev; - } else { - v = Variant::construct(basic_type,NULL,0,ce); - } - v.get_property_list(&pinfo); - } else if (call_mode==CALL_MODE_NODE_PATH) { + property.hint=PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE; + property.hint_string=Variant::get_type_name(basic_type); - Node *n = _get_base_node(); - if (n) { - n->get_property_list(&pinfo); - } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - } - } else { - ObjectTypeDB::get_property_list(_get_base_type(),&pinfo); - } + } else if (call_mode==CALL_MODE_SELF && get_visual_script().is_valid()) { + property.hint=PROPERTY_HINT_PROPERTY_OF_SCRIPT; + property.hint_string=itos(get_visual_script()->get_instance_ID()); + } else if (call_mode==CALL_MODE_INSTANCE) { + property.hint=PROPERTY_HINT_PROPERTY_OF_BASE_TYPE; + property.hint_string=base_type; - List<String> mstring; + if (base_script!=String()) { + if (!ResourceCache::has(base_script) && ScriptServer::edit_request_func) { - for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { + ScriptServer::edit_request_func(base_script); //make sure it's loaded + } - if (E->get().usage&PROPERTY_USAGE_EDITOR) - mstring.push_back(E->get().name); - } + if (ResourceCache::has(base_script)) { - String ml; - for (List<String>::Element *E=mstring.front();E;E=E->next()) { + Ref<Script> script = Ref<Resource>( ResourceCache::get(base_script) ); + if (script.is_valid()) { - if (ml!=String()) - ml+=","; - ml+=E->get(); - } + property.hint=PROPERTY_HINT_PROPERTY_OF_SCRIPT; + property.hint_string=itos(script->get_instance_ID()); + } + } + } + } else if (call_mode==CALL_MODE_NODE_PATH) { + Node *node = _get_base_node(); + if (node) { + property.hint=PROPERTY_HINT_PROPERTY_OF_INSTANCE; + property.hint_string=itos(node->get_instance_ID()); + } else { + property.hint=PROPERTY_HINT_PROPERTY_OF_BASE_TYPE; + property.hint_string=get_base_type(); + } - if (ml==String()) { - property.usage=PROPERTY_USAGE_NOEDITOR; //do not show for editing if empty - } else { - property.hint_string=ml; } } @@ -1646,10 +2120,15 @@ void VisualScriptPropertyGet::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_base_type","base_type"),&VisualScriptPropertyGet::set_base_type); ObjectTypeDB::bind_method(_MD("get_base_type"),&VisualScriptPropertyGet::get_base_type); + ObjectTypeDB::bind_method(_MD("set_base_script","base_script"),&VisualScriptPropertyGet::set_base_script); + ObjectTypeDB::bind_method(_MD("get_base_script"),&VisualScriptPropertyGet::get_base_script); ObjectTypeDB::bind_method(_MD("set_basic_type","basic_type"),&VisualScriptPropertyGet::set_basic_type); ObjectTypeDB::bind_method(_MD("get_basic_type"),&VisualScriptPropertyGet::get_basic_type); + ObjectTypeDB::bind_method(_MD("_set_type_cache","type_cache"),&VisualScriptPropertyGet::_set_type_cache); + ObjectTypeDB::bind_method(_MD("_get_type_cache"),&VisualScriptPropertyGet::_get_type_cache); + ObjectTypeDB::bind_method(_MD("set_event_type","event_type"),&VisualScriptPropertyGet::set_event_type); ObjectTypeDB::bind_method(_MD("get_event_type"),&VisualScriptPropertyGet::get_event_type); @@ -1679,9 +2158,22 @@ void VisualScriptPropertyGet::_bind_methods() { et+=event_type_names[i]; } + List<String> script_extensions; + for(int i=0;i<ScriptServer::get_language_count();i++) { + ScriptServer::get_language(i)->get_recognized_extensions(&script_extensions); + } + + String script_ext_hint; + for (List<String>::Element *E=script_extensions.front();E;E=E->next()) { + if (script_ext_hint!=String()) + script_ext_hint+=","; + script_ext_hint+="."+E->get(); + } - ADD_PROPERTY(PropertyInfo(Variant::INT,"property/set_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance",PROPERTY_USAGE_NOEDITOR),_SCS("set_call_mode"),_SCS("get_call_mode")); + ADD_PROPERTY(PropertyInfo(Variant::INT,"property/set_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance,Basic Type"),_SCS("set_call_mode"),_SCS("get_call_mode")); ADD_PROPERTY(PropertyInfo(Variant::STRING,"property/base_type",PROPERTY_HINT_TYPE_STRING,"Object"),_SCS("set_base_type"),_SCS("get_base_type")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"property/base_script",PROPERTY_HINT_FILE,script_ext_hint),_SCS("set_base_script"),_SCS("get_base_script")); + ADD_PROPERTY(PropertyInfo(Variant::INT,"property/type_cache",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR),_SCS("_set_type_cache"),_SCS("_get_type_cache")); ADD_PROPERTY(PropertyInfo(Variant::INT,"property/basic_type",PROPERTY_HINT_ENUM,bt),_SCS("set_basic_type"),_SCS("get_basic_type")); ADD_PROPERTY(PropertyInfo(Variant::INT,"property/event_type",PROPERTY_HINT_ENUM,et),_SCS("set_event_type"),_SCS("get_event_type")); ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH,"property/node_path",PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE),_SCS("set_base_path"),_SCS("get_base_path")); @@ -1704,12 +2196,10 @@ public: VisualScriptInstance *instance; + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + - //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return (call_mode==VisualScriptPropertyGet::CALL_MODE_SELF || call_mode==VisualScriptPropertyGet::CALL_MODE_NODE_PATH); } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - //these two modes can be get directly, so they use unsequenced mode switch(call_mode) { case VisualScriptPropertyGet::CALL_MODE_SELF: { @@ -1718,63 +2208,57 @@ public: bool valid; - *r_value = object->get(property,&valid); + *p_outputs[0] = object->get(property,&valid); if (!valid) { - //r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error=RTR("Invalid index property name."); - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str=RTR("Invalid index property name."); + return 0; } } break; case VisualScriptPropertyGet::CALL_MODE_NODE_PATH: { Node* node = instance->get_owner_ptr()->cast_to<Node>(); if (!node) { - //r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error=RTR("Base object is not a Node!"); - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str=RTR("Base object is not a Node!"); + return 0; } Node* another = node->get_node(node_path); if (!node) { - //r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error=RTR("Path does not lead Node!"); - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str=RTR("Path does not lead Node!"); + return 0; } bool valid; - *r_value = another->get(property,&valid); + *p_outputs[0] = another->get(property,&valid); if (!valid) { - //r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error=vformat(RTR("Invalid index property name '%s' in node %s."),String(property),another->get_name()); - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str=vformat(RTR("Invalid index property name '%s' in node %s."),String(property),another->get_name()); + return 0; } } break; - default: {}; - } - return true; - - } + default: { - virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - - - bool valid; - Variant v = *p_inputs[0]; + bool valid; + Variant v = *p_inputs[0]; - *p_outputs[0] = v.get(property,&valid); + *p_outputs[0] = v.get(property,&valid); - if (!valid) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error_str=RTR("Invalid index property name."); + if (!valid) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str=RTR("Invalid index property name."); + } + }; } - return 0; } @@ -1797,10 +2281,11 @@ VisualScriptNodeInstance* VisualScriptPropertyGet::instance(VisualScriptInstance VisualScriptPropertyGet::VisualScriptPropertyGet() { - call_mode=CALL_MODE_INSTANCE; + call_mode=CALL_MODE_SELF; base_type="Object"; basic_type=Variant::NIL; event_type=InputEvent::NONE; + type_cache=Variant::NIL; } @@ -1815,463 +2300,6 @@ static Ref<VisualScriptNode> create_property_get_node(const String& p_name) { ////////////////////////////////////////// -////////////////SCRIPT CALL////////////////////// -////////////////////////////////////////// - -int VisualScriptScriptCall::get_output_sequence_port_count() const { - - return 1; -} - -bool VisualScriptScriptCall::has_input_sequence_port() const{ - - return true; -} - -Node *VisualScriptScriptCall::_get_base_node() const { - -#ifdef TOOLS_ENABLED - Ref<Script> script = get_visual_script(); - if (!script.is_valid()) - return NULL; - - MainLoop * main_loop = OS::get_singleton()->get_main_loop(); - if (!main_loop) - return NULL; - - SceneTree *scene_tree = main_loop->cast_to<SceneTree>(); - - if (!scene_tree) - return NULL; - - Node *edited_scene = scene_tree->get_edited_scene_root(); - - if (!edited_scene) - return NULL; - - Node* script_node = _find_script_node(edited_scene,edited_scene,script); - - if (!script_node) - return NULL; - - if (!script_node->has_node(base_path)) - return NULL; - - Node *path_to = script_node->get_node(base_path); - - return path_to; -#else - - return NULL; -#endif -} - - -int VisualScriptScriptCall::get_input_value_port_count() const{ - -#if 1 - return argument_count; -#else - if (call_mode==CALL_MODE_SELF) { - - Ref<VisualScript> vs = get_visual_script(); - if (vs.is_valid()) { - - if (!vs->has_function(function)) - return 0; - - int id = vs->get_function_node_id(function); - if (id<0) - return 0; - - Ref<VisualScriptFunction> func = vs->get_node(function,id); - - return func->get_argument_count(); - } - } else { - - Node*base = _get_base_node(); - if (!base) - return 0; - Ref<Script> script = base->get_script(); - if (!script.is_valid()) - return 0; - - List<MethodInfo> functions; - script->get_method_list(&functions); - for (List<MethodInfo>::Element *E=functions.front();E;E=E->next()) { - if (E->get().name==function) { - return E->get().arguments.size(); - } - } - - } - - - return 0; -#endif - -} -int VisualScriptScriptCall::get_output_value_port_count() const{ - return 1; -} - -String VisualScriptScriptCall::get_output_sequence_port_text(int p_port) const { - - return String(); -} - -PropertyInfo VisualScriptScriptCall::get_input_value_port_info(int p_idx) const{ - - if (call_mode==CALL_MODE_SELF) { - - Ref<VisualScript> vs = get_visual_script(); - if (vs.is_valid()) { - - if (!vs->has_function(function)) - return PropertyInfo(); - - int id = vs->get_function_node_id(function); - if (id<0) - return PropertyInfo(); - - Ref<VisualScriptFunction> func = vs->get_node(function,id); - - if (p_idx>=func->get_argument_count()) - return PropertyInfo(); - return PropertyInfo(func->get_argument_type(p_idx),func->get_argument_name(p_idx)); - } - } else { - - Node*base = _get_base_node(); - if (!base) - return PropertyInfo(); - Ref<Script> script = base->get_script(); - if (!script.is_valid()) - return PropertyInfo(); - - List<MethodInfo> functions; - script->get_method_list(&functions); - for (List<MethodInfo>::Element *E=functions.front();E;E=E->next()) { - if (E->get().name==function) { - if (p_idx<0 || p_idx>=E->get().arguments.size()) - return PropertyInfo(); - return E->get().arguments[p_idx]; - } - } - - } - - return PropertyInfo(); - -} - -PropertyInfo VisualScriptScriptCall::get_output_value_port_info(int p_idx) const{ - - return PropertyInfo(); -} - - -String VisualScriptScriptCall::get_caption() const { - - return "ScriptCall"; -} - -String VisualScriptScriptCall::get_text() const { - - return " "+String(function)+"()"; -} - -void VisualScriptScriptCall::_update_argument_count() { - - //try to remember the amount of arguments in the function, because if loaded from scratch - //this information will not be available - - if (call_mode==CALL_MODE_SELF) { - - Ref<VisualScript> vs = get_visual_script(); - if (vs.is_valid()) { - - if (!vs->has_function(function)) - return ; - - int id = vs->get_function_node_id(function); - if (id<0) - return; - - Ref<VisualScriptFunction> func = vs->get_node(function,id); - - argument_count=func->get_argument_count(); - } - } else { - - Node*base = _get_base_node(); - if (!base) - return; - - Ref<Script> script = base->get_script(); - if (!script.is_valid()) - return ; - - List<MethodInfo> functions; - script->get_method_list(&functions); - for (List<MethodInfo>::Element *E=functions.front();E;E=E->next()) { - if (E->get().name==function) { - argument_count=E->get().arguments.size(); - return; - } - } - - } -} - - -void VisualScriptScriptCall::set_function(const StringName& p_type){ - - if (function==p_type) - return; - - function=p_type; - _update_argument_count(); - _change_notify(); - ports_changed_notify(); -} -StringName VisualScriptScriptCall::get_function() const { - - - return function; -} - -void VisualScriptScriptCall::set_base_path(const NodePath& p_type) { - - if (base_path==p_type) - return; - - base_path=p_type; - _update_argument_count(); - _change_notify(); - ports_changed_notify(); -} - -NodePath VisualScriptScriptCall::get_base_path() const { - - return base_path; -} - - -void VisualScriptScriptCall::set_call_mode(CallMode p_mode) { - - if (call_mode==p_mode) - return; - - call_mode=p_mode; - _update_argument_count(); - _change_notify(); - ports_changed_notify(); - -} - -void VisualScriptScriptCall::set_argument_count(int p_count) { - - argument_count=p_count; - _change_notify(); - ports_changed_notify(); - -} - -int VisualScriptScriptCall::get_argument_count() const { - - return argument_count; -} - -VisualScriptScriptCall::CallMode VisualScriptScriptCall::get_call_mode() const { - - return call_mode; -} - -void VisualScriptScriptCall::_validate_property(PropertyInfo& property) const { - - - - if (property.name=="function/node_path") { - if (call_mode!=CALL_MODE_NODE_PATH) { - property.usage=0; - } else { - - Node *bnode = _get_base_node(); - if (bnode) { - property.hint_string=bnode->get_path(); //convert to loong string - } else { - - } - } - } - - if (property.name=="function/function") { - property.hint=PROPERTY_HINT_ENUM; - - - List<MethodInfo> methods; - - if (call_mode==CALL_MODE_SELF) { - - Ref<VisualScript> vs = get_visual_script(); - if (vs.is_valid()) { - - vs->get_method_list(&methods); - - } - } else { - - Node*base = _get_base_node(); - if (!base) - return; - Ref<Script> script = base->get_script(); - if (!script.is_valid()) - return; - - script->get_method_list(&methods); - - } - - List<String> mstring; - for (List<MethodInfo>::Element *E=methods.front();E;E=E->next()) { - if (E->get().name.begins_with("_")) - continue; - mstring.push_back(E->get().name.get_slice(":",0)); - } - - mstring.sort(); - - String ml; - for (List<String>::Element *E=mstring.front();E;E=E->next()) { - - if (ml!=String()) - ml+=","; - ml+=E->get(); - } - - property.hint_string=ml; - } - -} - - -void VisualScriptScriptCall::_bind_methods() { - - ObjectTypeDB::bind_method(_MD("set_function","function"),&VisualScriptScriptCall::set_function); - ObjectTypeDB::bind_method(_MD("get_function"),&VisualScriptScriptCall::get_function); - - ObjectTypeDB::bind_method(_MD("set_call_mode","mode"),&VisualScriptScriptCall::set_call_mode); - ObjectTypeDB::bind_method(_MD("get_call_mode"),&VisualScriptScriptCall::get_call_mode); - - ObjectTypeDB::bind_method(_MD("set_base_path","base_path"),&VisualScriptScriptCall::set_base_path); - ObjectTypeDB::bind_method(_MD("get_base_path"),&VisualScriptScriptCall::get_base_path); - - ObjectTypeDB::bind_method(_MD("set_argument_count","argument_count"),&VisualScriptScriptCall::set_argument_count); - ObjectTypeDB::bind_method(_MD("get_argument_count"),&VisualScriptScriptCall::get_argument_count); - - ADD_PROPERTY(PropertyInfo(Variant::INT,"function/call_mode",PROPERTY_HINT_ENUM,"Self,Node Path"),_SCS("set_call_mode"),_SCS("get_call_mode")); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH,"function/node_path",PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE),_SCS("set_base_path"),_SCS("get_base_path")); - ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/function"),_SCS("set_function"),_SCS("get_function")); - ADD_PROPERTY(PropertyInfo(Variant::STRING,"function/argument_count"),_SCS("set_argument_count"),_SCS("get_argument_count")); - - BIND_CONSTANT( CALL_MODE_SELF ); - BIND_CONSTANT( CALL_MODE_NODE_PATH); - -} - -class VisualScriptNodeInstanceScriptCall : public VisualScriptNodeInstance { -public: - - - VisualScriptScriptCall::CallMode call_mode; - NodePath node_path; - int input_args; - bool returns; - StringName function; - - VisualScriptScriptCall *node; - VisualScriptInstance *instance; - - - - //virtual int get_working_memory_size() const { return 0; } - //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } - //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; } - - virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - - - switch(call_mode) { - - case VisualScriptScriptCall::CALL_MODE_SELF: { - - Object *object=instance->get_owner_ptr(); - - *p_outputs[0] = object->call(function,p_inputs,input_args,r_error); - - } break; - case VisualScriptScriptCall::CALL_MODE_NODE_PATH: { - - Node* node = instance->get_owner_ptr()->cast_to<Node>(); - if (!node) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error_str="Base object is not a Node!"; - return 0; - } - - Node* another = node->get_node(node_path); - if (!node) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - r_error_str="Path does not lead Node!"; - return 0; - } - - - *p_outputs[0] = another->call(function,p_inputs,input_args,r_error); - - } break; - - } - return 0; - - } - - -}; - -VisualScriptNodeInstance* VisualScriptScriptCall::instance(VisualScriptInstance* p_instance) { - - VisualScriptNodeInstanceScriptCall * instance = memnew(VisualScriptNodeInstanceScriptCall ); - instance->node=this; - instance->instance=p_instance; - instance->function=function; - instance->call_mode=call_mode; - instance->node_path=base_path; - instance->input_args = argument_count; - return instance; -} - -VisualScriptScriptCall::VisualScriptScriptCall() { - - call_mode=CALL_MODE_SELF; - argument_count=0; - - -} - -template<VisualScriptScriptCall::CallMode cmode> -static Ref<VisualScriptNode> create_script_call_node(const String& p_name) { - - Ref<VisualScriptScriptCall> node; - node.instance(); - node->set_call_mode(cmode); - return node; -} - - -////////////////////////////////////////// ////////////////EMIT////////////////////// ////////////////////////////////////////// @@ -2475,24 +2503,13 @@ static Ref<VisualScriptNode> create_basic_type_call_node(const String& p_name) { void register_visual_script_func_nodes() { - VisualScriptLanguage::singleton->add_register_func("functions/call_method/call_instance",create_function_call_node<VisualScriptFunctionCall::CALL_MODE_INSTANCE>); - VisualScriptLanguage::singleton->add_register_func("functions/call_method/call_basic_type",create_function_call_node<VisualScriptFunctionCall::CALL_MODE_BASIC_TYPE>); - VisualScriptLanguage::singleton->add_register_func("functions/call_method/call_self",create_function_call_node<VisualScriptFunctionCall::CALL_MODE_SELF>); - VisualScriptLanguage::singleton->add_register_func("functions/call_method/call_node",create_function_call_node<VisualScriptFunctionCall::CALL_MODE_NODE_PATH>); - - VisualScriptLanguage::singleton->add_register_func("functions/property_set/instace_set",create_property_set_node<VisualScriptPropertySet::CALL_MODE_INSTANCE>); - VisualScriptLanguage::singleton->add_register_func("functions/property_set/basic_type_set",create_property_set_node<VisualScriptPropertySet::CALL_MODE_BASIC_TYPE>); - VisualScriptLanguage::singleton->add_register_func("functions/property_set/self_set",create_property_set_node<VisualScriptPropertySet::CALL_MODE_SELF>); - VisualScriptLanguage::singleton->add_register_func("functions/property_set/node_set",create_property_set_node<VisualScriptPropertySet::CALL_MODE_NODE_PATH>); - - VisualScriptLanguage::singleton->add_register_func("functions/property_get/instance_get",create_property_get_node<VisualScriptPropertyGet::CALL_MODE_INSTANCE>); - VisualScriptLanguage::singleton->add_register_func("functions/property_get/basic_type_get",create_property_get_node<VisualScriptPropertyGet::CALL_MODE_BASIC_TYPE>); - VisualScriptLanguage::singleton->add_register_func("functions/property_get/self_get",create_property_get_node<VisualScriptPropertyGet::CALL_MODE_SELF>); - VisualScriptLanguage::singleton->add_register_func("functions/property_get/node_get",create_property_get_node<VisualScriptPropertyGet::CALL_MODE_NODE_PATH>); + VisualScriptLanguage::singleton->add_register_func("functions/call",create_node_generic<VisualScriptFunctionCall>); + VisualScriptLanguage::singleton->add_register_func("functions/set",create_node_generic<VisualScriptPropertySet>); + VisualScriptLanguage::singleton->add_register_func("functions/get",create_node_generic<VisualScriptPropertyGet>); - VisualScriptLanguage::singleton->add_register_func("functions/call_script/call_self",create_script_call_node<VisualScriptScriptCall::CALL_MODE_SELF>); - VisualScriptLanguage::singleton->add_register_func("functions/call_script/call_node",create_script_call_node<VisualScriptScriptCall::CALL_MODE_NODE_PATH>); - VisualScriptLanguage::singleton->add_register_func("functions/call_script/emit_signal",create_node_generic<VisualScriptEmitSignal>); + //VisualScriptLanguage::singleton->add_register_func("functions/call_script/call_self",create_script_call_node<VisualScriptScriptCall::CALL_MODE_SELF>); +// VisualScriptLanguage::singleton->add_register_func("functions/call_script/call_node",create_script_call_node<VisualScriptScriptCall::CALL_MODE_NODE_PATH>); + VisualScriptLanguage::singleton->add_register_func("functions/emit_signal",create_node_generic<VisualScriptEmitSignal>); for(int i=0;i<Variant::VARIANT_MAX;i++) { diff --git a/modules/visual_script/visual_script_func_nodes.h b/modules/visual_script/visual_script_func_nodes.h index 2ccc61242a..43ef276cf4 100644 --- a/modules/visual_script/visual_script_func_nodes.h +++ b/modules/visual_script/visual_script_func_nodes.h @@ -13,20 +13,40 @@ public: CALL_MODE_NODE_PATH, CALL_MODE_INSTANCE, CALL_MODE_BASIC_TYPE, + CALL_MODE_SINGLETON, }; + + enum RPCCallMode { + RPC_DISABLED, + RPC_RELIABLE, + RPC_UNRELIABLE, + RPC_RELIABLE_TO_ID, + RPC_UNRELIABLE_TO_ID + }; + private: CallMode call_mode; StringName base_type; + String base_script; Variant::Type basic_type; NodePath base_path; StringName function; int use_default_args; + RPCCallMode rpc_call_mode; + StringName singleton; + bool validate; + Node *_get_base_node() const; StringName _get_base_type() const; - void _update_defargs(); + MethodInfo method_cache; + void _update_method_cache(); + + void _set_argument_cache(const Dictionary& p_args); + Dictionary _get_argument_cache() const; + protected: virtual void _validate_property(PropertyInfo& property) const; @@ -58,24 +78,41 @@ public: void set_base_type(const StringName& p_type); StringName get_base_type() const; + void set_base_script(const String& p_path); + String get_base_script() const; + + void set_singleton(const StringName& p_type); + StringName get_singleton() const; + void set_function(const StringName& p_type); StringName get_function() const; void set_base_path(const NodePath& p_type); NodePath get_base_path() const; + void set_call_mode(CallMode p_mode); CallMode get_call_mode() const; void set_use_default_args(int p_amount); int get_use_default_args() const; + void set_validate(bool p_amount); + bool get_validate() const; + + void set_rpc_call_mode(RPCCallMode p_mode); + RPCCallMode get_rpc_call_mode() const; + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + + VisualScriptFunctionCall(); }; VARIANT_ENUM_CAST(VisualScriptFunctionCall::CallMode ); +VARIANT_ENUM_CAST(VisualScriptFunctionCall::RPCCallMode ); class VisualScriptPropertySet : public VisualScriptNode { @@ -92,13 +129,14 @@ public: }; private: + PropertyInfo type_cache; + CallMode call_mode; Variant::Type basic_type; StringName base_type; + String base_script; NodePath base_path; StringName property; - bool use_builtin_value; - Variant builtin_value; InputEvent::Type event_type; Node *_get_base_node() const; @@ -106,6 +144,12 @@ private: void _update_base_type(); + void _update_cache(); + + void _set_type_cache(const Dictionary& p_type); + Dictionary _get_type_cache() const; + + protected: virtual void _validate_property(PropertyInfo& property) const; @@ -134,6 +178,9 @@ public: void set_base_type(const StringName& p_type); StringName get_base_type() const; + void set_base_script(const String& p_path); + String get_base_script() const; + void set_basic_type(Variant::Type p_type); Variant::Type get_basic_type() const; @@ -149,13 +196,9 @@ public: void set_call_mode(CallMode p_mode); CallMode get_call_mode() const; - void set_use_builtin_value(bool p_use); - bool is_using_builtin_value() const; - - void set_builtin_value(const Variant &p_value); - Variant get_builtin_value() const; virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; VisualScriptPropertySet(); }; @@ -171,14 +214,17 @@ public: CALL_MODE_SELF, CALL_MODE_NODE_PATH, CALL_MODE_INSTANCE, - CALL_MODE_BASIC_TYPE + CALL_MODE_BASIC_TYPE, }; private: + Variant::Type type_cache; + CallMode call_mode; Variant::Type basic_type; StringName base_type; + String base_script; NodePath base_path; StringName property; InputEvent::Type event_type; @@ -187,6 +233,10 @@ private: Node *_get_base_node() const; StringName _get_base_type() const; + void _update_cache(); + + void _set_type_cache(Variant::Type p_type); + Variant::Type _get_type_cache() const; protected: virtual void _validate_property(PropertyInfo& property) const; @@ -216,6 +266,9 @@ public: void set_base_type(const StringName& p_type); StringName get_base_type() const; + void set_base_script(const String& p_path); + String get_base_script() const; + void set_basic_type(Variant::Type p_type); Variant::Type get_basic_type() const; @@ -244,74 +297,6 @@ VARIANT_ENUM_CAST(VisualScriptPropertyGet::CallMode ); -class VisualScriptScriptCall : public VisualScriptNode { - - OBJ_TYPE(VisualScriptScriptCall,VisualScriptNode) -public: - enum CallMode { - CALL_MODE_SELF, - CALL_MODE_NODE_PATH, - }; -private: - - CallMode call_mode; - NodePath base_path; - StringName function; - int argument_count; - - - Node *_get_base_node() const; - - - void _update_argument_count(); -protected: - virtual void _validate_property(PropertyInfo& property) const; - - static void _bind_methods(); - -public: - - virtual int get_output_sequence_port_count() const; - virtual bool has_input_sequence_port() const; - - - virtual String get_output_sequence_port_text(int p_port) const; - - - virtual int get_input_value_port_count() const; - virtual int get_output_value_port_count() const; - - - virtual PropertyInfo get_input_value_port_info(int p_idx) const; - virtual PropertyInfo get_output_value_port_info(int p_idx) const; - - virtual String get_caption() const; - virtual String get_text() const; - virtual String get_category() const { return "functions"; } - - void set_function(const StringName& p_type); - StringName get_function() const; - - void set_base_path(const NodePath& p_type); - NodePath get_base_path() const; - - void set_call_mode(CallMode p_mode); - CallMode get_call_mode() const; - - void set_argument_count(int p_count); - int get_argument_count() const; - - - virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); - - VisualScriptScriptCall(); -}; - -VARIANT_ENUM_CAST(VisualScriptScriptCall::CallMode ); - - - - class VisualScriptEmitSignal : public VisualScriptNode { OBJ_TYPE(VisualScriptEmitSignal,VisualScriptNode) @@ -351,6 +336,9 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + + VisualScriptEmitSignal(); }; diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp index d205a40f76..7ada292b13 100644 --- a/modules/visual_script/visual_script_nodes.cpp +++ b/modules/visual_script/visual_script_nodes.cpp @@ -4,6 +4,7 @@ #include "scene/main/scene_main_loop.h" #include "os/os.h" #include "scene/main/node.h" +#include "os/input.h" ////////////////////////////////////////// ////////////////FUNCTION////////////////// @@ -62,6 +63,12 @@ bool VisualScriptFunction::_set(const StringName& p_name, const Variant& p_valu stack_size=p_value; return true; } + + if (p_name=="rpc/mode") { + rpc_mode=ScriptInstance::RPCMode(int(p_value)); + return true; + } + return false; } @@ -99,13 +106,18 @@ bool VisualScriptFunction::_get(const StringName& p_name,Variant &r_ret) const return true; } + if (p_name=="rpc/mode") { + r_ret=rpc_mode; + return true; + } + return false; } void VisualScriptFunction::_get_property_list( List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::INT,"argument_count",PROPERTY_HINT_RANGE,"0,256")); - String argt="Variant"; + String argt="Any"; for(int i=1;i<Variant::VARIANT_MAX;i++) { argt+=","+Variant::get_type_name(Variant::Type(i)); } @@ -118,6 +130,7 @@ void VisualScriptFunction::_get_property_list( List<PropertyInfo> *p_list) cons p_list->push_back(PropertyInfo(Variant::INT,"stack/size",PROPERTY_HINT_RANGE,"1,100000")); } p_list->push_back(PropertyInfo(Variant::BOOL,"stack/stackless")); + p_list->push_back(PropertyInfo(Variant::INT,"rpc/mode",PROPERTY_HINT_ENUM,"Disabled,Remote,Sync,Master,Slave")); } @@ -224,6 +237,16 @@ int VisualScriptFunction::get_argument_count() const { return arguments.size(); } + +void VisualScriptFunction::set_rpc_mode(ScriptInstance::RPCMode p_mode) { + rpc_mode=p_mode; +} + +ScriptInstance::RPCMode VisualScriptFunction::get_rpc_mode() const { + return rpc_mode; +} + + class VisualScriptNodeInstanceFunction : public VisualScriptNodeInstance { public: @@ -231,8 +254,6 @@ public: VisualScriptInstance *instance; //virtual int get_working_memory_size() const { return 0; } - //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } - //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { @@ -272,6 +293,7 @@ VisualScriptFunction::VisualScriptFunction() { stack_size=256; stack_less=false; + rpc_mode=ScriptInstance::RPC_MODE_DISABLED; } @@ -302,12 +324,12 @@ int VisualScriptFunction::get_stack_size() const { int VisualScriptOperator::get_output_sequence_port_count() const { - return 1; + return 0; } bool VisualScriptOperator::has_input_sequence_port() const{ - return true; + return false; } int VisualScriptOperator::get_input_value_port_count() const{ @@ -362,6 +384,8 @@ PropertyInfo VisualScriptOperator::get_input_value_port_info(int p_idx) const{ PropertyInfo pinfo; pinfo.name=p_idx==0?"A":"B"; pinfo.type=port_types[op][p_idx]; + if (pinfo.type==Variant::NIL) + pinfo.type=typed; return pinfo; } PropertyInfo VisualScriptOperator::get_output_value_port_info(int p_idx) const{ @@ -400,6 +424,8 @@ PropertyInfo VisualScriptOperator::get_output_value_port_info(int p_idx) const{ PropertyInfo pinfo; pinfo.name=""; pinfo.type=port_types[op]; + if (pinfo.type==Variant::NIL) + pinfo.type=typed; return pinfo; } @@ -492,19 +518,43 @@ Variant::Operator VisualScriptOperator::get_operator() const{ return op; } +void VisualScriptOperator::set_typed(Variant::Type p_op) { + + if (typed==p_op) + return; + + typed=p_op; + ports_changed_notify(); +} + +Variant::Type VisualScriptOperator::get_typed() const { + + return typed; +} + void VisualScriptOperator::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_operator","op"),&VisualScriptOperator::set_operator); ObjectTypeDB::bind_method(_MD("get_operator"),&VisualScriptOperator::get_operator); + ObjectTypeDB::bind_method(_MD("set_typed","type"),&VisualScriptOperator::set_typed); + ObjectTypeDB::bind_method(_MD("get_typed"),&VisualScriptOperator::get_typed); + String types; for(int i=0;i<Variant::OP_MAX;i++) { if (i>0) types+=","; types+=op_names[i]; } + + String argt="Any"; + for(int i=1;i<Variant::VARIANT_MAX;i++) { + argt+=","+Variant::get_type_name(Variant::Type(i)); + } + ADD_PROPERTY(PropertyInfo(Variant::INT,"operator_value/type",PROPERTY_HINT_ENUM,types),_SCS("set_operator"),_SCS("get_operator")); + ADD_PROPERTY(PropertyInfo(Variant::INT,"typed_value/typed",PROPERTY_HINT_ENUM,argt),_SCS("set_typed"),_SCS("get_typed")); } @@ -515,8 +565,6 @@ public: Variant::Operator op; //virtual int get_working_memory_size() const { return 0; } - //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } - //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return true; } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { @@ -558,6 +606,7 @@ VisualScriptNodeInstance* VisualScriptOperator::instance(VisualScriptInstance* p VisualScriptOperator::VisualScriptOperator() { op=Variant::OP_ADD; + typed=Variant::NIL; } @@ -679,20 +728,14 @@ public: VisualScriptInstance *instance; StringName variable; - //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - - if (instance->get_variable(variable,r_value)==false) { - r_error=RTR("VariableGet not found in script: ")+"'"+String(variable)+"'"; - return false; - } else { - return true; - } - } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + if (instance->get_variable(variable,p_outputs[0])==false) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str=RTR("VariableGet not found in script: ")+"'"+String(variable)+"'"; + return false; + } return 0; } @@ -714,7 +757,7 @@ VisualScriptVariableGet::VisualScriptVariableGet() { ////////////////////////////////////////// -////////////////VARIABLE GET////////////////// +////////////////VARIABLE SET////////////////// ////////////////////////////////////////// int VisualScriptVariableSet::get_output_sequence_port_count() const { @@ -822,17 +865,16 @@ public: StringName variable; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return false; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return false; } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { if (instance->set_variable(variable,*p_inputs[0])==false) { - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD ; + + + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; r_error_str=RTR("VariableSet not found in script: ")+"'"+String(variable)+"'"; } - return 0; } @@ -971,17 +1013,10 @@ public: Variant constant; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - - *r_value=constant; - - return true; - - } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + *p_outputs[0]=constant; return 0; } @@ -1001,6 +1036,124 @@ VisualScriptConstant::VisualScriptConstant() { } +////////////////////////////////////////// +////////////////PRELOAD////////////////// +////////////////////////////////////////// + +int VisualScriptPreload::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptPreload::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptPreload::get_input_value_port_count() const{ + + return 0; +} +int VisualScriptPreload::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptPreload::get_output_sequence_port_text(int p_port) const { + + return String(); +} + +PropertyInfo VisualScriptPreload::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(); +} + +PropertyInfo VisualScriptPreload::get_output_value_port_info(int p_idx) const{ + + PropertyInfo pinfo=PropertyInfo(Variant::OBJECT,"res"); + if (preload.is_valid()) { + pinfo.hint=PROPERTY_HINT_RESOURCE_TYPE; + pinfo.hint_string=preload->get_type(); + } + + return pinfo; +} + + +String VisualScriptPreload::get_caption() const { + + return "Preload"; +} + +String VisualScriptPreload::get_text() const { + + if (preload.is_valid()) { + if (preload->get_path().is_resource_file()) { + return preload->get_path(); + } else if (preload->get_name()!=String()) { + return preload->get_name(); + } else { + return preload->get_type(); + } + } else { + return "<empty>"; + } +} + + +void VisualScriptPreload::set_preload(const Ref<Resource>& p_preload){ + + if (preload==p_preload) + return; + + preload=p_preload; + ports_changed_notify(); +} +Ref<Resource> VisualScriptPreload::get_preload() const{ + + return preload; +} + + +void VisualScriptPreload::_bind_methods() { + + + ObjectTypeDB::bind_method(_MD("set_preload","resource"),&VisualScriptPreload::set_preload); + ObjectTypeDB::bind_method(_MD("get_preload"),&VisualScriptPreload::get_preload); + + + ADD_PROPERTY(PropertyInfo(Variant::OBJECT,"resource",PROPERTY_HINT_RESOURCE_TYPE,"Resource"),_SCS("set_preload"),_SCS("get_preload")); + +} + +class VisualScriptNodeInstancePreload : public VisualScriptNodeInstance { +public: + + Ref<Resource> preload; + //virtual int get_working_memory_size() const { return 0; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + *p_outputs[0]=preload; + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptPreload::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstancePreload * instance = memnew(VisualScriptNodeInstancePreload ); + instance->preload=preload; + return instance; +} + +VisualScriptPreload::VisualScriptPreload() { + +} + + ////////////////////////////////////////// @@ -1009,12 +1162,12 @@ VisualScriptConstant::VisualScriptConstant() { int VisualScriptIndexGet::get_output_sequence_port_count() const { - return 1; + return 0; } bool VisualScriptIndexGet::has_input_sequence_port() const{ - return true; + return false; } int VisualScriptIndexGet::get_input_value_port_count() const{ @@ -1063,8 +1216,6 @@ public: //virtual int get_working_memory_size() const { return 0; } - //virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return false; } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { @@ -1155,8 +1306,6 @@ public: //virtual int get_working_memory_size() const { return 0; } - //virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return false; } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { @@ -1252,17 +1401,11 @@ public: int index; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - - *r_value = GlobalConstants::get_global_constant_value(index); - return true; - - } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + *p_outputs[0] = GlobalConstants::get_global_constant_value(index); return 0; } @@ -1297,6 +1440,286 @@ VisualScriptGlobalConstant::VisualScriptGlobalConstant() { index=0; } +////////////////////////////////////////// +////////////////CLASSCONSTANT/////////// +////////////////////////////////////////// + +int VisualScriptClassConstant::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptClassConstant::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptClassConstant::get_input_value_port_count() const{ + + return 0; +} +int VisualScriptClassConstant::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptClassConstant::get_output_sequence_port_text(int p_port) const { + + return String(); +} + +PropertyInfo VisualScriptClassConstant::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(); +} + +PropertyInfo VisualScriptClassConstant::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(Variant::INT,"value"); +} + + +String VisualScriptClassConstant::get_caption() const { + + return "ClassConst"; +} + +String VisualScriptClassConstant::get_text() const { + + return String(base_type)+"."+String(name); +} + +void VisualScriptClassConstant::set_class_constant(const StringName& p_which) { + + name=p_which; + _change_notify(); + ports_changed_notify(); +} + +StringName VisualScriptClassConstant::get_class_constant() { + return name; +} + + +void VisualScriptClassConstant::set_base_type(const StringName& p_which) { + + base_type=p_which; + _change_notify(); + ports_changed_notify(); +} + +StringName VisualScriptClassConstant::get_base_type() { + return base_type; +} + +class VisualScriptNodeInstanceClassConstant : public VisualScriptNodeInstance { +public: + + int value; + bool valid; + //virtual int get_working_memory_size() const { return 0; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + if (!valid) { + r_error_str="Invalid constant name, pick a valid class constant."; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + } + + *p_outputs[0] = value; + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptClassConstant::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceClassConstant * instance = memnew(VisualScriptNodeInstanceClassConstant ); + instance->value=ObjectTypeDB::get_integer_constant(base_type,name,&instance->valid); + return instance; +} + +void VisualScriptClassConstant::_validate_property(PropertyInfo& property) const { + + if (property.name=="constant") { + + List<String> constants; + ObjectTypeDB::get_integer_constant_list(base_type,&constants,true); + + property.hint_string=""; + for(List<String>::Element *E=constants.front();E;E=E->next()) { + if (property.hint_string!=String()) { + property.hint_string+=","; + } + property.hint_string+=E->get(); + } + } +} + +void VisualScriptClassConstant::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_class_constant","name"),&VisualScriptClassConstant::set_class_constant); + ObjectTypeDB::bind_method(_MD("get_class_constant"),&VisualScriptClassConstant::get_class_constant); + + ObjectTypeDB::bind_method(_MD("set_base_type","name"),&VisualScriptClassConstant::set_base_type); + ObjectTypeDB::bind_method(_MD("get_base_type"),&VisualScriptClassConstant::get_base_type); + + ADD_PROPERTY(PropertyInfo(Variant::STRING,"base_type",PROPERTY_HINT_TYPE_STRING,"Object"),_SCS("set_base_type"),_SCS("get_base_type")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"constant",PROPERTY_HINT_ENUM,""),_SCS("set_class_constant"),_SCS("get_class_constant")); +} + +VisualScriptClassConstant::VisualScriptClassConstant() { + + base_type="Object"; +} + + +////////////////////////////////////////// +////////////////BASICTYPECONSTANT/////////// +////////////////////////////////////////// + +int VisualScriptBasicTypeConstant::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptBasicTypeConstant::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptBasicTypeConstant::get_input_value_port_count() const{ + + return 0; +} +int VisualScriptBasicTypeConstant::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptBasicTypeConstant::get_output_sequence_port_text(int p_port) const { + + return String(); +} + +PropertyInfo VisualScriptBasicTypeConstant::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(); +} + +PropertyInfo VisualScriptBasicTypeConstant::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(Variant::INT,"value"); +} + + +String VisualScriptBasicTypeConstant::get_caption() const { + + return "BasicConst"; +} + +String VisualScriptBasicTypeConstant::get_text() const { + + return Variant::get_type_name(type)+"."+String(name); +} + +void VisualScriptBasicTypeConstant::set_basic_type_constant(const StringName& p_which) { + + name=p_which; + _change_notify(); + ports_changed_notify(); +} + +StringName VisualScriptBasicTypeConstant::get_basic_type_constant() const { + return name; +} + + +void VisualScriptBasicTypeConstant::set_basic_type(Variant::Type p_which) { + + type=p_which; + _change_notify(); + ports_changed_notify(); +} + +Variant::Type VisualScriptBasicTypeConstant::get_basic_type() const { + return type; +} + +class VisualScriptNodeInstanceBasicTypeConstant : public VisualScriptNodeInstance { +public: + + int value; + bool valid; + //virtual int get_working_memory_size() const { return 0; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + if (!valid) { + r_error_str="Invalid constant name, pick a valid basic type constant."; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + } + + *p_outputs[0] = value; + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptBasicTypeConstant::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceBasicTypeConstant * instance = memnew(VisualScriptNodeInstanceBasicTypeConstant ); + instance->value=Variant::get_numeric_constant_value(type,name,&instance->valid); + return instance; +} + +void VisualScriptBasicTypeConstant::_validate_property(PropertyInfo& property) const { + + if (property.name=="constant") { + + List<StringName> constants; + Variant::get_numeric_constants_for_type(type,&constants); + + if (constants.size()==0) { + property.usage=0; + return; + } + property.hint_string=""; + for(List<StringName>::Element *E=constants.front();E;E=E->next()) { + if (property.hint_string!=String()) { + property.hint_string+=","; + } + property.hint_string+=String(E->get()); + } + + } +} + +void VisualScriptBasicTypeConstant::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_basic_type","name"),&VisualScriptBasicTypeConstant::set_basic_type); + ObjectTypeDB::bind_method(_MD("get_basic_type"),&VisualScriptBasicTypeConstant::get_basic_type); + + ObjectTypeDB::bind_method(_MD("set_basic_type_constant","name"),&VisualScriptBasicTypeConstant::set_basic_type_constant); + ObjectTypeDB::bind_method(_MD("get_basic_type_constant"),&VisualScriptBasicTypeConstant::get_basic_type_constant); + + + String argt="Null"; + for(int i=1;i<Variant::VARIANT_MAX;i++) { + argt+=","+Variant::get_type_name(Variant::Type(i)); + } + + ADD_PROPERTY(PropertyInfo(Variant::INT,"basic_type",PROPERTY_HINT_ENUM,argt),_SCS("set_basic_type"),_SCS("get_basic_type")); + ADD_PROPERTY(PropertyInfo(Variant::STRING,"constant",PROPERTY_HINT_ENUM,""),_SCS("set_basic_type_constant"),_SCS("get_basic_type_constant")); +} + +VisualScriptBasicTypeConstant::VisualScriptBasicTypeConstant() { + + type=Variant::NIL; +} + ////////////////////////////////////////// @@ -1384,17 +1807,10 @@ public: float value; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - - *r_value = value; - return true; - - } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - + *p_outputs[0]=value; return 0; } @@ -1501,16 +1917,10 @@ public: Object* singleton; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - - *r_value=singleton; - return true; - } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - + *p_outputs[0]=singleton; return 0; } @@ -1523,6 +1933,19 @@ VisualScriptNodeInstance* VisualScriptEngineSingleton::instance(VisualScriptInst return instance; } +VisualScriptEngineSingleton::TypeGuess VisualScriptEngineSingleton::guess_output_type(TypeGuess* p_inputs, int p_output) const { + + Object *obj=Globals::get_singleton()->get_singleton_object(singleton); + TypeGuess tg; + tg.type=Variant::OBJECT; + if (obj) { + tg.obj_type=obj->get_type(); + tg.script=obj->get_script(); + } + + return tg; +} + void VisualScriptEngineSingleton::_bind_methods() { @@ -1623,28 +2046,26 @@ public: NodePath path; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { Node* node = instance->get_owner_ptr()->cast_to<Node>(); if (!node) { - r_error="Base object is not a Node!"; - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Base object is not a Node!"; + return 0; } Node* another = node->get_node(path); if (!node) { - r_error="Path does not lead Node!"; - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Path does not lead Node!"; + return 0; } - *r_value=another; - return true; - } - - virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + *p_outputs[0]=another; return 0; } @@ -1662,6 +2083,8 @@ VisualScriptNodeInstance* VisualScriptSceneNode::instance(VisualScriptInstance* } + + #ifdef TOOLS_ENABLED static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const Ref<Script> &script) { @@ -1685,6 +2108,49 @@ static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const R #endif +VisualScriptSceneNode::TypeGuess VisualScriptSceneNode::guess_output_type(TypeGuess* p_inputs, int p_output) const { + + + VisualScriptSceneNode::TypeGuess tg; + tg.type=Variant::OBJECT; + tg.obj_type="Node"; + +#ifdef TOOLS_ENABLED + Ref<Script> script = get_visual_script(); + if (!script.is_valid()) + return tg; + + MainLoop * main_loop = OS::get_singleton()->get_main_loop(); + if (!main_loop) + return tg; + + SceneTree *scene_tree = main_loop->cast_to<SceneTree>(); + + if (!scene_tree) + return tg; + + Node *edited_scene = scene_tree->get_edited_scene_root(); + + if (!edited_scene) + return tg; + + Node* script_node = _find_script_node(edited_scene,edited_scene,script); + + if (!script_node) + return tg; + + Node* another = script_node->get_node(path); + + if (another) { + tg.obj_type=another->get_type(); + tg.script=another->get_script(); + } +#endif + return tg; + +} + + void VisualScriptSceneNode::_validate_property(PropertyInfo& property) const { #ifdef TOOLS_ENABLED @@ -1789,28 +2255,24 @@ public: VisualScriptInstance *instance; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { Node* node = instance->get_owner_ptr()->cast_to<Node>(); if (!node) { - r_error="Base object is not a Node!"; - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Base object is not a Node!"; + return 0; } SceneTree* tree = node->get_tree(); if (!tree) { - r_error="Attempt to get SceneTree while node is not in the active tree."; - return false; + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + r_error_str="Attempt to get SceneTree while node is not in the active tree."; + return 0; } - *r_value=tree; - return true; - - } - - virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { - + *p_outputs[0]=tree; return 0; } @@ -1826,6 +2288,13 @@ VisualScriptNodeInstance* VisualScriptSceneTree::instance(VisualScriptInstance* return instance; } +VisualScriptSceneTree::TypeGuess VisualScriptSceneTree::guess_output_type(TypeGuess* p_inputs, int p_output) const { + + TypeGuess tg; + tg.type=Variant::OBJECT; + tg.obj_type="SceneTree"; + return tg; +} void VisualScriptSceneTree::_validate_property(PropertyInfo& property) const { @@ -1907,14 +2376,10 @@ public: String path; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - *r_value = path; - return true; - } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + *p_outputs[0] = path; return 0; } @@ -2004,15 +2469,10 @@ public: VisualScriptInstance* instance; //virtual int get_working_memory_size() const { return 0; } - virtual bool is_output_port_unsequenced(int p_idx) const { return true; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - - *r_value = instance->get_owner_ptr(); - return true; - } virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + *p_outputs[0] = instance->get_owner_ptr(); return 0; } @@ -2026,6 +2486,23 @@ VisualScriptNodeInstance* VisualScriptSelf::instance(VisualScriptInstance* p_ins return instance; } +VisualScriptSelf::TypeGuess VisualScriptSelf::guess_output_type(TypeGuess* p_inputs, int p_output) const { + + VisualScriptSceneNode::TypeGuess tg; + tg.type=Variant::OBJECT; + tg.obj_type="Object"; + + Ref<Script> script = get_visual_script(); + if (!script.is_valid()) + return tg; + + tg.obj_type=script->get_instance_base_type(); + tg.script=script; + + return tg; + + +} void VisualScriptSelf::_bind_methods() { @@ -2138,35 +2615,8 @@ public: int in_count; int out_count; int work_mem_size; - Vector<bool> out_unsequenced; virtual int get_working_memory_size() const { return work_mem_size; } - virtual bool is_output_port_unsequenced(int p_idx) const { return out_unsequenced[p_idx]; } - virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { - - if (!node->get_script_instance() || !node->get_script_instance()->has_method(VisualScriptLanguage::singleton->_get_output_port_unsequenced)) { -#ifdef DEBUG_ENABLED - r_error=RTR("Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced ports were specified."); - return false; - } -#endif - - Array work_mem(true); - work_mem.resize(work_mem_size); - - *r_value = node->get_script_instance()->call(VisualScriptLanguage::singleton->_get_output_port_unsequenced,p_idx,work_mem); - - - for(int i=0;i<work_mem_size;i++) { - if (i<work_mem.size()) { - p_working_mem[i]=work_mem[i]; - } - } - - return true; - - } - virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { if (node->get_script_instance()) { @@ -2239,10 +2689,6 @@ VisualScriptNodeInstance* VisualScriptCustomNode::instance(VisualScriptInstance* instance->in_count=get_input_value_port_count(); instance->out_count=get_output_value_port_count(); - for(int i=0;i<instance->out_count;i++) { - bool unseq = get_script_instance() && get_script_instance()->has_method("_is_output_port_unsequenced") && bool(get_script_instance()->call("_is_output_port_unsequenced",i)); - instance->out_unsequenced.push_back(unseq); - } if (get_script_instance() && get_script_instance()->has_method("_get_working_memory_size")) { instance->work_mem_size = get_script_instance()->call("_get_working_memory_size"); @@ -2275,8 +2721,6 @@ void VisualScriptCustomNode::_bind_methods() { BIND_VMETHOD( MethodInfo(Variant::STRING,"_get_category") ); BIND_VMETHOD( MethodInfo(Variant::INT,"_get_working_memory_size") ); - BIND_VMETHOD( MethodInfo(Variant::INT,"_is_output_port_unsequenced",PropertyInfo(Variant::INT,"idx")) ); - BIND_VMETHOD( MethodInfo(Variant::INT,"_get_output_port_unsequenced",PropertyInfo(Variant::INT,"idx"),PropertyInfo(Variant::ARRAY,"work_mem")) ); BIND_VMETHOD( MethodInfo(Variant::NIL,"_step:Variant",PropertyInfo(Variant::ARRAY,"inputs"),PropertyInfo(Variant::ARRAY,"outputs"),PropertyInfo(Variant::INT,"start_mode"),PropertyInfo(Variant::ARRAY,"working_mem")) ); BIND_CONSTANT( START_MODE_BEGIN_SEQUENCE ); @@ -2388,8 +2832,6 @@ public: bool valid; //virtual int get_working_memory_size() const { return 0; } - //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } - //virtual bool get_output_port_unsequenced(int p_idx,Variant* r_value,Variant* p_working_mem,String &r_error) const { return false; }; virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { @@ -2432,23 +2874,1016 @@ VisualScriptSubCall::VisualScriptSubCall() { } +////////////////////////////////////////// +////////////////Comment/////////// +////////////////////////////////////////// + +int VisualScriptComment::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptComment::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptComment::get_input_value_port_count() const{ + return 0; +} +int VisualScriptComment::get_output_value_port_count() const{ + + return 0; +} + +String VisualScriptComment::get_output_sequence_port_text(int p_port) const { + + return String(); +} + +PropertyInfo VisualScriptComment::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(); +} + +PropertyInfo VisualScriptComment::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(); +} + + +String VisualScriptComment::get_caption() const { + + return title; +} + + +String VisualScriptComment::get_text() const { + + return description; +} + +void VisualScriptComment::set_title(const String& p_title) { + + + if (title==p_title) + return; + title=p_title; + ports_changed_notify(); +} + +String VisualScriptComment::get_title() const{ + + return title; +} + +void VisualScriptComment::set_description(const String& p_description){ + + if (description==p_description) + return; + description=p_description; + ports_changed_notify(); + +} +String VisualScriptComment::get_description() const{ + + return description; +} + +void VisualScriptComment::set_size(const Size2& p_size){ + + if (size==p_size) + return; + size=p_size; + ports_changed_notify(); + +} +Size2 VisualScriptComment::get_size() const{ + + return size; +} + + +String VisualScriptComment::get_category() const { + + return "data"; +} + +class VisualScriptNodeInstanceComment : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + + //virtual int get_working_memory_size() const { return 0; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptComment::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceComment * instance = memnew(VisualScriptNodeInstanceComment ); + instance->instance=p_instance; + return instance; +} + + + +void VisualScriptComment::_bind_methods() { + + + ObjectTypeDB::bind_method(_MD("set_title","title"),&VisualScriptComment::set_title); + ObjectTypeDB::bind_method(_MD("get_title"),&VisualScriptComment::get_title); + + ObjectTypeDB::bind_method(_MD("set_description","description"),&VisualScriptComment::set_description); + ObjectTypeDB::bind_method(_MD("get_description"),&VisualScriptComment::get_description); + + ObjectTypeDB::bind_method(_MD("set_size","size"),&VisualScriptComment::set_size); + ObjectTypeDB::bind_method(_MD("get_size"),&VisualScriptComment::get_size); + + ADD_PROPERTY( PropertyInfo(Variant::STRING,"title"),_SCS("set_title"),_SCS("get_title")); + ADD_PROPERTY( PropertyInfo(Variant::STRING,"description",PROPERTY_HINT_MULTILINE_TEXT),_SCS("set_description"),_SCS("get_description")); + ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"size"),_SCS("set_size"),_SCS("get_size")); + +} + +VisualScriptComment::VisualScriptComment() { + + title="Comment"; + size=Size2(150,150); +} + + +////////////////////////////////////////// +////////////////Constructor/////////// +////////////////////////////////////////// + +int VisualScriptConstructor::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptConstructor::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptConstructor::get_input_value_port_count() const{ + return constructor.arguments.size(); +} +int VisualScriptConstructor::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptConstructor::get_output_sequence_port_text(int p_port) const { + + return ""; +} + +PropertyInfo VisualScriptConstructor::get_input_value_port_info(int p_idx) const{ + + return constructor.arguments[p_idx]; +} + +PropertyInfo VisualScriptConstructor::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(type,"value"); +} + + +String VisualScriptConstructor::get_caption() const { + + return "Construct"; +} + + +String VisualScriptConstructor::get_text() const { + + return "new "+Variant::get_type_name(type)+"()"; +} + + +String VisualScriptConstructor::get_category() const { + + return "functions"; +} + +void VisualScriptConstructor::set_constructor_type(Variant::Type p_type) { + + if (type==p_type) + return; + + type=p_type; + ports_changed_notify(); +} + +Variant::Type VisualScriptConstructor::get_constructor_type() const { + + return type; +} + +void VisualScriptConstructor::set_constructor(const Dictionary& p_info) { + + constructor=MethodInfo::from_dict(p_info); + ports_changed_notify(); +} + +Dictionary VisualScriptConstructor::get_constructor() const { + + return constructor; +} + + +class VisualScriptNodeInstanceConstructor : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + Variant::Type type; + int argcount; + + //virtual int get_working_memory_size() const { return 0; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + Variant::CallError ce; + *p_outputs[0]=Variant::construct(type,p_inputs,argcount,ce); + if (ce.error!=Variant::CallError::CALL_OK) { + r_error_str="Invalid arguments for constructor"; + } + + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptConstructor::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceConstructor * instance = memnew(VisualScriptNodeInstanceConstructor ); + instance->instance=p_instance; + instance->type=type; + instance->argcount=constructor.arguments.size(); + return instance; +} + + + +void VisualScriptConstructor::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_constructor_type","type"),&VisualScriptConstructor::set_constructor_type); + ObjectTypeDB::bind_method(_MD("get_constructor_type"),&VisualScriptConstructor::get_constructor_type); + + ObjectTypeDB::bind_method(_MD("set_constructor","constructor"),&VisualScriptConstructor::set_constructor); + ObjectTypeDB::bind_method(_MD("get_constructor"),&VisualScriptConstructor::get_constructor); + + ADD_PROPERTY( PropertyInfo(Variant::INT,"type",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR),_SCS("set_constructor_type"),_SCS("get_constructor_type")); + ADD_PROPERTY( PropertyInfo(Variant::DICTIONARY,"constructor",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR),_SCS("set_constructor"),_SCS("get_constructor")); + +} + +VisualScriptConstructor::VisualScriptConstructor() { + + type=Variant::NIL; + +} + +static Map<String,Pair<Variant::Type,MethodInfo> > constructor_map; + +static Ref<VisualScriptNode> create_constructor_node(const String& p_name) { + + ERR_FAIL_COND_V(!constructor_map.has(p_name),Ref<VisualScriptNode>()); + + Ref<VisualScriptConstructor> vsc; + vsc.instance(); + vsc->set_constructor_type(constructor_map[p_name].first); + vsc->set_constructor(constructor_map[p_name].second); + + return vsc; +} + +////////////////////////////////////////// +////////////////LocalVar/////////// +////////////////////////////////////////// + +int VisualScriptLocalVar::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptLocalVar::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptLocalVar::get_input_value_port_count() const{ + return 0; +} +int VisualScriptLocalVar::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptLocalVar::get_output_sequence_port_text(int p_port) const { + + return ""; +} + +PropertyInfo VisualScriptLocalVar::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(); +} +PropertyInfo VisualScriptLocalVar::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(type,"get"); +} + + +String VisualScriptLocalVar::get_caption() const { + + return "LocalVarGet"; +} + + +String VisualScriptLocalVar::get_text() const { + + return name; +} + + +String VisualScriptLocalVar::get_category() const { + + return "data"; +} + + +void VisualScriptLocalVar::set_var_name(const StringName& p_name) { + + if (name==p_name) + return; + + name=p_name; + ports_changed_notify(); + +} + +StringName VisualScriptLocalVar::get_var_name() const { + + return name; +} + +void VisualScriptLocalVar::set_var_type(Variant::Type p_type) { + + type=p_type; + ports_changed_notify(); +} + +Variant::Type VisualScriptLocalVar::get_var_type() const { + + return type; +} + + +class VisualScriptNodeInstanceLocalVar : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + StringName name; + + + virtual int get_working_memory_size() const { return 1; } + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + *p_outputs[0]=*p_working_mem; + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptLocalVar::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceLocalVar * instance = memnew(VisualScriptNodeInstanceLocalVar ); + instance->instance=p_instance; + instance->name=name; + + return instance; +} + + + +void VisualScriptLocalVar::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_var_name","name"),&VisualScriptLocalVar::set_var_name); + ObjectTypeDB::bind_method(_MD("get_var_name"),&VisualScriptLocalVar::get_var_name); + + ObjectTypeDB::bind_method(_MD("set_var_type","type"),&VisualScriptLocalVar::set_var_type); + ObjectTypeDB::bind_method(_MD("get_var_type"),&VisualScriptLocalVar::get_var_type); + + String argt="Any"; + for(int i=1;i<Variant::VARIANT_MAX;i++) { + argt+=","+Variant::get_type_name(Variant::Type(i)); + } + + ADD_PROPERTY( PropertyInfo(Variant::STRING,"variable/name"),_SCS("set_var_name"),_SCS("get_var_name")); + ADD_PROPERTY( PropertyInfo(Variant::INT,"variable/type",PROPERTY_HINT_ENUM,argt),_SCS("set_var_type"),_SCS("get_var_type")); + + +} + +VisualScriptLocalVar::VisualScriptLocalVar() { + + name="new_local"; + type=Variant::NIL; + +} + +////////////////////////////////////////// +////////////////LocalVar/////////// +////////////////////////////////////////// + +int VisualScriptLocalVarSet::get_output_sequence_port_count() const { + + return 1; +} + +bool VisualScriptLocalVarSet::has_input_sequence_port() const{ + + return true; +} + +int VisualScriptLocalVarSet::get_input_value_port_count() const{ + return 1; +} +int VisualScriptLocalVarSet::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptLocalVarSet::get_output_sequence_port_text(int p_port) const { + + return ""; +} + +PropertyInfo VisualScriptLocalVarSet::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(type,"set"); +} +PropertyInfo VisualScriptLocalVarSet::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(type,"get"); +} + + +String VisualScriptLocalVarSet::get_caption() const { + + return "LocalVarSet"; +} + + +String VisualScriptLocalVarSet::get_text() const { + + return name; +} + + +String VisualScriptLocalVarSet::get_category() const { + + return "data"; +} + + +void VisualScriptLocalVarSet::set_var_name(const StringName& p_name) { + + if (name==p_name) + return; + + name=p_name; + ports_changed_notify(); + +} + +StringName VisualScriptLocalVarSet::get_var_name() const { + + return name; +} + +void VisualScriptLocalVarSet::set_var_type(Variant::Type p_type) { + + type=p_type; + ports_changed_notify(); +} + +Variant::Type VisualScriptLocalVarSet::get_var_type() const { + + return type; +} + + +class VisualScriptNodeInstanceLocalVarSet : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + StringName name; + + + virtual int get_working_memory_size() const { return 1; } + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + *p_working_mem=*p_inputs[0]; + *p_outputs[0]=*p_working_mem; + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptLocalVarSet::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceLocalVarSet * instance = memnew(VisualScriptNodeInstanceLocalVarSet ); + instance->instance=p_instance; + instance->name=name; + + return instance; +} + + + +void VisualScriptLocalVarSet::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_var_name","name"),&VisualScriptLocalVarSet::set_var_name); + ObjectTypeDB::bind_method(_MD("get_var_name"),&VisualScriptLocalVarSet::get_var_name); + + ObjectTypeDB::bind_method(_MD("set_var_type","type"),&VisualScriptLocalVarSet::set_var_type); + ObjectTypeDB::bind_method(_MD("get_var_type"),&VisualScriptLocalVarSet::get_var_type); + + String argt="Any"; + for(int i=1;i<Variant::VARIANT_MAX;i++) { + argt+=","+Variant::get_type_name(Variant::Type(i)); + } + + ADD_PROPERTY( PropertyInfo(Variant::STRING,"variable/name"),_SCS("set_var_name"),_SCS("get_var_name")); + ADD_PROPERTY( PropertyInfo(Variant::INT,"variable/type",PROPERTY_HINT_ENUM,argt),_SCS("set_var_type"),_SCS("get_var_type")); + + +} + +VisualScriptLocalVarSet::VisualScriptLocalVarSet() { + + name="new_local"; + type=Variant::NIL; + +} + + +////////////////////////////////////////// +////////////////LocalVar/////////// +////////////////////////////////////////// + +int VisualScriptInputAction::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptInputAction::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptInputAction::get_input_value_port_count() const{ + return 0; +} +int VisualScriptInputAction::get_output_value_port_count() const{ + + return 1; +} + +String VisualScriptInputAction::get_output_sequence_port_text(int p_port) const { + + return ""; +} + +PropertyInfo VisualScriptInputAction::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(); +} +PropertyInfo VisualScriptInputAction::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(Variant::BOOL,"pressed"); +} + + +String VisualScriptInputAction::get_caption() const { + + + return "Action"; +} + + +String VisualScriptInputAction::get_text() const { + + switch(mode) { + case MODE_PRESSED: { + return name; + } break; + case MODE_RELEASED: { + return "not "+name; + } break; + case MODE_JUST_PRESSED: { + return String(name)+" "+TTR("just pressed"); + } break; + case MODE_JUST_RELEASED: { + return String(name)+" "+TTR("just released"); + } break; + } + + return String(); +} + + +String VisualScriptInputAction::get_category() const { + + return "data"; +} + + +void VisualScriptInputAction::set_action_name(const StringName& p_name) { + + if (name==p_name) + return; + + name=p_name; + ports_changed_notify(); + +} + +StringName VisualScriptInputAction::get_action_name() const { + + return name; +} + +void VisualScriptInputAction::set_action_mode(Mode p_mode) { + + if (mode==p_mode) + return; + + mode=p_mode; + ports_changed_notify(); + +} +VisualScriptInputAction::Mode VisualScriptInputAction::get_action_mode() const { + + return mode; +} + + +class VisualScriptNodeInstanceInputAction : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + StringName action; + VisualScriptInputAction::Mode mode; + + + virtual int get_working_memory_size() const { return 1; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + switch(mode) { + case VisualScriptInputAction::MODE_PRESSED: { + *p_outputs[0]=Input::get_singleton()->is_action_pressed(action); + } break; + case VisualScriptInputAction::MODE_RELEASED: { + *p_outputs[0]=!Input::get_singleton()->is_action_pressed(action); + } break; + case VisualScriptInputAction::MODE_JUST_PRESSED: { + *p_outputs[0]=Input::get_singleton()->is_action_just_pressed(action); + } break; + case VisualScriptInputAction:: MODE_JUST_RELEASED: { + *p_outputs[0]=Input::get_singleton()->is_action_just_released(action); + } break; + + } + + + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptInputAction::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceInputAction * instance = memnew(VisualScriptNodeInstanceInputAction ); + instance->instance=p_instance; + instance->action=name; + instance->mode=mode; + + return instance; +} + +void VisualScriptInputAction::_validate_property(PropertyInfo& property) const { + + + if (property.name=="action") { + + property.hint=PROPERTY_HINT_ENUM; + String actions; + + List<PropertyInfo> pinfo; + Globals::get_singleton()->get_property_list(&pinfo); + Vector<String> al; + + for(List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { + const PropertyInfo &pi=E->get(); + + if (!pi.name.begins_with("input/")) + continue; + + String name = pi.name.substr(pi.name.find("/")+1,pi.name.length()); + + + al.push_back(name); + } + + al.sort();; + + for(int i=0;i<al.size();i++) { + if (actions!=String()) + actions+=","; + actions+=al[i]; + } + + property.hint_string=actions; + } +} + + +void VisualScriptInputAction::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_action_name","name"),&VisualScriptInputAction::set_action_name); + ObjectTypeDB::bind_method(_MD("get_action_name"),&VisualScriptInputAction::get_action_name); + + ObjectTypeDB::bind_method(_MD("set_action_mode","mode"),&VisualScriptInputAction::set_action_mode); + ObjectTypeDB::bind_method(_MD("get_action_mode"),&VisualScriptInputAction::get_action_mode); + + ADD_PROPERTY( PropertyInfo(Variant::STRING,"action"),_SCS("set_action_name"),_SCS("get_action_name")); + ADD_PROPERTY( PropertyInfo(Variant::INT,"mode",PROPERTY_HINT_ENUM,"Pressed,Released,JustPressed,JustReleased"),_SCS("set_action_mode"),_SCS("get_action_mode")); + +} + +VisualScriptInputAction::VisualScriptInputAction() { + + name=""; + mode=MODE_PRESSED; + +} + +////////////////////////////////////////// +////////////////Constructor/////////// +////////////////////////////////////////// + +int VisualScriptDeconstruct::get_output_sequence_port_count() const { + + return 0; +} + +bool VisualScriptDeconstruct::has_input_sequence_port() const{ + + return false; +} + +int VisualScriptDeconstruct::get_input_value_port_count() const{ + return 1; +} +int VisualScriptDeconstruct::get_output_value_port_count() const{ + + return elements.size(); +} + +String VisualScriptDeconstruct::get_output_sequence_port_text(int p_port) const { + + return ""; +} + +PropertyInfo VisualScriptDeconstruct::get_input_value_port_info(int p_idx) const{ + + return PropertyInfo(type,"value"); +} + +PropertyInfo VisualScriptDeconstruct::get_output_value_port_info(int p_idx) const{ + + return PropertyInfo(elements[p_idx].type,elements[p_idx].name); +} + + +String VisualScriptDeconstruct::get_caption() const { + + return "Deconstruct"; +} + + +String VisualScriptDeconstruct::get_text() const { + + return "from "+Variant::get_type_name(type)+":"; +} + + +String VisualScriptDeconstruct::get_category() const { + + return "functions"; +} + +void VisualScriptDeconstruct::_update_elements() { + + elements.clear();; + Variant v; + if (type==Variant::INPUT_EVENT) { + InputEvent ie; + ie.type=input_type; + v=ie; + } else { + Variant::CallError ce; + v = Variant::construct(type,NULL,0,ce); + } + + List<PropertyInfo> pinfo; + v.get_property_list(&pinfo); + + for (List<PropertyInfo>::Element *E=pinfo.front();E;E=E->next()) { + + Element e; + e.name=E->get().name; + e.type=E->get().type; + elements.push_back(e); + } +} + +void VisualScriptDeconstruct::set_deconstruct_type(Variant::Type p_type) { + + if (type==p_type) + return; + + type=p_type; + _update_elements(); + ports_changed_notify(); + _change_notify(); //to make input appear/disappear +} + +Variant::Type VisualScriptDeconstruct::get_deconstruct_type() const { + + return type; +} + +void VisualScriptDeconstruct::set_deconstruct_input_type(InputEvent::Type p_input_type) { + + if (input_type==p_input_type) + return; + + input_type=p_input_type; + _update_elements(); + ports_changed_notify(); +} + +InputEvent::Type VisualScriptDeconstruct::get_deconstruct_input_type() const { + + return input_type; +} + +void VisualScriptDeconstruct::_set_elem_cache(const Array& p_elements) { + + ERR_FAIL_COND(p_elements.size()%2==1); + elements.resize(p_elements.size()/2); + for(int i=0;i<elements.size();i++) { + elements[i].name=p_elements[i*2+0]; + elements[i].type=Variant::Type(int(p_elements[i*2+1])); + } +} + +Array VisualScriptDeconstruct::_get_elem_cache() const { + + Array ret; + for(int i=0;i<elements.size();i++) { + ret.push_back(elements[i].name); + ret.push_back(elements[i].type); + } + return ret; +} + +class VisualScriptNodeInstanceDeconstruct : public VisualScriptNodeInstance { +public: + + VisualScriptInstance* instance; + Vector<StringName> outputs; + + //virtual int get_working_memory_size() const { return 0; } + + virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) { + + Variant in=*p_inputs[0]; + + for(int i=0;i<outputs.size();i++) { + bool valid; + *p_outputs[i]=in.get(outputs[i],&valid); + if (!valid) { + r_error_str="Can't obtain element '"+String(outputs[i])+"' from "+Variant::get_type_name(in.get_type()); + r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; + return 0; + } + + } + + return 0; + } + + +}; + +VisualScriptNodeInstance* VisualScriptDeconstruct::instance(VisualScriptInstance* p_instance) { + + VisualScriptNodeInstanceDeconstruct * instance = memnew(VisualScriptNodeInstanceDeconstruct ); + instance->instance=p_instance; + instance->outputs.resize(elements.size()); + for(int i=0;i<elements.size();i++) { + instance->outputs[i]=elements[i].name; + } + + return instance; +} + + + +void VisualScriptDeconstruct::_validate_property(PropertyInfo& property) const { + + if (property.name=="input_type") { + if (type!=Variant::INPUT_EVENT) { + property.usage=0; + } + } +} + + +void VisualScriptDeconstruct::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_deconstruct_type","type"),&VisualScriptDeconstruct::set_deconstruct_type); + ObjectTypeDB::bind_method(_MD("get_deconstruct_type"),&VisualScriptDeconstruct::get_deconstruct_type); + + ObjectTypeDB::bind_method(_MD("set_deconstruct_input_type","input_type"),&VisualScriptDeconstruct::set_deconstruct_input_type); + ObjectTypeDB::bind_method(_MD("get_deconstruct_input_type"),&VisualScriptDeconstruct::get_deconstruct_input_type); + + ObjectTypeDB::bind_method(_MD("_set_elem_cache","_cache"),&VisualScriptDeconstruct::_set_elem_cache); + ObjectTypeDB::bind_method(_MD("_get_elem_cache"),&VisualScriptDeconstruct::_get_elem_cache); + + String argt="Any"; + for(int i=1;i<Variant::VARIANT_MAX;i++) { + argt+=","+Variant::get_type_name(Variant::Type(i)); + } + + String iet="None,Key,MouseMotion,MouseButton,JoystickMotion,JoystickButton,ScreenTouch,ScreenDrag,Action"; + + ADD_PROPERTY( PropertyInfo(Variant::INT,"type",PROPERTY_HINT_ENUM,argt),_SCS("set_deconstruct_type"),_SCS("get_deconstruct_type")); + ADD_PROPERTY( PropertyInfo(Variant::INT,"input_type",PROPERTY_HINT_ENUM,iet),_SCS("set_deconstruct_input_type"),_SCS("get_deconstruct_input_type")); + ADD_PROPERTY( PropertyInfo(Variant::ARRAY,"elem_cache",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR),_SCS("_set_elem_cache"),_SCS("_get_elem_cache")); + +} + +VisualScriptDeconstruct::VisualScriptDeconstruct() { + + type=Variant::NIL; + input_type=InputEvent::NONE; + +} + void register_visual_script_nodes() { - VisualScriptLanguage::singleton->add_register_func("data/set_variable",create_node_generic<VisualScriptVariableGet>); - VisualScriptLanguage::singleton->add_register_func("data/get_variable",create_node_generic<VisualScriptVariableSet>); - VisualScriptLanguage::singleton->add_register_func("data/constant",create_node_generic<VisualScriptConstant>); - VisualScriptLanguage::singleton->add_register_func("data/global_constant",create_node_generic<VisualScriptGlobalConstant>); - VisualScriptLanguage::singleton->add_register_func("data/math_constant",create_node_generic<VisualScriptMathConstant>); + VisualScriptLanguage::singleton->add_register_func("data/set_variable",create_node_generic<VisualScriptVariableSet>); + VisualScriptLanguage::singleton->add_register_func("data/get_variable",create_node_generic<VisualScriptVariableGet>); VisualScriptLanguage::singleton->add_register_func("data/engine_singleton",create_node_generic<VisualScriptEngineSingleton>); VisualScriptLanguage::singleton->add_register_func("data/scene_node",create_node_generic<VisualScriptSceneNode>); VisualScriptLanguage::singleton->add_register_func("data/scene_tree",create_node_generic<VisualScriptSceneTree>); VisualScriptLanguage::singleton->add_register_func("data/resource_path",create_node_generic<VisualScriptResourcePath>); VisualScriptLanguage::singleton->add_register_func("data/self",create_node_generic<VisualScriptSelf>); + VisualScriptLanguage::singleton->add_register_func("data/comment",create_node_generic<VisualScriptComment>); + VisualScriptLanguage::singleton->add_register_func("data/get_local_variable",create_node_generic<VisualScriptLocalVar>); + VisualScriptLanguage::singleton->add_register_func("data/set_local_variable",create_node_generic<VisualScriptLocalVarSet>); + VisualScriptLanguage::singleton->add_register_func("data/preload",create_node_generic<VisualScriptPreload>); + VisualScriptLanguage::singleton->add_register_func("data/action",create_node_generic<VisualScriptInputAction>); + + VisualScriptLanguage::singleton->add_register_func("constants/constant",create_node_generic<VisualScriptConstant>); + VisualScriptLanguage::singleton->add_register_func("constants/math_constant",create_node_generic<VisualScriptMathConstant>); + VisualScriptLanguage::singleton->add_register_func("constants/class_constant",create_node_generic<VisualScriptClassConstant>); + VisualScriptLanguage::singleton->add_register_func("constants/global_constant",create_node_generic<VisualScriptGlobalConstant>); + VisualScriptLanguage::singleton->add_register_func("constants/basic_type_constant",create_node_generic<VisualScriptBasicTypeConstant>); + VisualScriptLanguage::singleton->add_register_func("custom/custom_node",create_node_generic<VisualScriptCustomNode>); VisualScriptLanguage::singleton->add_register_func("custom/sub_call",create_node_generic<VisualScriptSubCall>); - VisualScriptLanguage::singleton->add_register_func("index/get_index",create_node_generic<VisualScriptIndexGet>); VisualScriptLanguage::singleton->add_register_func("index/set_index",create_node_generic<VisualScriptIndexSet>); @@ -2481,5 +3916,43 @@ void register_visual_script_nodes() { VisualScriptLanguage::singleton->add_register_func("operators/logic/not",create_op_node<Variant::OP_NOT>); VisualScriptLanguage::singleton->add_register_func("operators/logic/in",create_op_node<Variant::OP_IN>); + VisualScriptLanguage::singleton->add_register_func("functions/deconstruct",create_node_generic<VisualScriptDeconstruct>); + for(int i=1;i<Variant::VARIANT_MAX;i++) { + + List<MethodInfo> constructors; + Variant::get_constructor_list(Variant::Type(i),&constructors); + + for(List<MethodInfo>::Element *E=constructors.front();E;E=E->next()) { + + if (E->get().arguments.size()>0) { + + + String name = "functions/constructors/"+Variant::get_type_name(Variant::Type(i))+" ( "; + for(int j=0;j<E->get().arguments.size();j++) { + if (j>0) + name+=", "; + if (E->get().arguments.size()==1) + name+=Variant::get_type_name(E->get().arguments[j].type); + else + name+=E->get().arguments[j].name; + } + name+=") "; + + VisualScriptLanguage::singleton->add_register_func(name,create_constructor_node); + Pair<Variant::Type,MethodInfo> pair; + pair.first=Variant::Type(i); + pair.second=E->get(); + constructor_map[name]=pair; + } + } + } +} + + + +void unregister_visual_script_nodes() { + + constructor_map.clear(); } + diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h index 50f61ecfcc..94eeadca57 100644 --- a/modules/visual_script/visual_script_nodes.h +++ b/modules/visual_script/visual_script_nodes.h @@ -17,6 +17,7 @@ class VisualScriptFunction : public VisualScriptNode { bool stack_less; int stack_size; + ScriptInstance::RPCMode rpc_mode; protected: @@ -60,6 +61,9 @@ public: void set_stack_size(int p_size); int get_stack_size() const; + void set_rpc_mode(ScriptInstance::RPCMode p_mode); + ScriptInstance::RPCMode get_rpc_mode() const; + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptFunction(); @@ -71,6 +75,7 @@ class VisualScriptOperator : public VisualScriptNode { OBJ_TYPE(VisualScriptOperator,VisualScriptNode) + Variant::Type typed; Variant::Operator op; protected: @@ -98,6 +103,9 @@ public: void set_operator(Variant::Operator p_op); Variant::Operator get_operator() const; + void set_typed(Variant::Type p_op); + Variant::Type get_typed() const; + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); VisualScriptOperator(); @@ -211,7 +219,7 @@ public: virtual String get_caption() const; virtual String get_text() const; - virtual String get_category() const { return "data"; } + virtual String get_category() const { return "constants"; } void set_constant_type(Variant::Type p_type); Variant::Type get_constant_type() const; @@ -225,6 +233,45 @@ public: }; + +class VisualScriptPreload : public VisualScriptNode { + + OBJ_TYPE(VisualScriptPreload,VisualScriptNode) + + + Ref<Resource> preload; +protected: + + static void _bind_methods(); + +public: + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const { return "data"; } + + void set_preload(const Ref<Resource>& p_value); + Ref<Resource> get_preload() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptPreload(); +}; + class VisualScriptIndexGet : public VisualScriptNode { OBJ_TYPE(VisualScriptIndexGet,VisualScriptNode) @@ -313,7 +360,7 @@ public: virtual String get_caption() const; virtual String get_text() const; - virtual String get_category() const { return "data"; } + virtual String get_category() const { return "constants"; } void set_global_constant(int p_which); int get_global_constant(); @@ -324,6 +371,89 @@ public: }; +class VisualScriptClassConstant : public VisualScriptNode { + + OBJ_TYPE(VisualScriptClassConstant,VisualScriptNode) + + StringName base_type; + StringName name; +protected: + static void _bind_methods(); + virtual void _validate_property(PropertyInfo& property) const; + +public: + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const { return "constants"; } + + void set_class_constant(const StringName& p_which); + StringName get_class_constant(); + + void set_base_type(const StringName& p_which); + StringName get_base_type(); + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptClassConstant(); +}; + +class VisualScriptBasicTypeConstant : public VisualScriptNode { + + OBJ_TYPE(VisualScriptBasicTypeConstant,VisualScriptNode) + + Variant::Type type; + StringName name; +protected: + static void _bind_methods(); + virtual void _validate_property(PropertyInfo& property) const; + +public: + + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const { return "constants"; } + + void set_basic_type_constant(const StringName& p_which); + StringName get_basic_type_constant() const; + + void set_basic_type(Variant::Type p_which); + Variant::Type get_basic_type() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptBasicTypeConstant(); +}; + + class VisualScriptMathConstant : public VisualScriptNode { @@ -364,7 +494,7 @@ public: virtual String get_caption() const; virtual String get_text() const; - virtual String get_category() const { return "data"; } + virtual String get_category() const { return "constants"; } void set_math_constant(MathConstant p_which); MathConstant get_math_constant(); @@ -408,6 +538,9 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + + VisualScriptEngineSingleton(); }; @@ -447,6 +580,8 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + VisualScriptSceneNode(); }; @@ -483,6 +618,8 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + VisualScriptSceneTree(); }; @@ -556,6 +693,8 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + VisualScriptSelf(); }; @@ -618,7 +757,6 @@ class VisualScriptSubCall: public VisualScriptNode { protected: - virtual bool _use_builtin_script() const { return true; } static void _bind_methods(); public: @@ -645,7 +783,286 @@ public: VisualScriptSubCall(); }; +class VisualScriptComment: public VisualScriptNode { + + OBJ_TYPE(VisualScriptComment,VisualScriptNode) + + + String title; + String description; + Size2 size; +protected: + + static void _bind_methods(); +public: + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + void set_title(const String& p_title); + String get_title() const; + + void set_description(const String& p_description); + String get_description() const; + + void set_size(const Size2& p_size); + Size2 get_size() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptComment(); +}; + +class VisualScriptConstructor: public VisualScriptNode { + + OBJ_TYPE(VisualScriptConstructor,VisualScriptNode) + + + Variant::Type type; + MethodInfo constructor; + +protected: + + + static void _bind_methods(); +public: + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + void set_constructor_type(Variant::Type p_type); + Variant::Type get_constructor_type() const; + + void set_constructor(const Dictionary& p_info); + Dictionary get_constructor() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptConstructor(); +}; + + + + +class VisualScriptLocalVar: public VisualScriptNode { + + OBJ_TYPE(VisualScriptLocalVar,VisualScriptNode) + + StringName name; + Variant::Type type; + +protected: + + static void _bind_methods(); +public: + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + void set_var_name(const StringName& p_name); + StringName get_var_name() const; + + void set_var_type(Variant::Type p_type); + Variant::Type get_var_type() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptLocalVar(); +}; + +class VisualScriptLocalVarSet: public VisualScriptNode { + + OBJ_TYPE(VisualScriptLocalVarSet,VisualScriptNode) + + StringName name; + Variant::Type type; + +protected: + + static void _bind_methods(); +public: + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + void set_var_name(const StringName& p_name); + StringName get_var_name() const; + + void set_var_type(Variant::Type p_type); + Variant::Type get_var_type() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptLocalVarSet(); +}; + + + +class VisualScriptInputAction: public VisualScriptNode { + + OBJ_TYPE(VisualScriptInputAction,VisualScriptNode) +public: + enum Mode { + MODE_PRESSED, + MODE_RELEASED, + MODE_JUST_PRESSED, + MODE_JUST_RELEASED, + }; + + StringName name; + Mode mode; + +protected: + + virtual void _validate_property(PropertyInfo& property) const; + + static void _bind_methods(); +public: + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + void set_action_name(const StringName& p_name); + StringName get_action_name() const; + + void set_action_mode(Mode p_mode); + Mode get_action_mode() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptInputAction(); +}; + +VARIANT_ENUM_CAST( VisualScriptInputAction::Mode ) + +class VisualScriptDeconstruct: public VisualScriptNode { + + OBJ_TYPE(VisualScriptDeconstruct,VisualScriptNode) + + + struct Element { + StringName name; + Variant::Type type; + }; + + + Vector<Element> elements; + + void _update_elements(); + Variant::Type type; + InputEvent::Type input_type; + + void _set_elem_cache(const Array& p_elements); + Array _get_elem_cache() const; + + virtual void _validate_property(PropertyInfo& property) const; + +protected: + + + static void _bind_methods(); +public: + virtual int get_output_sequence_port_count() const; + virtual bool has_input_sequence_port() const; + + + virtual String get_output_sequence_port_text(int p_port) const; + + + virtual int get_input_value_port_count() const; + virtual int get_output_value_port_count() const; + + + virtual PropertyInfo get_input_value_port_info(int p_idx) const; + virtual PropertyInfo get_output_value_port_info(int p_idx) const; + + virtual String get_caption() const; + virtual String get_text() const; + virtual String get_category() const; + + void set_deconstruct_type(Variant::Type p_type); + Variant::Type get_deconstruct_type() const; + + void set_deconstruct_input_type(InputEvent::Type p_input_type); + InputEvent::Type get_deconstruct_input_type() const; + + virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + + VisualScriptDeconstruct(); +}; + void register_visual_script_nodes(); +void unregister_visual_script_nodes(); #endif // VISUAL_SCRIPT_NODES_H diff --git a/modules/visual_script/visual_script_yield_nodes.cpp b/modules/visual_script/visual_script_yield_nodes.cpp index a6f84a97d9..221c46b6fd 100644 --- a/modules/visual_script/visual_script_yield_nodes.cpp +++ b/modules/visual_script/visual_script_yield_nodes.cpp @@ -45,12 +45,13 @@ PropertyInfo VisualScriptYield::get_output_value_port_info(int p_idx) const{ String VisualScriptYield::get_caption() const { - return "Wait"; + return yield_mode==YIELD_RETURN?"Yield":"Wait"; } String VisualScriptYield::get_text() const { switch (yield_mode) { + case YIELD_RETURN: return ""; break; case YIELD_FRAME: return "Next Frame"; break; case YIELD_FIXED_FRAME: return "Next Fixed Frame"; break; case YIELD_WAIT: return rtos(wait_time)+" sec(s)"; break; @@ -88,8 +89,10 @@ public: Ref<VisualScriptFunctionState> state; state.instance(); + int ret = STEP_YIELD_BIT; switch(mode) { + case VisualScriptYield::YIELD_RETURN: ret=STEP_EXIT_FUNCTION_BIT; break; //return the yield case VisualScriptYield::YIELD_FRAME: state->connect_to_signal(tree,"idle_frame",Array()); break; case VisualScriptYield::YIELD_FIXED_FRAME: state->connect_to_signal(tree,"fixed_frame",Array()); break; case VisualScriptYield::YIELD_WAIT: state->connect_to_signal(tree->create_timer(wait_time).ptr(),"timeout",Array()); break; @@ -98,7 +101,7 @@ public: *p_working_mem=state; - return STEP_YIELD_BIT; + return ret; } } @@ -487,7 +490,7 @@ void VisualScriptYieldSignal::_bind_methods() { bt+=Variant::get_type_name(Variant::Type(i)); } - ADD_PROPERTY(PropertyInfo(Variant::INT,"signal/call_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance",PROPERTY_USAGE_NOEDITOR),_SCS("set_call_mode"),_SCS("get_call_mode")); + ADD_PROPERTY(PropertyInfo(Variant::INT,"signal/call_mode",PROPERTY_HINT_ENUM,"Self,Node Path,Instance"),_SCS("set_call_mode"),_SCS("get_call_mode")); ADD_PROPERTY(PropertyInfo(Variant::STRING,"signal/base_type",PROPERTY_HINT_TYPE_STRING,"Object"),_SCS("set_base_type"),_SCS("get_base_type")); ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH,"signal/node_path",PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE),_SCS("set_base_path"),_SCS("get_base_path")); ADD_PROPERTY(PropertyInfo(Variant::STRING,"signal/signal"),_SCS("set_signal"),_SCS("get_signal")); @@ -595,7 +598,7 @@ VisualScriptNodeInstance* VisualScriptYieldSignal::instance(VisualScriptInstance } VisualScriptYieldSignal::VisualScriptYieldSignal() { - call_mode=CALL_MODE_INSTANCE; + call_mode=CALL_MODE_SELF; base_type="Object"; } @@ -615,8 +618,8 @@ void register_visual_script_yield_nodes() { VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_fixed_frame",create_yield_node<VisualScriptYield::YIELD_FIXED_FRAME>); VisualScriptLanguage::singleton->add_register_func("functions/wait/wait_time",create_yield_node<VisualScriptYield::YIELD_WAIT>); - VisualScriptLanguage::singleton->add_register_func("functions/yield/instance_signal",create_yield_signal_node<VisualScriptYieldSignal::CALL_MODE_INSTANCE>); - VisualScriptLanguage::singleton->add_register_func("functions/yield/self_signal",create_yield_signal_node<VisualScriptYieldSignal::CALL_MODE_SELF>); - VisualScriptLanguage::singleton->add_register_func("functions/yield/node_signal",create_yield_signal_node<VisualScriptYieldSignal::CALL_MODE_NODE_PATH>); + + VisualScriptLanguage::singleton->add_register_func("functions/yield",create_yield_node<VisualScriptYield::YIELD_RETURN>); + VisualScriptLanguage::singleton->add_register_func("functions/yield_signal",create_node_generic<VisualScriptYieldSignal>); } diff --git a/modules/visual_script/visual_script_yield_nodes.h b/modules/visual_script/visual_script_yield_nodes.h index a7e200305d..ae7f8c15c1 100644 --- a/modules/visual_script/visual_script_yield_nodes.h +++ b/modules/visual_script/visual_script_yield_nodes.h @@ -9,6 +9,7 @@ class VisualScriptYield : public VisualScriptNode { public: enum YieldMode { + YIELD_RETURN, YIELD_FRAME, YIELD_FIXED_FRAME, YIELD_WAIT diff --git a/platform/android/build.gradle.template b/platform/android/build.gradle.template index 24951b921b..873eef0566 100644 --- a/platform/android/build.gradle.template +++ b/platform/android/build.gradle.template @@ -67,7 +67,6 @@ android { $$GRADLE_ASSET_DIRS$$ ] jniLibs.srcDirs = [ - 'libs' $$GRADLE_JNI_DIRS$$ ] } diff --git a/platform/javascript/SCsub b/platform/javascript/SCsub index cd96cf4f31..fc70d45a04 100644 --- a/platform/javascript/SCsub +++ b/platform/javascript/SCsub @@ -4,7 +4,8 @@ javascript_files = [ "os_javascript.cpp", "audio_driver_javascript.cpp", "javascript_main.cpp", - "audio_server_javascript.cpp" + "audio_server_javascript.cpp", + "javascript_eval.cpp" ] #obj = env.SharedObject('godot_javascript.cpp') diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py index d76a20bea7..aeff5a1a34 100644 --- a/platform/javascript/detect.py +++ b/platform/javascript/detect.py @@ -18,7 +18,8 @@ def can_build(): def get_opts(): return [ - ['compress','Compress JS Executable','no'] + ['compress','Compress JS Executable','no'], + ['javascript_eval','Enable JavaScript eval interface','yes'] ] def get_flags(): @@ -89,6 +90,10 @@ def configure(env): env.Append(CPPFLAGS=['-s','ASM_JS=1']) env.Append(CPPFLAGS=['-s','FULL_ES2=1']) # env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DMPC_FIXED_POINT']) + + if env['javascript_eval'] == 'yes': + env.Append(CPPFLAGS=['-DJAVASCRIPT_EVAL_ENABLED']) + if (env["compress"]=="yes"): lzma_binpath = em_path+"/third_party/lzma.js/lzma-native" lzma_decoder = em_path+"/third_party/lzma.js/lzma-decoder.js" diff --git a/platform/javascript/javascript_eval.cpp b/platform/javascript/javascript_eval.cpp new file mode 100644 index 0000000000..e642300bda --- /dev/null +++ b/platform/javascript/javascript_eval.cpp @@ -0,0 +1,169 @@ +/*************************************************************************/ +/* javascript_eval.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ +#ifdef JAVASCRIPT_EVAL_ENABLED + +#include "javascript_eval.h" +#include "emscripten.h" + +JavaScript *JavaScript::singleton=NULL; + +JavaScript *JavaScript::get_singleton() { + + return singleton; +} + +Variant JavaScript::eval(const String& p_code, bool p_use_global_exec_context) { + + union { int i; double d; char* s; } js_data[4]; + Variant::Type return_type = static_cast<Variant::Type>(EM_ASM_INT({ + + var eval_ret; + try { + if ($3) { // p_use_global_exec_context + // indirect eval call grants global execution context + var global_eval = eval; + eval_ret = global_eval(UTF8ToString($2)); + } + else { + eval_ret = eval(UTF8ToString($2)); + } + } catch (e) { + Module.printErr(e); + eval_ret = null; + } + + switch (typeof eval_ret) { + + case 'boolean': + // bitwise op yields 32-bit int + setValue($0, eval_ret|0, 'i32'); + return 1; // BOOL + + case 'number': + if ((eval_ret|0)===eval_ret) { + setValue($0, eval_ret|0, 'i32'); + return 2; // INT + } + setValue($0, eval_ret, 'double'); + return 3; // REAL + + case 'string': + var array_len = lengthBytesUTF8(eval_ret)+1; + var array_ptr = _malloc(array_len); + try { + if (array_ptr===0) { + throw new Error('String allocation failed (probably out of memory)'); + } + setValue($0, array_ptr|0 , '*'); + stringToUTF8(eval_ret, array_ptr, array_len); + return 4; // STRING + } catch (e) { + if (array_ptr!==0) { + _free(array_ptr) + } + Module.printErr(e); + // fall through + } + break; + + case 'object': + if (eval_ret === null) { + break; + } + + else if (typeof eval_ret.x==='number' && typeof eval_ret.y==='number') { + setValue($0, eval_ret.x, 'double'); + setValue($0+$1, eval_ret.y, 'double'); + if (typeof eval_ret.z==='number') { + setValue($0+$1*2, eval_ret.z, 'double'); + return 7; // VECTOR3 + } + else if (typeof eval_ret.width==='number' && typeof eval_ret.height==='number') { + setValue($0+$1*2, eval_ret.width, 'double'); + setValue($0+$1*3, eval_ret.height, 'double'); + return 6; // RECT2 + } + return 5; // VECTOR2 + } + + else if (typeof eval_ret.r==='number' && typeof eval_ret.g==='number' && typeof eval_ret.b==='number') { + // assume 8-bit rgb components since we're on the web + setValue($0, eval_ret.r, 'double'); + setValue($0+$1, eval_ret.g, 'double'); + setValue($0+$1*2, eval_ret.b, 'double'); + setValue($0+$1*3, typeof eval_ret.a==='number' ? eval_ret.a : 1, 'double'); + return 14; // COLOR + } + break; + } + return 0; // NIL + + }, js_data, sizeof *js_data, p_code.utf8().get_data(), p_use_global_exec_context)); + + switch(return_type) { + case Variant::BOOL: + return !!js_data->i; + case Variant::INT: + return js_data->i; + case Variant::REAL: + return js_data->d; + case Variant::STRING: + { + String str = String::utf8(js_data->s); + EM_ASM_({ _free($0); }, js_data->s); + return str; + } + case Variant::VECTOR2: + return Vector2(js_data[0].d, js_data[1].d); + case Variant::VECTOR3: + return Vector3(js_data[0].d, js_data[1].d, js_data[2].d); + case Variant::RECT2: + return Rect2(js_data[0].d, js_data[1].d, js_data[2].d, js_data[3].d); + case Variant::COLOR: + return Color(js_data[0].d/255., js_data[1].d/255., js_data[2].d/255., js_data[3].d); + } + return Variant(); +} + +void JavaScript::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("eval", "code", "use_global_execution_context"), &JavaScript::eval, false); +} + +JavaScript::JavaScript() { + + ERR_FAIL_COND(singleton != NULL); + singleton = this; +} + +JavaScript::~JavaScript() { + +} + +#endif // JAVASCRIPT_EVAL_ENABLED diff --git a/tools/ios_xcode_template/godot_ios/main.m b/platform/javascript/javascript_eval.h index 3e4ea5e129..e5f6268076 100644 --- a/tools/ios_xcode_template/godot_ios/main.m +++ b/platform/javascript/javascript_eval.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* main.m */ +/* javascript_eval.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -26,14 +26,30 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ +#ifdef JAVASCRIPT_EVAL_ENABLED -#import <UIKit/UIKit.h> +#ifndef JAVASCRIPT_EVAL_H +#define JAVASCRIPT_EVAL_H -#import "AppDelegate.h" +#include "object.h" -int main(int argc, char * argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} +class JavaScript : public Object { +private: + OBJ_TYPE( JavaScript, Object ); + + static JavaScript *singleton; + + +protected: + static void _bind_methods(); + +public: + Variant eval(const String& p_code, bool p_use_global_exec_context = false); + + static JavaScript *get_singleton(); + JavaScript(); + ~JavaScript(); +}; + +#endif // JAVASCRIPT_EVAL_H +#endif // JAVASCRIPT_EVAL_ENABLED diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 1defcb7cb2..e802a7e9cb 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -230,6 +230,11 @@ void OS_JavaScript::initialize(const VideoMode& p_desired,int p_video_driver,int if (result!=EMSCRIPTEN_RESULT_SUCCESS) { ERR_PRINTS( "Error while setting Emscripten gamepaddisconnected callback: Code " + itos(result) ); } + +#ifdef JAVASCRIPT_EVAL_ENABLED + javascript_eval = memnew(JavaScript); + Globals::get_singleton()->add_singleton(Globals::Singleton("JavaScript", javascript_eval)); +#endif } void OS_JavaScript::set_main_loop( MainLoop * p_main_loop ) { diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h index 16e4781d15..5b7904805b 100644 --- a/platform/javascript/os_javascript.h +++ b/platform/javascript/os_javascript.h @@ -42,6 +42,7 @@ #include "audio_driver_javascript.h" #include "main/input_default.h" #include "emscripten/html5.h" +#include "javascript_eval.h" typedef void (*GFXInitFunc)(void *ud,bool gl2,int w, int h, bool fs); typedef int (*OpenURIFunc)(const String&); @@ -88,6 +89,10 @@ private: GetDataDirFunc get_data_dir_func; GetLocaleFunc get_locale_func; +#ifdef JAVASCRIPT_EVAL_ENABLED + JavaScript* javascript_eval; +#endif + static void _close_notification_funcs(const String& p_file,int p_flags); void process_joysticks(); diff --git a/platform/osx/SCsub b/platform/osx/SCsub index 3785eb3fb3..4169795519 100644 --- a/platform/osx/SCsub +++ b/platform/osx/SCsub @@ -7,6 +7,7 @@ files = [ 'sem_osx.cpp', # 'context_gl_osx.cpp', 'dir_access_osx.mm', + 'joystick_osx.cpp', ] env.Program('#bin/godot',files) diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 1982beb10e..01ea09fa21 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -92,7 +92,7 @@ def configure(env): env.Append(LIBS=['pthread']) #env.Append(CPPFLAGS=['-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-mmacosx-version-min=10.4']) #env.Append(LINKFLAGS=['-mmacosx-version-min=10.4', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk']) - env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit','-lz']) + env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit','-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback']) if (env["CXX"]=="clang++"): env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) diff --git a/platform/osx/joystick_osx.cpp b/platform/osx/joystick_osx.cpp new file mode 100644 index 0000000000..ffb6ac326b --- /dev/null +++ b/platform/osx/joystick_osx.cpp @@ -0,0 +1,623 @@ +/*************************************************************************/ +/* joystick_osx.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ +#include "joystick_osx.h" +#include <machine/endian.h> + +#define GODOT_JOY_LOOP_RUN_MODE CFSTR("GodotJoystick") + +static JoystickOSX* self = NULL; + +joystick::joystick() { + device_ref = NULL; + ff_device = NULL; + ff_axes = NULL; + ff_directions = NULL; + ffservice = 0; + ff_timestamp = 0; + id = 0; + + ff_constant_force.lMagnitude = 10000; + ff_effect.dwDuration = 0; + ff_effect.dwSamplePeriod = 0; + ff_effect.dwGain = 10000; + ff_effect.dwFlags = FFEFF_OBJECTOFFSETS; + ff_effect.dwTriggerButton = FFEB_NOTRIGGER; + ff_effect.dwStartDelay = 0; + ff_effect.dwTriggerRepeatInterval = 0; + ff_effect.lpEnvelope = NULL; + ff_effect.cbTypeSpecificParams = sizeof(FFCONSTANTFORCE); + ff_effect.lpvTypeSpecificParams = &ff_constant_force; + ff_effect.dwSize = sizeof(ff_effect); +} + +void joystick::free() { + if (device_ref) { + IOHIDDeviceUnscheduleFromRunLoop(device_ref, CFRunLoopGetCurrent(), GODOT_JOY_LOOP_RUN_MODE); + } + if (ff_device) { + FFDeviceReleaseEffect(ff_device, ff_object); + FFReleaseDevice(ff_device); + memfree(ff_axes); + memfree(ff_directions); + } +} + +bool joystick::has_element(IOHIDElementCookie p_cookie, Vector<rec_element> *p_list) const { + for (int i = 0; i < p_list->size(); i++) { + if (p_cookie == p_list->get(i).cookie) { + return true; + } + } + return false; +} + +int joystick::get_hid_element_state(rec_element *p_element) const { + int value = 0; + if (p_element && p_element->ref) { + IOHIDValueRef valueRef; + if (IOHIDDeviceGetValue(device_ref, p_element->ref, &valueRef) == kIOReturnSuccess) { + value = (SInt32) IOHIDValueGetIntegerValue(valueRef); + + /* record min and max for auto calibration */ + if (value < p_element->min) { + p_element->min = value; + } + if (value > p_element->max) { + p_element->max = value; + } + } + } + return value; +} +void joystick::add_hid_element(IOHIDElementRef p_element) { + const CFTypeID elementTypeID = p_element ? CFGetTypeID(p_element) : 0; + + if (p_element && (elementTypeID == IOHIDElementGetTypeID())) { + const IOHIDElementCookie cookie = IOHIDElementGetCookie(p_element); + const uint32_t usagePage = IOHIDElementGetUsagePage(p_element); + const uint32_t usage = IOHIDElementGetUsage(p_element); + Vector<rec_element> *list = NULL; + + switch (IOHIDElementGetType(p_element)) { + case kIOHIDElementTypeInput_Misc: + case kIOHIDElementTypeInput_Button: + case kIOHIDElementTypeInput_Axis: { + switch (usagePage) { + case kHIDPage_GenericDesktop: + switch (usage) { + case kHIDUsage_GD_X: + case kHIDUsage_GD_Y: + case kHIDUsage_GD_Z: + case kHIDUsage_GD_Rx: + case kHIDUsage_GD_Ry: + case kHIDUsage_GD_Rz: + case kHIDUsage_GD_Slider: + case kHIDUsage_GD_Dial: + case kHIDUsage_GD_Wheel: + if (!has_element(cookie, &axis_elements)) { + list = &axis_elements; + } + break; + + case kHIDUsage_GD_Hatswitch: + if (!has_element(cookie, &hat_elements)) { + list = &hat_elements; + } + break; + case kHIDUsage_GD_DPadUp: + case kHIDUsage_GD_DPadDown: + case kHIDUsage_GD_DPadRight: + case kHIDUsage_GD_DPadLeft: + case kHIDUsage_GD_Start: + case kHIDUsage_GD_Select: + if (!has_element(cookie, &button_elements)) { + list = &button_elements; + } + break; + } + break; + + case kHIDPage_Simulation: + switch (usage) { + case kHIDUsage_Sim_Rudder: + case kHIDUsage_Sim_Throttle: + if (!has_element(cookie, &axis_elements)) { + list = &axis_elements; + } + break; + + default: + break; + } + break; + + case kHIDPage_Button: + case kHIDPage_Consumer: + if (!has_element(cookie, &button_elements)) { + list = &button_elements; + } + break; + + default: + break; + } + } + break; + + case kIOHIDElementTypeCollection: { + CFArrayRef array = IOHIDElementGetChildren(p_element); + if (array) { + add_hid_elements(array); + } + } + break; + + default: + break; + } + + if (list) { /* add to list */ + rec_element element; + + element.ref = p_element; + element.usage = usage; + + element.min = (SInt32) IOHIDElementGetLogicalMin(p_element); + element.max = (SInt32) IOHIDElementGetLogicalMax(p_element); + element.cookie = IOHIDElementGetCookie(p_element); + list->push_back(element); + list->sort_custom<rec_element::Comparator>(); + } + } +} + +static void hid_element_added(const void *p_value, void *p_parameter) { + joystick *joy = (joystick*) p_parameter; + joy->add_hid_element((IOHIDElementRef) p_value); +} + +void joystick::add_hid_elements(CFArrayRef p_array) { + CFRange range = { 0, CFArrayGetCount(p_array) }; + CFArrayApplyFunction(p_array, range,hid_element_added,this); +} + +static void joystick_removed_callback(void *ctx, IOReturn result, void *sender) { + int id = (intptr_t) ctx; + self->_device_removed(id); +} + + +static void joystick_added_callback(void *ctx, IOReturn res, void *sender, IOHIDDeviceRef ioHIDDeviceObject) { + self->_device_added(res, ioHIDDeviceObject); +} + +static bool is_joystick(IOHIDDeviceRef p_device_ref) { + CFTypeRef refCF = NULL; + int usage_page = 0; + int usage = 0; + refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDPrimaryUsagePageKey)); + if (refCF) { + CFNumberGetValue((CFNumberRef) refCF, kCFNumberSInt32Type, &usage_page); + } + if (usage_page != kHIDPage_GenericDesktop) { + return false; + } + + refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDPrimaryUsageKey)); + if (refCF) { + CFNumberGetValue((CFNumberRef) refCF, kCFNumberSInt32Type, &usage); + } + if ((usage != kHIDUsage_GD_Joystick && + usage != kHIDUsage_GD_GamePad && + usage != kHIDUsage_GD_MultiAxisController)) { + return false; + } + return true; +} + +void JoystickOSX::_device_added(IOReturn p_res, IOHIDDeviceRef p_device) { + + if (p_res != kIOReturnSuccess || have_device(p_device)) { + return; + } + + joystick new_joystick; + if (is_joystick(p_device)) { + configure_joystick(p_device, &new_joystick); +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 + if (IOHIDDeviceGetService != NULL) { +#endif + const io_service_t ioservice = IOHIDDeviceGetService(p_device); + if ((ioservice) && (FFIsForceFeedback(ioservice) == FF_OK) && new_joystick.config_force_feedback(ioservice)) { + new_joystick.ffservice = ioservice; + } +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060 + } +#endif + device_list.push_back(new_joystick); + } + IOHIDDeviceRegisterRemovalCallback(p_device, joystick_removed_callback, (void*) (intptr_t) new_joystick.id); + IOHIDDeviceScheduleWithRunLoop(p_device, CFRunLoopGetCurrent(), GODOT_JOY_LOOP_RUN_MODE); +} + +void JoystickOSX::_device_removed(int p_id) { + + int device = get_joy_index(p_id); + ERR_FAIL_COND(device == -1); + + input->joy_connection_changed(p_id, false, ""); + device_list[device].free(); + device_list.remove(device); + attached_devices[p_id] = false; +} + +static String _hex_str(uint8_t p_byte) { + + static const char* dict = "0123456789abcdef"; + char ret[3]; + ret[2] = 0; + + ret[0] = dict[p_byte>>4]; + ret[1] = dict[p_byte & 0xF]; + + return ret; +} + +bool JoystickOSX::configure_joystick(IOHIDDeviceRef p_device_ref, joystick* p_joy) { + + CFTypeRef refCF = NULL; + + p_joy->device_ref = p_device_ref; + /* get device name */ + String name; + char c_name[256]; + refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDProductKey)); + if (!refCF) { + refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDManufacturerKey)); + } + if ((!refCF) || (!CFStringGetCString((CFStringRef) refCF, c_name, sizeof (c_name), kCFStringEncodingUTF8))) { + name = "Unidentified Joystick"; + } + name = c_name; + + int id = get_free_joy_id(); + ERR_FAIL_COND_V(id == -1, false); + p_joy->id = id; + int vendor = 0; + refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDVendorIDKey)); + if (refCF) { + CFNumberGetValue((CFNumberRef)refCF, kCFNumberSInt32Type, &vendor); + } + + int product_id = 0; + refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDProductIDKey)); + if (refCF) { + CFNumberGetValue((CFNumberRef)refCF, kCFNumberSInt32Type, &product_id); + } + if (vendor && product_id) { + char uid[128]; + sprintf(uid, "%04x%08x%04x%08x", OSSwapHostToBigInt32(vendor),0, OSSwapHostToBigInt32(product_id), 0); + input->joy_connection_changed(id, true, name, uid); + } + else { + //bluetooth device + String guid = "05000000"; + for (int i = 0; i < 12; i++) { + if (i < name.size()) guid += _hex_str(name[i]); + else guid += "00"; + } + input->joy_connection_changed(id, true, name, guid); + } + + CFArrayRef array = NULL; + array = IOHIDDeviceCopyMatchingElements(p_device_ref, NULL, kIOHIDOptionsTypeNone); + if (array) { + p_joy->add_hid_elements(array); + CFRelease(array); + } + return true; +} + +#define FF_ERR() { if (ret != FF_OK) { FFReleaseDevice(ff_device); return false; } } +bool joystick::config_force_feedback(io_service_t p_service) { + + HRESULT ret = FFCreateDevice(p_service, &ff_device); + ERR_FAIL_COND_V(ret != FF_OK, false); + + ret = FFDeviceSendForceFeedbackCommand(ff_device, FFSFFC_RESET); + FF_ERR(); + + ret = FFDeviceSendForceFeedbackCommand(ff_device, FFSFFC_SETACTUATORSON); + FF_ERR(); + + if (check_ff_features()) { + ret = FFDeviceCreateEffect(ff_device, kFFEffectType_ConstantForce_ID, &ff_effect, &ff_object); + FF_ERR(); + return true; + } + FFReleaseDevice(ff_device); + return false; +} +#undef FF_ERR + +#define TEST_FF(ff) (features.supportedEffects & (ff)) +bool joystick::check_ff_features() { + + FFCAPABILITIES features; + HRESULT ret = FFDeviceGetForceFeedbackCapabilities(ff_device, &features); + if (ret == FF_OK && (features.supportedEffects & FFCAP_ET_CONSTANTFORCE)) { + uint32_t val; + ret = FFDeviceGetForceFeedbackProperty(ff_device, FFPROP_FFGAIN, &val, sizeof(val)); + if (ret != FF_OK) return false; + int num_axes = features.numFfAxes; + ff_axes = (DWORD*) memalloc(sizeof(DWORD) * num_axes); + ff_directions = (LONG*) memalloc(sizeof(LONG) * num_axes); + + for (int i = 0; i < num_axes; i++) { + ff_axes[i] = features.ffAxes[i]; + ff_directions[i] = 0; + } + + ff_effect.cAxes = num_axes; + ff_effect.rgdwAxes = ff_axes; + ff_effect.rglDirection = ff_directions; + return true; + } + return false; +} + +static int process_hat_value(int p_min, int p_max, int p_value) { + int range = (p_max - p_min + 1); + int value = p_value - p_min; + int hat_value = InputDefault::HAT_MASK_CENTER; + if (range == 4) { + value *= 2; + } + + switch (value) { + case 0: + hat_value = InputDefault::HAT_MASK_UP; + break; + case 1: + hat_value = InputDefault::HAT_MASK_UP | InputDefault::HAT_MASK_RIGHT; + break; + case 2: + hat_value = InputDefault::HAT_MASK_RIGHT; + break; + case 3: + hat_value = InputDefault::HAT_MASK_DOWN | InputDefault::HAT_MASK_RIGHT; + break; + case 4: + hat_value = InputDefault::HAT_MASK_DOWN; + break; + case 5: + hat_value = InputDefault::HAT_MASK_DOWN | InputDefault::HAT_MASK_LEFT; + break; + case 6: + hat_value = InputDefault::HAT_MASK_LEFT; + break; + case 7: + hat_value = InputDefault::HAT_MASK_UP | InputDefault::HAT_MASK_LEFT; + break; + default: + hat_value = InputDefault::HAT_MASK_CENTER; + break; + } + return hat_value; +} + +void JoystickOSX::poll_joysticks() const { + while (CFRunLoopRunInMode(GODOT_JOY_LOOP_RUN_MODE,0,TRUE) == kCFRunLoopRunHandledSource) { + /* no-op. Pending callbacks will fire. */ + } +} + +static const InputDefault::JoyAxis axis_correct(int p_value, int p_min, int p_max) { + InputDefault::JoyAxis jx; + if (p_min < 0) { + jx.min = -1; + if (p_value < 0) { + jx.value = (float) -p_value / p_min; + } + else jx.value = (float) p_value / p_max; + } + if (p_min == 0) { + jx.min = 0; + jx.value = 0.0f + (float) p_value / p_max; + } + return jx; +} + +uint32_t JoystickOSX::process_joysticks(uint32_t p_last_id){ + poll_joysticks(); + + for (int i = 0; i < device_list.size(); i++) { + joystick &joy = device_list[i]; + + for (int j = 0; j < joy.axis_elements.size(); j++) { + rec_element &elem = joy.axis_elements[j]; + int value = joy.get_hid_element_state(&elem); + p_last_id = input->joy_axis(p_last_id, joy.id, j, axis_correct(value, elem.min, elem.max)); + } + for (int j = 0; j < joy.button_elements.size(); j++) { + int value = joy.get_hid_element_state(&joy.button_elements[j]); + p_last_id = input->joy_button(p_last_id, joy.id, j, (value>=1)); + } + for (int j = 0; j < joy.hat_elements.size(); j++) { + rec_element &elem = joy.hat_elements[j]; + int value = joy.get_hid_element_state(&elem); + int hat_value = process_hat_value(elem.min, elem.max, value); + p_last_id = input->joy_hat(p_last_id, joy.id, hat_value); + } + + if (joy.ffservice) { + uint64_t timestamp = input->get_joy_vibration_timestamp(joy.id); + if (timestamp > joy.ff_timestamp) { + Vector2 strength = input->get_joy_vibration_strength(joy.id); + float duration = input->get_joy_vibration_duration(joy.id); + if (strength.x == 0 && strength.y == 0) { + joystick_vibration_stop(joy.id, timestamp); + } + else { + float gain = MAX(strength.x, strength.y); + joystick_vibration_start(joy.id, gain, duration, timestamp); + } + } + } + } + return p_last_id; +} + +void JoystickOSX::joystick_vibration_start(int p_id, float p_magnitude, float p_duration, uint64_t p_timestamp) { + joystick *joy = &device_list[get_joy_index(p_id)]; + joy->ff_timestamp = p_timestamp; + joy->ff_effect.dwDuration = p_duration * FF_SECONDS; + joy->ff_effect.dwGain = p_magnitude * FF_FFNOMINALMAX; + FFEffectSetParameters(joy->ff_object, &joy->ff_effect, FFEP_DURATION | FFEP_GAIN); + FFEffectStart(joy->ff_object, 1, 0); +} + +void JoystickOSX::joystick_vibration_stop(int p_id, uint64_t p_timestamp) { + joystick* joy = &device_list[get_joy_index(p_id)]; + joy->ff_timestamp = p_timestamp; + FFEffectStop(joy->ff_object); +} + +int JoystickOSX::get_free_joy_id() { + for (int i = 0; i < JOYSTICKS_MAX; i++) { + if (!attached_devices[i]) { + attached_devices[i] = true; + return i; + } + } + return -1; +} + +int JoystickOSX::get_joy_index(int p_id) const { + for (int i = 0; i < device_list.size(); i++) { + if (device_list[i].id == p_id) return i; + } + return -1; +} + +bool JoystickOSX::have_device(IOHIDDeviceRef p_device) const { + for (int i = 0; i < device_list.size(); i++) { + if (device_list[i].device_ref == p_device) { + return true; + } + } + return false; +} + +static CFDictionaryRef create_match_dictionary(const UInt32 page, const UInt32 usage, int *okay) +{ + CFDictionaryRef retval = NULL; + CFNumberRef pageNumRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page); + CFNumberRef usageNumRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage); + const void *keys[2] = { (void *) CFSTR(kIOHIDDeviceUsagePageKey), (void *) CFSTR(kIOHIDDeviceUsageKey) }; + const void *vals[2] = { (void *) pageNumRef, (void *) usageNumRef }; + + if (pageNumRef && usageNumRef) { + retval = CFDictionaryCreate(kCFAllocatorDefault, keys, vals, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + } + + if (pageNumRef) { + CFRelease(pageNumRef); + } + if (usageNumRef) { + CFRelease(usageNumRef); + } + + if (!retval) { + *okay = 0; + } + + return retval; +} + +void JoystickOSX::config_hid_manager(CFArrayRef p_matching_array) const { + + CFRunLoopRef runloop = CFRunLoopGetCurrent(); + IOReturn ret = IOHIDManagerOpen(hid_manager, kIOHIDOptionsTypeNone); + ERR_FAIL_COND(ret != kIOReturnSuccess); + + IOHIDManagerSetDeviceMatchingMultiple(hid_manager, p_matching_array); + IOHIDManagerRegisterDeviceMatchingCallback(hid_manager, joystick_added_callback, NULL); + IOHIDManagerScheduleWithRunLoop(hid_manager, runloop, GODOT_JOY_LOOP_RUN_MODE); + + while (CFRunLoopRunInMode(GODOT_JOY_LOOP_RUN_MODE,0,TRUE) == kCFRunLoopRunHandledSource) { + /* no-op. Callback fires once per existing device. */ + } +} + +JoystickOSX::JoystickOSX() +{ + self = this; + input = (InputDefault*)Input::get_singleton(); + + for (int i = 0; i < JOYSTICKS_MAX; i++) { + attached_devices[i] = false; + } + + int okay = 1; + const void *vals[] = { + (void *) create_match_dictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick, &okay), + (void *) create_match_dictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad, &okay), + (void *) create_match_dictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_MultiAxisController, &okay), + }; + const size_t n_elements = sizeof(vals)/sizeof(vals[0]); + CFArrayRef array = okay ? CFArrayCreate(kCFAllocatorDefault, vals, n_elements, &kCFTypeArrayCallBacks) : NULL; + + for (int i = 0; i < n_elements; i++) { + if (vals[i]) { + CFRelease((CFTypeRef) vals[i]); + } + } + + if (array) { + hid_manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone); + if (hid_manager != NULL) { + config_hid_manager(array); + } + CFRelease(array); + } +} + +JoystickOSX::~JoystickOSX() { + + for (int i = 0; i < device_list.size(); i++) { + device_list[i].free(); + } + + IOHIDManagerUnscheduleFromRunLoop(hid_manager, CFRunLoopGetCurrent(), GODOT_JOY_LOOP_RUN_MODE); + IOHIDManagerClose(hid_manager, kIOHIDOptionsTypeNone); + CFRelease(hid_manager); + hid_manager = NULL; +} + diff --git a/platform/osx/joystick_osx.h b/platform/osx/joystick_osx.h new file mode 100644 index 0000000000..38a4e3b1d3 --- /dev/null +++ b/platform/osx/joystick_osx.h @@ -0,0 +1,125 @@ +/*************************************************************************/ +/* joystick_osx.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ +#ifndef JOYSTICKOSX_H +#define JOYSTICKOSX_H + +#ifdef MACOS_10_0_4 +#include <IOKit/hidsystem/IOHIDUsageTables.h> +#else +#include <Kernel/IOKit/hidsystem/IOHIDUsageTables.h> +#endif +#include <IOKit/hid/IOHIDLib.h> +#include <ForceFeedback/ForceFeedback.h> +#include <ForceFeedback/ForceFeedbackConstants.h> + +#include "main/input_default.h" + +struct rec_element { + IOHIDElementRef ref; + IOHIDElementCookie cookie; + + uint32_t usage; + + int min; + int max; + + struct Comparator { + bool operator()(const rec_element p_a, const rec_element p_b) const { return p_a.usage < p_b.usage; } + }; +}; + +struct joystick { + IOHIDDeviceRef device_ref; + + Vector<rec_element> axis_elements; + Vector<rec_element> button_elements; + Vector<rec_element> hat_elements; + + int id; + + io_service_t ffservice; /* Interface for force feedback, 0 = no ff */ + FFCONSTANTFORCE ff_constant_force; + FFDeviceObjectReference ff_device; + FFEffectObjectReference ff_object; + uint64_t ff_timestamp; + LONG *ff_directions; + FFEFFECT ff_effect; + DWORD *ff_axes; + + void add_hid_elements(CFArrayRef p_array); + void add_hid_element(IOHIDElementRef p_element); + + bool has_element(IOHIDElementCookie p_cookie, Vector<rec_element> *p_list) const; + bool config_force_feedback(io_service_t p_service); + bool check_ff_features(); + + int get_hid_element_state(rec_element *p_element) const; + + void free(); + joystick(); +}; + +class JoystickOSX { + + enum { + JOYSTICKS_MAX = 16, + }; + +private: + InputDefault *input; + IOHIDManagerRef hid_manager; + + bool attached_devices[JOYSTICKS_MAX]; + Vector<joystick> device_list; + + bool have_device(IOHIDDeviceRef p_device) const; + bool configure_joystick(IOHIDDeviceRef p_device_ref, joystick *p_joy); + + + int get_free_joy_id(); + int get_joy_index(int p_id) const; + + void poll_joysticks() const; + void setup_joystick_objects(); + void config_hid_manager(CFArrayRef p_matching_array) const; + + void joystick_vibration_start(int p_id, float p_magnitude, float p_duration, uint64_t p_timestamp); + void joystick_vibration_stop(int p_id, uint64_t p_timestamp); + +public: + uint32_t process_joysticks(uint32_t p_last_id); + + void _device_added(IOReturn p_res, IOHIDDeviceRef p_device); + void _device_removed(int p_id); + + JoystickOSX(); + ~JoystickOSX(); +}; + +#endif // JOYSTICKOSX_H diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index 8f89695a68..e23ae49a35 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -31,6 +31,7 @@ #include "os/input.h" +#include "joystick_osx.h" #include "drivers/unix/os_unix.h" #include "main/input_default.h" #include "servers/visual_server.h" @@ -76,6 +77,7 @@ public: SpatialSound2DServerSW *spatial_sound_2d_server; InputDefault *input; + JoystickOSX *joystick_osx; /* objc */ @@ -203,6 +205,7 @@ public: virtual void set_window_maximized(bool p_enabled); virtual bool is_window_maximized() const; virtual void request_attention(); + virtual String get_joy_guid(int p_device) const; void run(); diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index b084a08ecc..cc893cc7a0 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1123,6 +1123,7 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi physics_2d_server->init(); input = memnew( InputDefault ); + joystick_osx = memnew( JoystickOSX ); _ensure_data_dir(); @@ -1165,7 +1166,7 @@ void OS_OSX::finalize() { spatial_sound_2d_server->finish(); memdelete(spatial_sound_2d_server); - + memdelete(joystick_osx); memdelete(input); memdelete(sample_manager); @@ -1738,7 +1739,7 @@ void OS_OSX::run() { while (!force_quit) { process_events(); // get rid of pending events -// process_joysticks(); + last_id = joystick_osx->process_joysticks(last_id); if (Main::iteration()==true) break; }; @@ -1773,6 +1774,10 @@ OS::MouseMode OS_OSX::get_mouse_mode() const { return mouse_mode; } +String OS_OSX::get_joy_guid(int p_device) const { + return input->get_joy_guid_remapped(p_device); +} + OS_OSX* OS_OSX::singleton=NULL; OS_OSX::OS_OSX() { diff --git a/platform/windows/detect.py b/platform/windows/detect.py index 320fb9d269..2414cee57e 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -237,8 +237,7 @@ def configure(env): env.Append(CCFLAGS=['/DTYPED_METHOD_BIND']) env.Append(CCFLAGS=['/DGLES2_ENABLED']) - - LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32', 'shell32','advapi32','dinput8','dxguid'] + LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32','Ws2_32', 'shell32','advapi32','dinput8','dxguid'] env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS]) env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"]) @@ -361,7 +360,7 @@ def configure(env): env.Append(CCFLAGS=['-DWINDOWS_ENABLED','-mwindows']) env.Append(CPPFLAGS=['-DRTAUDIO_ENABLED']) env.Append(CCFLAGS=['-DGLES2_ENABLED']) - env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','kernel32', 'oleaut32', 'dinput8', 'dxguid']) + env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','ws2_32','kernel32', 'oleaut32', 'dinput8', 'dxguid']) # if (env["bits"]=="32"): # env.Append(LIBS=['gcc_s']) diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 571277f91e..cebafdabce 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1364,7 +1364,9 @@ void OS_Windows::set_mouse_mode(MouseMode p_mode) { POINT pos = { (int) center.x, (int) center.y }; ClientToScreen(hWnd, &pos); SetCursorPos(pos.x, pos.y); + ShowCursor(false); } else { + ShowCursor(true); ReleaseCapture(); ClipCursor(NULL); } diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 490030398e..9a2d610e78 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -127,10 +127,10 @@ void OS_X11::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi int xrandr_minor = 0; int event_base, error_base; xrandr_ext_ok = XRRQueryExtension(x11_display,&event_base, &error_base); - xrandr_handle = dlopen("libXrandr.so", RTLD_LAZY); - err = dlerror(); + xrandr_handle = dlopen("libXrandr.so.2", RTLD_LAZY); if (!xrandr_handle) { - fprintf(stderr, "could not load libXrandr.so, Error: %s\n", err); + err = dlerror(); + fprintf(stderr, "could not load libXrandr.so.2, Error: %s\n", err); } else { XRRQueryVersion(x11_display, &xrandr_major, &xrandr_minor); diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp index f98a50e3e0..e576aa10e0 100644 --- a/scene/2d/camera_2d.cpp +++ b/scene/2d/camera_2d.cpp @@ -29,6 +29,8 @@ #include "camera_2d.h" #include "scene/scene_string_names.h" #include "servers/visual_server.h" +#include "core/math/math_funcs.h" +#include <editor/editor_node.h> void Camera2D::_update_scroll() { @@ -114,7 +116,25 @@ Matrix32 Camera2D::get_camera_transform() { camera_pos=new_camera_pos; } - + Point2 screen_offset = (anchor_mode==ANCHOR_MODE_DRAG_CENTER ? (screen_size * 0.5 * zoom) : Point2()); + Rect2 screen_rect(-screen_offset+camera_pos,screen_size*zoom); + + if (offset!=Vector2()) + screen_rect.pos+=offset; + + if (limit_smoothing_enabled) { + if (screen_rect.pos.x < limit[MARGIN_LEFT]) + camera_pos.x -= screen_rect.pos.x - limit[MARGIN_LEFT]; + + if (screen_rect.pos.x + screen_rect.size.x > limit[MARGIN_RIGHT]) + camera_pos.x -= screen_rect.pos.x + screen_rect.size.x - limit[MARGIN_RIGHT]; + + if (screen_rect.pos.y + screen_rect.size.y > limit[MARGIN_BOTTOM]) + camera_pos.y -= screen_rect.pos.y + screen_rect.size.y - limit[MARGIN_BOTTOM]; + + if (screen_rect.pos.y < limit[MARGIN_TOP]) + camera_pos.y -= screen_rect.pos.y - limit[MARGIN_TOP]; + } if (smoothing_enabled && !get_tree()->is_editor_hint()) { @@ -144,19 +164,19 @@ Matrix32 Camera2D::get_camera_transform() { } Rect2 screen_rect(-screen_offset+ret_camera_pos,screen_size*zoom); + if (screen_rect.pos.x < limit[MARGIN_LEFT]) + screen_rect.pos.x = limit[MARGIN_LEFT]; + if (screen_rect.pos.x + screen_rect.size.x > limit[MARGIN_RIGHT]) screen_rect.pos.x = limit[MARGIN_RIGHT] - screen_rect.size.x; if (screen_rect.pos.y + screen_rect.size.y > limit[MARGIN_BOTTOM]) screen_rect.pos.y = limit[MARGIN_BOTTOM] - screen_rect.size.y; - - if (screen_rect.pos.x < limit[MARGIN_LEFT]) - screen_rect.pos.x=limit[MARGIN_LEFT]; - if (screen_rect.pos.y < limit[MARGIN_TOP]) screen_rect.pos.y =limit[MARGIN_TOP]; - + + if (offset!=Vector2()) { screen_rect.pos+=offset; @@ -382,6 +402,17 @@ int Camera2D::get_limit(Margin p_margin) const{ } +void Camera2D::set_limit_smoothing_enabled(bool enable) { + + limit_smoothing_enabled = enable; + _update_scroll(); +} + +bool Camera2D::is_limit_smoothing_enabled() const{ + + return limit_smoothing_enabled; +} + void Camera2D::set_drag_margin(Margin p_margin,float p_drag_margin) { ERR_FAIL_INDEX(p_margin,4); @@ -536,13 +567,15 @@ void Camera2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("_update_scroll"),&Camera2D::_update_scroll); - ObjectTypeDB::bind_method(_MD("_set_current","current"),&Camera2D::_set_current); ObjectTypeDB::bind_method(_MD("is_current"),&Camera2D::is_current); ObjectTypeDB::bind_method(_MD("set_limit","margin","limit"),&Camera2D::set_limit); ObjectTypeDB::bind_method(_MD("get_limit","margin"),&Camera2D::get_limit); + ObjectTypeDB::bind_method(_MD("set_limit_smoothing_enabled","limit_smoothing_enabled"),&Camera2D::set_limit_smoothing_enabled); + ObjectTypeDB::bind_method(_MD("is_limit_smoothing_enabled"),&Camera2D::is_limit_smoothing_enabled); + ObjectTypeDB::bind_method(_MD("set_v_drag_enabled","enabled"),&Camera2D::set_v_drag_enabled); ObjectTypeDB::bind_method(_MD("is_v_drag_enabled"),&Camera2D::is_v_drag_enabled); @@ -587,6 +620,7 @@ void Camera2D::_bind_methods() { ADD_PROPERTYI( PropertyInfo(Variant::INT,"limit/top"),_SCS("set_limit"),_SCS("get_limit"),MARGIN_TOP); ADD_PROPERTYI( PropertyInfo(Variant::INT,"limit/right"),_SCS("set_limit"),_SCS("get_limit"),MARGIN_RIGHT); ADD_PROPERTYI( PropertyInfo(Variant::INT,"limit/bottom"),_SCS("set_limit"),_SCS("get_limit"),MARGIN_BOTTOM); + ADD_PROPERTY( PropertyInfo(Variant::BOOL,"limit/smoothed"),_SCS("set_limit_smoothing_enabled"),_SCS("is_limit_smoothing_enabled") ); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"drag_margin/h_enabled"),_SCS("set_h_drag_enabled"),_SCS("is_h_drag_enabled") ); ADD_PROPERTY( PropertyInfo(Variant::BOOL,"drag_margin/v_enabled"),_SCS("set_v_drag_enabled"),_SCS("is_v_drag_enabled") ); @@ -619,6 +653,7 @@ Camera2D::Camera2D() { limit[MARGIN_TOP]=-10000000; limit[MARGIN_RIGHT]=10000000; limit[MARGIN_BOTTOM]=10000000; + drag_margin[MARGIN_LEFT]=0.2; drag_margin[MARGIN_TOP]=0.2; drag_margin[MARGIN_RIGHT]=0.2; @@ -626,6 +661,7 @@ Camera2D::Camera2D() { camera_pos=Vector2(); first=true; smoothing_enabled=false; + limit_smoothing_enabled=false; smoothing=5.0; zoom = Vector2(1, 1); diff --git a/scene/2d/camera_2d.h b/scene/2d/camera_2d.h index b3f55d798d..9f3e4254bb 100644 --- a/scene/2d/camera_2d.h +++ b/scene/2d/camera_2d.h @@ -61,6 +61,7 @@ protected: float smoothing; bool smoothing_enabled; int limit[4]; + bool limit_smoothing_enabled; float drag_margin[4]; bool h_drag_enabled; @@ -68,7 +69,6 @@ protected: float h_ofs; float v_ofs; - Point2 camera_screen_center; void _update_scroll(); @@ -95,6 +95,8 @@ public: void set_limit(Margin p_margin,int p_limit); int get_limit(Margin p_margin) const; + void set_limit_smoothing_enabled(bool enable); + bool is_limit_smoothing_enabled() const; void set_h_drag_enabled(bool p_enabled); bool is_h_drag_enabled() const; diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index eb4f457975..ed1d606ba8 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -650,21 +650,22 @@ int CanvasItem::get_light_mask() const{ } -void CanvasItem::item_rect_changed() { +void CanvasItem::item_rect_changed(bool p_size_changed) { - update(); + if (p_size_changed) + update(); emit_signal(SceneStringNames::get_singleton()->item_rect_changed); } -void CanvasItem::draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width) { +void CanvasItem::draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased) { if (!drawing) { ERR_EXPLAIN("Drawing is only allowed inside NOTIFICATION_DRAW, _draw() function or 'draw' signal."); ERR_FAIL(); } - VisualServer::get_singleton()->canvas_item_add_line(canvas_item,p_from,p_to,p_color,p_width); + VisualServer::get_singleton()->canvas_item_add_line(canvas_item,p_from,p_to,p_color,p_width,p_antialiased); } void CanvasItem::draw_rect(const Rect2& p_rect, const Color& p_color) { @@ -1028,7 +1029,7 @@ void CanvasItem::_bind_methods() { ObjectTypeDB::bind_method(_MD("_is_on_top"),&CanvasItem::_is_on_top); //ObjectTypeDB::bind_method(_MD("get_transform"),&CanvasItem::get_transform); - ObjectTypeDB::bind_method(_MD("draw_line","from","to","color","width"),&CanvasItem::draw_line,DEFVAL(1.0)); + ObjectTypeDB::bind_method(_MD("draw_line","from","to","color","width","antialiased"),&CanvasItem::draw_line,DEFVAL(1.0),DEFVAL(false)); ObjectTypeDB::bind_method(_MD("draw_rect","rect","color"),&CanvasItem::draw_rect); ObjectTypeDB::bind_method(_MD("draw_circle","pos","radius","color"),&CanvasItem::draw_circle); ObjectTypeDB::bind_method(_MD("draw_texture","texture:Texture","pos","modulate"),&CanvasItem::draw_texture,DEFVAL(Color(1,1,1,1))); diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h index b894310ce2..7849a66185 100644 --- a/scene/2d/canvas_item.h +++ b/scene/2d/canvas_item.h @@ -157,7 +157,7 @@ protected: _FORCE_INLINE_ void _notify_transform() { if (!is_inside_tree()) return; _notify_transform(this); if (!block_transform_notify && notify_local_transform) notification(NOTIFICATION_LOCAL_TRANSFORM_CHANGED); } - void item_rect_changed(); + void item_rect_changed(bool p_size_changed=true); void _notification(int p_what); static void _bind_methods(); @@ -207,7 +207,7 @@ public: /* DRAWING API */ - void draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width=1.0); + void draw_line(const Point2& p_from, const Point2& p_to, const Color& p_color, float p_width=1.0, bool p_antialiased=false); void draw_rect(const Rect2& p_rect, const Color& p_color); void draw_circle(const Point2& p_pos, float p_radius, const Color& p_color); void draw_texture(const Ref<Texture>& p_texture, const Point2& p_pos, const Color &p_modulate=Color(1,1,1,1)); diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp index 134e0153b3..df43e8e373 100644 --- a/scene/2d/node_2d.cpp +++ b/scene/2d/node_2d.cpp @@ -295,6 +295,53 @@ void Node2D::set_global_pos(const Point2& p_pos) { } } + +float Node2D::get_global_rot() const { + + return get_global_transform().get_rotation(); +} + +void Node2D::set_global_rot(float p_radians) { + + CanvasItem *pi = get_parent_item(); + if (pi) { + const float parent_global_rot = pi->get_global_transform().get_rotation(); + set_rot(p_radians - parent_global_rot); + } else { + set_rot(p_radians); + } +} + + +float Node2D::get_global_rotd() const { + + return Math::rad2deg(get_global_rot()); +} + +void Node2D::set_global_rotd(float p_degrees) { + + set_global_rot(Math::deg2rad(p_degrees)); +} + + +Size2 Node2D::get_global_scale() const { + + return get_global_transform().get_scale(); +} + +void Node2D::set_global_scale(const Size2& p_scale) { + + CanvasItem *pi = get_parent_item(); + if (pi) { + const Size2 parent_global_scale = pi->get_global_transform().get_scale(); + set_scale(p_scale - parent_global_scale); + } else { + set_scale(p_scale); + } + +} + + void Node2D::set_transform(const Matrix32& p_transform) { _mat=p_transform; @@ -398,6 +445,12 @@ void Node2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_global_pos","pos"),&Node2D::set_global_pos); ObjectTypeDB::bind_method(_MD("get_global_pos"),&Node2D::get_global_pos); + ObjectTypeDB::bind_method(_MD("set_global_rot","radians"),&Node2D::set_global_rot); + ObjectTypeDB::bind_method(_MD("get_global_rot"),&Node2D::get_global_rot); + ObjectTypeDB::bind_method(_MD("set_global_rotd","degrees"),&Node2D::set_global_rotd); + ObjectTypeDB::bind_method(_MD("get_global_rotd"),&Node2D::get_global_rotd); + ObjectTypeDB::bind_method(_MD("set_global_scale","scale"),&Node2D::set_global_scale); + ObjectTypeDB::bind_method(_MD("get_global_scale"),&Node2D::get_global_scale); ObjectTypeDB::bind_method(_MD("set_transform","xform"),&Node2D::set_transform); ObjectTypeDB::bind_method(_MD("set_global_transform","xform"),&Node2D::set_global_transform); diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h index b0c628fd94..aa8d0ef33c 100644 --- a/scene/2d/node_2d.h +++ b/scene/2d/node_2d.h @@ -87,11 +87,17 @@ public: Size2 get_scale() const; Point2 get_global_pos() const; + float get_global_rot() const; + float get_global_rotd() const; + Size2 get_global_scale() const; virtual Rect2 get_item_rect() const; void set_transform(const Matrix32& p_transform); void set_global_transform(const Matrix32& p_transform); void set_global_pos(const Point2& p_pos); + void set_global_rot(float p_radians); + void set_global_rotd(float p_degrees); + void set_global_scale(const Size2& p_scale); void set_z(int p_z); int get_z() const; diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp index 26c4ea385f..0c5c353766 100644 --- a/scene/2d/physics_body_2d.cpp +++ b/scene/2d/physics_body_2d.cpp @@ -436,7 +436,7 @@ bool RigidBody2D::_test_motion(const Vector2& p_motion,float p_margin,const Ref< Physics2DServer::MotionResult *r=NULL; if (p_result.is_valid()) r=p_result->get_result_ptr(); - return Physics2DServer::get_singleton()->body_test_motion(get_rid(),p_motion,p_margin,r); + return Physics2DServer::get_singleton()->body_test_motion(get_rid(),get_global_transform(),p_motion,p_margin,r); } @@ -1057,8 +1057,10 @@ Vector2 KinematicBody2D::get_travel() const { Vector2 KinematicBody2D::move(const Vector2& p_motion) { #if 1 + + Matrix32 gt = get_global_transform(); Physics2DServer::MotionResult result; - colliding = Physics2DServer::get_singleton()->body_test_motion(get_rid(),p_motion,margin,&result); + colliding = Physics2DServer::get_singleton()->body_test_motion(get_rid(),gt,p_motion,margin,&result); collider_metadata=result.collider_metadata; collider_shape=result.collider_shape; @@ -1067,10 +1069,12 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { normal=result.collision_normal; collider=result.collider_id; - Matrix32 gt = get_global_transform(); + gt.elements[2]+=result.motion; set_global_transform(gt); travel=result.motion; + + return result.remainder; #else @@ -1081,7 +1085,6 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { //this took about a week to get right.. //but is it right? who knows at this point.. - colliding=false; ERR_FAIL_COND_V(!is_inside_tree(),Vector2()); Physics2DDirectSpaceState *dss = Physics2DServer::get_singleton()->space_get_direct_state(get_world_2d()->get_space()); @@ -1099,17 +1102,15 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { bool collided=false; uint32_t mask=0; - if (collide_static) + if (true) mask|=Physics2DDirectSpaceState::TYPE_MASK_STATIC_BODY; - if (collide_kinematic) + if (true) mask|=Physics2DDirectSpaceState::TYPE_MASK_KINEMATIC_BODY; - if (collide_rigid) + if (true) mask|=Physics2DDirectSpaceState::TYPE_MASK_RIGID_BODY; - if (collide_character) + if (true) mask|=Physics2DDirectSpaceState::TYPE_MASK_CHARACTER_BODY; -// print_line("motion: "+p_motion+" margin: "+rtos(margin)); - //print_line("margin: "+rtos(margin)); do { @@ -1145,6 +1146,8 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { break; } + + Matrix32 gt = get_global_transform(); gt.elements[2]+=recover_motion; set_global_transform(gt); @@ -1191,6 +1194,8 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { if (safe>=1) { //not collided colliding=false; + + } else { //it collided, let's get the rest info in unsafe advance @@ -1226,16 +1231,94 @@ Vector2 KinematicBody2D::move(const Vector2& p_motion) { #endif } + + +Vector2 KinematicBody2D::move_and_slide(const Vector2& p_linear_velocity,const Vector2& p_floor_direction,float p_slope_stop_min_velocity,int p_max_bounces) { + + Vector2 motion = (move_and_slide_floor_velocity+p_linear_velocity)*get_fixed_process_delta_time(); + Vector2 lv = p_linear_velocity; + + move_and_slide_on_floor=false; + move_and_slide_on_ceiling=false; + move_and_slide_on_wall=false; + move_and_slide_colliders.clear(); + move_and_slide_floor_velocity=Vector2(); + + while(p_max_bounces) { + + motion=move(motion); + + if (is_colliding()) { + + + if (p_floor_direction==Vector2()) { + //all is a wall + move_and_slide_on_wall=true; + } else { + if ( get_collision_normal().dot(p_floor_direction) > Math::cos(Math::deg2rad(45))) { //floor + + + move_and_slide_on_floor=true; + move_and_slide_floor_velocity=get_collider_velocity(); + + if (get_travel().length()<1 && ABS((lv.x-move_and_slide_floor_velocity.x))<p_slope_stop_min_velocity) { + revert_motion(); + return Vector2(); + } + } else if ( get_collision_normal().dot(p_floor_direction) < Math::cos(Math::deg2rad(45))) { //ceiling + move_and_slide_on_ceiling=true; + } else { + move_and_slide_on_wall=true; + } + + } + + motion=get_collision_normal().slide(motion); + lv=get_collision_normal().slide(lv); + Variant collider = _get_collider(); + if (collider.get_type()!=Variant::NIL) { + move_and_slide_colliders.push_back(collider); + } + + } else { + break; + } + + p_max_bounces--; + if (motion==Vector2()) + break; + } + + return lv; +} + +bool KinematicBody2D::is_move_and_slide_on_floor() const { + + return move_and_slide_on_floor; +} +bool KinematicBody2D::is_move_and_slide_on_wall() const{ + + return move_and_slide_on_wall; +} +bool KinematicBody2D::is_move_and_slide_on_ceiling() const{ + + return move_and_slide_on_ceiling; +} +Array KinematicBody2D::get_move_and_slide_colliders() const{ + + return move_and_slide_colliders; +} + Vector2 KinematicBody2D::move_to(const Vector2& p_position) { return move(p_position-get_global_pos()); } -bool KinematicBody2D::test_move(const Vector2& p_motion) { +bool KinematicBody2D::test_move(const Matrix32& p_from,const Vector2& p_motion) { ERR_FAIL_COND_V(!is_inside_tree(),false); - return Physics2DServer::get_singleton()->body_test_motion(get_rid(),p_motion,margin); + return Physics2DServer::get_singleton()->body_test_motion(get_rid(),p_from,p_motion,margin); } @@ -1300,8 +1383,9 @@ void KinematicBody2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("move","rel_vec"),&KinematicBody2D::move); ObjectTypeDB::bind_method(_MD("move_to","position"),&KinematicBody2D::move_to); + ObjectTypeDB::bind_method(_MD("move_and_slide","linear_velocity","floor_normal","slope_stop_min_velocity","max_bounces"),&KinematicBody2D::move_and_slide,DEFVAL(Vector2(0,0)),DEFVAL(5),DEFVAL(4)); - ObjectTypeDB::bind_method(_MD("test_move","rel_vec"),&KinematicBody2D::test_move); + ObjectTypeDB::bind_method(_MD("test_move","from","rel_vec"),&KinematicBody2D::test_move); ObjectTypeDB::bind_method(_MD("get_travel"),&KinematicBody2D::get_travel); ObjectTypeDB::bind_method(_MD("revert_motion"),&KinematicBody2D::revert_motion); @@ -1313,6 +1397,10 @@ void KinematicBody2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_collider:Object"),&KinematicBody2D::_get_collider); ObjectTypeDB::bind_method(_MD("get_collider_shape"),&KinematicBody2D::get_collider_shape); ObjectTypeDB::bind_method(_MD("get_collider_metadata:Variant"),&KinematicBody2D::get_collider_metadata); + ObjectTypeDB::bind_method(_MD("get_move_and_slide_colliders"),&KinematicBody2D::get_move_and_slide_colliders); + ObjectTypeDB::bind_method(_MD("is_move_and_slide_on_floor"),&KinematicBody2D::is_move_and_slide_on_floor); + ObjectTypeDB::bind_method(_MD("is_move_and_slide_on_ceiling"),&KinematicBody2D::is_move_and_slide_on_ceiling); + ObjectTypeDB::bind_method(_MD("is_move_and_slide_on_wall"),&KinematicBody2D::is_move_and_slide_on_wall); ObjectTypeDB::bind_method(_MD("set_collision_margin","pixels"),&KinematicBody2D::set_collision_margin); ObjectTypeDB::bind_method(_MD("get_collision_margin","pixels"),&KinematicBody2D::get_collision_margin); @@ -1330,6 +1418,11 @@ KinematicBody2D::KinematicBody2D() : PhysicsBody2D(Physics2DServer::BODY_MODE_KI collider_shape=0; margin=0.08; + + move_and_slide_on_floor=false; + move_and_slide_on_ceiling=false; + move_and_slide_on_wall=false; + } KinematicBody2D::~KinematicBody2D() { diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h index 5af65bff33..ea29d873bd 100644 --- a/scene/2d/physics_body_2d.h +++ b/scene/2d/physics_body_2d.h @@ -302,6 +302,12 @@ class KinematicBody2D : public PhysicsBody2D { Variant collider_metadata; Vector2 travel; + Vector2 move_and_slide_floor_velocity; + bool move_and_slide_on_floor; + bool move_and_slide_on_ceiling; + bool move_and_slide_on_wall; + Array move_and_slide_colliders; + Variant _get_collider() const; _FORCE_INLINE_ bool _ignores_mode(Physics2DServer::BodyMode) const; @@ -313,7 +319,7 @@ public: Vector2 move(const Vector2& p_motion); Vector2 move_to(const Vector2& p_position); - bool test_move(const Vector2& p_motion); + bool test_move(const Matrix32 &p_from, const Vector2& p_motion); bool is_colliding() const; Vector2 get_travel() const; @@ -329,6 +335,13 @@ public: void set_collision_margin(float p_margin); float get_collision_margin() const; + Vector2 move_and_slide(const Vector2& p_linear_velocity, const Vector2& p_floor_direction=Vector2(0,0), float p_slope_stop_min_velocity=5, int p_max_bounces=4); + bool is_move_and_slide_on_floor() const; + bool is_move_and_slide_on_wall() const; + bool is_move_and_slide_on_ceiling() const; + Array get_move_and_slide_colliders() const; + + KinematicBody2D(); ~KinematicBody2D(); diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp index 6cda52fa4e..b5d62adfb4 100644 --- a/scene/2d/ray_cast_2d.cpp +++ b/scene/2d/ray_cast_2d.cpp @@ -29,6 +29,7 @@ #include "ray_cast_2d.h" #include "servers/physics_2d_server.h" #include "collision_object_2d.h" +#include "physics_body_2d.h" void RayCast2D::set_cast_to(const Vector2& p_point) { @@ -106,6 +107,30 @@ bool RayCast2D::is_enabled() const { return enabled; } +void RayCast2D::set_exclude_parent_body(bool p_exclude_parent_body) { + + if (exclude_parent_body==p_exclude_parent_body) + return; + + exclude_parent_body=p_exclude_parent_body; + + if (!is_inside_tree()) + return; + + + + if (get_parent()->cast_to<PhysicsBody2D>()) { + if (exclude_parent_body) + exclude.insert( get_parent()->cast_to<PhysicsBody2D>()->get_rid() ); + else + exclude.erase( get_parent()->cast_to<PhysicsBody2D>()->get_rid() ); + } +} + +bool RayCast2D::get_exclude_parent_body() const{ + + return exclude_parent_body; +} void RayCast2D::_notification(int p_what) { @@ -118,6 +143,12 @@ void RayCast2D::_notification(int p_what) { else set_fixed_process(false); + if (get_parent()->cast_to<PhysicsBody2D>()) { + if (exclude_parent_body) + exclude.insert( get_parent()->cast_to<PhysicsBody2D>()->get_rid() ); + else + exclude.erase( get_parent()->cast_to<PhysicsBody2D>()->get_rid() ); + } } break; case NOTIFICATION_EXIT_TREE: { @@ -254,7 +285,11 @@ void RayCast2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_type_mask","mask"),&RayCast2D::set_type_mask); ObjectTypeDB::bind_method(_MD("get_type_mask"),&RayCast2D::get_type_mask); + ObjectTypeDB::bind_method(_MD("set_exclude_parent_body","mask"),&RayCast2D::set_exclude_parent_body); + ObjectTypeDB::bind_method(_MD("get_exclude_parent_body"),&RayCast2D::get_exclude_parent_body); + ADD_PROPERTY(PropertyInfo(Variant::BOOL,"enabled"),_SCS("set_enabled"),_SCS("is_enabled")); + ADD_PROPERTY(PropertyInfo(Variant::BOOL,"exclude_parent"),_SCS("set_exclude_parent_body"),_SCS("get_exclude_parent_body")); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2,"cast_to"),_SCS("set_cast_to"),_SCS("get_cast_to")); ADD_PROPERTY(PropertyInfo(Variant::INT,"layer_mask",PROPERTY_HINT_ALL_FLAGS),_SCS("set_layer_mask"),_SCS("get_layer_mask")); ADD_PROPERTY(PropertyInfo(Variant::INT,"type_mask",PROPERTY_HINT_FLAGS,"Static,Kinematic,Rigid,Character,Area"),_SCS("set_type_mask"),_SCS("get_type_mask")); @@ -269,4 +304,5 @@ RayCast2D::RayCast2D() { layer_mask=1; type_mask=Physics2DDirectSpaceState::TYPE_MASK_COLLISION; cast_to=Vector2(0,50); + exclude_parent_body=true; } diff --git a/scene/2d/ray_cast_2d.h b/scene/2d/ray_cast_2d.h index 54ec42c53e..e1caa8b63e 100644 --- a/scene/2d/ray_cast_2d.h +++ b/scene/2d/ray_cast_2d.h @@ -45,6 +45,7 @@ class RayCast2D : public Node2D { Set<RID> exclude; uint32_t layer_mask; uint32_t type_mask; + bool exclude_parent_body; Vector2 cast_to; @@ -66,6 +67,9 @@ public: void set_type_mask(uint32_t p_mask); uint32_t get_type_mask() const; + void set_exclude_parent_body(bool p_exclude_parent_body); + bool get_exclude_parent_body() const; + bool is_colliding() const; Object *get_collider() const; int get_collider_shape() const; diff --git a/scene/3d/immediate_geometry.cpp b/scene/3d/immediate_geometry.cpp index e83fa69b4f..c9319904bd 100644 --- a/scene/3d/immediate_geometry.cpp +++ b/scene/3d/immediate_geometry.cpp @@ -102,7 +102,7 @@ DVector<Face3> ImmediateGeometry::get_faces(uint32_t p_usage_flags) const { -void ImmediateGeometry::add_sphere(int p_lats,int p_lons,float p_radius) { +void ImmediateGeometry::add_sphere(int p_lats, int p_lons, float p_radius, bool p_add_uv) { for(int i = 1; i <= p_lats; i++) { double lat0 = Math_PI * (-0.5 + (double) (i - 1) / p_lats); @@ -132,6 +132,10 @@ void ImmediateGeometry::add_sphere(int p_lats,int p_lons,float p_radius) { }; #define ADD_POINT(m_idx)\ + if (p_add_uv) {\ + set_uv(Vector2(Math::atan2(v[m_idx].x,v[m_idx].z)/Math_PI * 0.5+0.5,v[m_idx].y*0.5+0.5));\ + set_tangent(Plane(Vector3(-v[m_idx].z,v[m_idx].y,v[m_idx].x),1)); \ + }\ set_normal(v[m_idx]);\ add_vertex(v[m_idx]*p_radius); @@ -156,7 +160,7 @@ void ImmediateGeometry::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_uv","uv"),&ImmediateGeometry::set_uv); ObjectTypeDB::bind_method(_MD("set_uv2","uv"),&ImmediateGeometry::set_uv2); ObjectTypeDB::bind_method(_MD("add_vertex","pos"),&ImmediateGeometry::add_vertex); - ObjectTypeDB::bind_method(_MD("add_sphere","lats","lons","radius"),&ImmediateGeometry::add_sphere); + ObjectTypeDB::bind_method(_MD("add_sphere","lats","lons","radius","add_uv"),&ImmediateGeometry::add_sphere,DEFVAL(true)); ObjectTypeDB::bind_method(_MD("end"),&ImmediateGeometry::end); ObjectTypeDB::bind_method(_MD("clear"),&ImmediateGeometry::clear); diff --git a/scene/3d/immediate_geometry.h b/scene/3d/immediate_geometry.h index c1cc4f87d5..fc7f4de634 100644 --- a/scene/3d/immediate_geometry.h +++ b/scene/3d/immediate_geometry.h @@ -62,7 +62,7 @@ public: void clear(); - void add_sphere(int p_lats,int p_lons,float p_radius); + void add_sphere(int p_lats,int p_lons,float p_radius,bool p_add_uv=true); diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp index 41d766c1b7..6479dd2d02 100644 --- a/scene/gui/base_button.cpp +++ b/scene/gui/base_button.cpp @@ -55,6 +55,8 @@ void BaseButton::_input_event(InputEvent p_event) { if (b.pressed) { + emit_signal("button_down"); + if (!toggle_mode) { //mouse press attempt status.press_attempt=true; @@ -86,6 +88,8 @@ void BaseButton::_input_event(InputEvent p_event) { } else { + emit_signal("button_up"); + if (status.press_attempt && status.pressing_inside) { // released(); emit_signal("released"); @@ -100,9 +104,11 @@ void BaseButton::_input_event(InputEvent p_event) { status.press_attempt=true; status.pressing_inside=true; + emit_signal("button_down"); } else { + emit_signal("button_up"); if (status.press_attempt &&status.pressing_inside) { @@ -173,6 +179,7 @@ void BaseButton::_input_event(InputEvent p_event) { status.pressing_button++; status.press_attempt=true; status.pressing_inside=true; + emit_signal("button_down"); } else if (status.press_attempt) { @@ -185,6 +192,8 @@ void BaseButton::_input_event(InputEvent p_event) { status.press_attempt=false; status.pressing_inside=false; + emit_signal("button_up"); + if (!toggle_mode) { //mouse press attempt pressed(); @@ -467,6 +476,8 @@ void BaseButton::_bind_methods() { ADD_SIGNAL( MethodInfo("pressed" ) ); ADD_SIGNAL( MethodInfo("released" ) ); + ADD_SIGNAL( MethodInfo("button_up") ); + ADD_SIGNAL( MethodInfo("button_down") ); ADD_SIGNAL( MethodInfo("toggled", PropertyInfo( Variant::BOOL,"pressed") ) ); ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "disabled"), _SCS("set_disabled"), _SCS("is_disabled")); ADD_PROPERTY( PropertyInfo( Variant::BOOL, "toggle_mode"), _SCS("set_toggle_mode"), _SCS("is_toggle_mode")); diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 71ec508c81..bf35fd25bd 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -449,6 +449,13 @@ void Control::remove_child_notify(Node *p_child) { } +void Control::_update_canvas_item_transform() { + + Matrix32 xform=Matrix32(data.rotation,get_pos()); + xform.scale_basis(data.scale); + VisualServer::get_singleton()->canvas_item_set_transform(get_canvas_item(),xform); + +} void Control::_notification(int p_notification) { @@ -600,10 +607,9 @@ void Control::_notification(int p_notification) { } break; case NOTIFICATION_DRAW: { - Matrix32 xform=Matrix32(data.rotation,get_pos()); - xform.scale_basis(data.scale); - VisualServer::get_singleton()->canvas_item_set_transform(get_canvas_item(),xform); - VisualServer::get_singleton()->canvas_item_set_custom_rect( get_canvas_item(),true, Rect2(Point2(),get_size())); + _update_canvas_item_transform(); + VisualServer::get_singleton()->canvas_item_set_custom_rect( get_canvas_item(),!data.disable_visibility_clip, Rect2(Point2(),get_size())); + //emit_signal(SceneStringNames::get_singleton()->draw); } break; @@ -1272,17 +1278,24 @@ void Control::_size_changed() { new_size_cache.x = MAX( minimum_size.x, new_size_cache.x ); new_size_cache.y = MAX( minimum_size.y, new_size_cache.y ); - - if (new_pos_cache == data.pos_cache && new_size_cache == data.size_cache) - return; // did not change, don't emit signal + bool pos_changed = new_pos_cache != data.pos_cache; + bool size_changed = new_size_cache != data.size_cache; data.pos_cache=new_pos_cache; data.size_cache=new_size_cache; - notification(NOTIFICATION_RESIZED); - item_rect_changed(); - _change_notify_margins(); - _notify_transform(); + if (size_changed) { + notification(NOTIFICATION_RESIZED); + } + if (pos_changed || size_changed) { + item_rect_changed(size_changed); + _change_notify_margins(); + _notify_transform(); + } + + if (pos_changed && !size_changed) { + _update_canvas_item_transform(); //move because it won't be updated + } } float Control::_get_parent_range(int p_idx) const { @@ -2214,7 +2227,7 @@ void Control::grab_click_focus() { void Control::minimum_size_changed() { - if (!is_inside_tree()) + if (!is_inside_tree() || data.block_minimum_size_adjust) return; if (data.pending_min_size_update) @@ -2374,7 +2387,26 @@ Control *Control::get_root_parent_control() const { return const_cast<Control*>(root); } +void Control::set_block_minimum_size_adjust(bool p_block) { + data.block_minimum_size_adjust=p_block; +} + +bool Control::is_minimum_size_adjust_blocked() const { + + return data.block_minimum_size_adjust; +} + +void Control::set_disable_visibility_clip(bool p_ignore) { + + data.disable_visibility_clip=p_ignore; + update(); +} + +bool Control::is_visibility_clip_disabled() const { + + return data.disable_visibility_clip; +} void Control::_bind_methods() { @@ -2603,6 +2635,8 @@ Control::Control() { data.scale=Vector2(1,1); data.drag_owner=0; data.modal_frame=0; + data.block_minimum_size_adjust=false; + data.disable_visibility_clip=false; for (int i=0;i<4;i++) { diff --git a/scene/gui/control.h b/scene/gui/control.h index b9ac53067a..558439efbf 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -128,6 +128,9 @@ private: bool ignore_mouse; bool stop_mouse; + bool block_minimum_size_adjust; + bool disable_visibility_clip; + Control *parent; ObjectID drag_owner; bool modal; @@ -193,6 +196,7 @@ private: void _unref_font( Ref<Font> p_sc); void _font_changed(); + void _update_canvas_item_transform(); friend class Viewport; @@ -396,6 +400,13 @@ public: Control *get_root_parent_control() const; + + void set_block_minimum_size_adjust(bool p_block); + bool is_minimum_size_adjust_blocked() const; + + void set_disable_visibility_clip(bool p_ignore); + bool is_visibility_clip_disabled() const; + Control(); ~Control(); diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index 4dbc106834..93e46da82b 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -399,8 +399,6 @@ AcceptDialog::AcceptDialog() { add_child(label); hbc = memnew( HBoxContainer ); - hbc->set_area_as_parent_rect(margin); - hbc->set_anchor_and_margin(MARGIN_TOP,ANCHOR_END,button_margin); add_child(hbc); hbc->add_spacer(); diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index 458e51b4fd..0de6add8cb 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -61,6 +61,8 @@ Error GraphEdit::connect_node(const StringName& p_from, int p_from_port,const St c.to_port=p_to_port; connections.push_back(c); top_layer->update(); + update(); + connections_layer->update(); return OK; } @@ -85,6 +87,8 @@ void GraphEdit::disconnect_node(const StringName& p_from, int p_from_port,const connections.erase(E); top_layer->update(); + update(); + connections_layer->update(); return; } } @@ -116,12 +120,13 @@ Vector2 GraphEdit::get_scroll_ofs() const{ void GraphEdit::_scroll_moved(double) { - _update_scroll_offset(); - top_layer->update(); - if (is_using_snap()) { - //must redraw grid - update(); + + if (!awaiting_scroll_offset_update) { + call_deferred("_update_scroll_offset"); + awaiting_scroll_offset_update=true; } + top_layer->update(); + update(); if (!setting_scroll_ofs) {//in godot, signals on change value are avoided as a convention emit_signal("scroll_offset_changed",get_scroll_ofs()); @@ -130,6 +135,8 @@ void GraphEdit::_scroll_moved(double) { void GraphEdit::_update_scroll_offset() { + set_block_minimum_size_adjust(true); + for(int i=0;i<get_child_count();i++) { GraphNode *gn=get_child(i)->cast_to<GraphNode>(); @@ -139,9 +146,15 @@ void GraphEdit::_update_scroll_offset() { Point2 pos=gn->get_offset()*zoom; pos-=Point2(h_scroll->get_val(),v_scroll->get_val()); gn->set_pos(pos); - gn->set_scale(Vector2(zoom,zoom)); + if (gn->get_scale()!=Vector2(zoom,zoom)) { + gn->set_scale(Vector2(zoom,zoom)); + } } + connections_layer->set_pos(-Point2(h_scroll->get_val(),v_scroll->get_val())*zoom); + set_block_minimum_size_adjust(false); + awaiting_scroll_offset_update=false; + } void GraphEdit::_update_scroll() { @@ -150,6 +163,9 @@ void GraphEdit::_update_scroll() { return; updating=true; + + set_block_minimum_size_adjust(true); + Rect2 screen; for(int i=0;i<get_child_count();i++) { @@ -184,7 +200,13 @@ void GraphEdit::_update_scroll() { else v_scroll->show(); - _update_scroll_offset(); + set_block_minimum_size_adjust(false); + + if (!awaiting_scroll_offset_update) { + call_deferred("_update_scroll_offset"); + awaiting_scroll_offset_update=true; + } + updating=false; } @@ -194,6 +216,19 @@ void GraphEdit::_graph_node_raised(Node* p_gn) { GraphNode *gn=p_gn->cast_to<GraphNode>(); ERR_FAIL_COND(!gn); gn->raise(); + if (gn->is_comment()) { + move_child(gn,0); + } + int first_not_comment=0; + for(int i=0;i<get_child_count();i++) { + GraphNode *gn=get_child(i)->cast_to<GraphNode>(); + if (gn && !gn->is_comment()) { + first_not_comment=i; + break; + } + } + + move_child(connections_layer,first_not_comment); top_layer->raise(); emit_signal("node_selected",p_gn); @@ -205,6 +240,8 @@ void GraphEdit::_graph_node_moved(Node *p_gn) { GraphNode *gn=p_gn->cast_to<GraphNode>(); ERR_FAIL_COND(!gn); top_layer->update(); + update(); + connections_layer->update(); } void GraphEdit::add_child_notify(Node *p_child) { @@ -261,6 +298,8 @@ void GraphEdit::_notification(int p_what) { } if (p_what==NOTIFICATION_DRAW) { + + draw_style_box( get_stylebox("bg"),Rect2(Point2(),get_size()) ); VS::get_singleton()->canvas_item_set_clip(get_canvas_item(),true); @@ -306,11 +345,14 @@ void GraphEdit::_notification(int p_what) { } + + } if (p_what==NOTIFICATION_RESIZED) { _update_scroll(); top_layer->update(); + } } @@ -318,7 +360,8 @@ bool GraphEdit::_filter_input(const Point2& p_point) { Ref<Texture> port =get_icon("port","GraphNode"); - float grab_r=port->get_width()*0.5; + float grab_r_extend = 2.0; + float grab_r=port->get_width()*0.5*grab_r_extend; for(int i=get_child_count()-1;i>=0;i--) { GraphNode *gn=get_child(i)->cast_to<GraphNode>(); @@ -337,8 +380,9 @@ bool GraphEdit::_filter_input(const Point2& p_point) { for(int j=0;j<gn->get_connection_input_count();j++) { Vector2 pos = gn->get_connection_input_pos(j)+gn->get_pos(); - if (pos.distance_to(p_point)<grab_r) + if (pos.distance_to(p_point)<grab_r) { return true; + } } @@ -350,11 +394,13 @@ bool GraphEdit::_filter_input(const Point2& p_point) { void GraphEdit::_top_layer_input(const InputEvent& p_ev) { + + float grab_r_extend = 2.0; if (p_ev.type==InputEvent::MOUSE_BUTTON && p_ev.mouse_button.button_index==BUTTON_LEFT && p_ev.mouse_button.pressed) { Ref<Texture> port =get_icon("port","GraphNode"); Vector2 mpos(p_ev.mouse_button.x,p_ev.mouse_button.y); - float grab_r=port->get_width()*0.5; + float grab_r=port->get_width()*0.5*grab_r_extend; for(int i=get_child_count()-1;i>=0;i--) { GraphNode *gn=get_child(i)->cast_to<GraphNode>(); @@ -383,6 +429,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { connecting_color=to->cast_to<GraphNode>()->get_connection_input_color(E->get().to_port); connecting_target=false; connecting_to=pos; + just_disconected=true; emit_signal("disconnection_request",E->get().from,E->get().from_port,E->get().to,E->get().to_port); to = get_node(String(connecting_from)); //maybe it was erased @@ -404,6 +451,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { connecting_color=gn->get_connection_output_color(j); connecting_target=false; connecting_to=pos; + just_disconected=false; return; } @@ -432,6 +480,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { connecting_color=fr->cast_to<GraphNode>()->get_connection_output_color(E->get().from_port); connecting_target=false; connecting_to=pos; + just_disconected=true; emit_signal("disconnection_request",E->get().from,E->get().from_port,E->get().to,E->get().to_port); fr = get_node(String(connecting_from)); //maybe it was erased @@ -454,6 +503,8 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { connecting_color=gn->get_connection_input_color(j); connecting_target=false; connecting_to=pos; + just_disconected=true; + return; } @@ -466,11 +517,11 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { connecting_to=Vector2(p_ev.mouse_motion.x,p_ev.mouse_motion.y); connecting_target=false; - top_layer->update(); + top_layer->update(); Ref<Texture> port =get_icon("port","GraphNode"); Vector2 mpos(p_ev.mouse_button.x,p_ev.mouse_button.y); - float grab_r=port->get_width()*0.5; + float grab_r=port->get_width()*0.5*grab_r_extend; for(int i=get_child_count()-1;i>=0;i--) { GraphNode *gn=get_child(i)->cast_to<GraphNode>(); @@ -526,18 +577,91 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { } emit_signal("connection_request",from,from_slot,to,to_slot); + } else if (!just_disconected) { + String from = connecting_from; + int from_slot = connecting_index; + Vector2 ofs = Vector2(p_ev.mouse_button.x,p_ev.mouse_button.y); + emit_signal("connection_to_empty",from,from_slot,ofs); } connecting=false; top_layer->update(); + update(); + connections_layer->update(); } } -void GraphEdit::_draw_cos_line(const Vector2& p_from, const Vector2& p_to,const Color& p_color,const Color& p_to_color) { + +template<class Vector2> +static _FORCE_INLINE_ Vector2 _bezier_interp(real_t t, Vector2 start, Vector2 control_1, Vector2 control_2, Vector2 end) { + /* Formula from Wikipedia article on Bezier curves. */ + real_t omt = (1.0 - t); + real_t omt2 = omt*omt; + real_t omt3 = omt2*omt; + real_t t2 = t*t; + real_t t3 = t2*t; + + return start * omt3 + + control_1 * omt2 * t * 3.0 + + control_2 * omt * t2 * 3.0 + + end * t3; +} + + +void GraphEdit::_bake_segment2d(CanvasItem* p_where,float p_begin, float p_end,const Vector2& p_a,const Vector2& p_out,const Vector2& p_b, const Vector2& p_in,int p_depth,int p_min_depth,int p_max_depth,float p_tol,const Color& p_color,const Color& p_to_color,int &lines) const { + + float mp = p_begin+(p_end-p_begin)*0.5; + Vector2 beg = _bezier_interp(p_begin,p_a,p_a+p_out,p_b+p_in,p_b); + Vector2 mid = _bezier_interp(mp,p_a,p_a+p_out,p_b+p_in,p_b); + Vector2 end = _bezier_interp(p_end,p_a,p_a+p_out,p_b+p_in,p_b); + + Vector2 na = (mid-beg).normalized(); + Vector2 nb = (end-mid).normalized(); + float dp = Math::rad2deg(Math::acos(na.dot(nb))); + + if (p_depth>=p_min_depth && ( dp<p_tol || p_depth>=p_max_depth)) { + + + + p_where->draw_line(beg,end,p_color.linear_interpolate(p_to_color,mp),2,true); + lines++; + } else { + _bake_segment2d(p_where,p_begin,mp,p_a,p_out,p_b,p_in,p_depth+1,p_min_depth,p_max_depth,p_tol,p_color,p_to_color,lines); + _bake_segment2d(p_where,mp,p_end,p_a,p_out,p_b,p_in,p_depth+1,p_min_depth,p_max_depth,p_tol,p_color,p_to_color,lines); + } +} + + +void GraphEdit::_draw_cos_line(CanvasItem* p_where,const Vector2& p_from, const Vector2& p_to,const Color& p_color,const Color& p_to_color) { + + +#if 1 + + //cubic bezier code + float diff = p_to.x-p_from.x; + float cp_offset; + int cp_len = get_constant("bezier_len_pos"); + int cp_neg_len = get_constant("bezier_len_neg"); + + if (diff>0) { + cp_offset=MAX(cp_len,diff*0.5); + } else { + cp_offset=MAX(MIN(cp_len-diff,cp_neg_len),-diff*0.5); + } + + Vector2 c1 = Vector2(cp_offset,0); + Vector2 c2 = Vector2(-cp_offset,0); + + int lines=0; + _bake_segment2d(p_where,0,1,p_from,c1,p_to,c2,0,3,9,8,p_color,p_to_color,lines); + + +#else static const int steps = 20; + //old cosine code Rect2 r; r.pos=p_from; r.expand_to(p_to); @@ -547,6 +671,7 @@ void GraphEdit::_draw_cos_line(const Vector2& p_from, const Vector2& p_to,const Vector2 prev; for(int i=0;i<=steps;i++) { + float d = i/float(steps); float c=-Math::cos(d*Math_PI) * 0.5+0.5; if (flip) @@ -555,11 +680,65 @@ void GraphEdit::_draw_cos_line(const Vector2& p_from, const Vector2& p_to,const if (i>0) { - top_layer->draw_line(prev,p,p_color.linear_interpolate(p_to_color,d),2); + p_where->draw_line(prev,p,p_color.linear_interpolate(p_to_color,d),2); } prev=p; } +#endif +} + + +void GraphEdit::_connections_layer_draw() { + + + { + //draw connections + List<List<Connection>::Element* > to_erase; + for(List<Connection>::Element *E=connections.front();E;E=E->next()) { + + NodePath fromnp(E->get().from); + + Node * from = get_node(fromnp); + if (!from) { + to_erase.push_back(E); + continue; + } + + GraphNode *gfrom = from->cast_to<GraphNode>(); + + if (!gfrom) { + to_erase.push_back(E); + continue; + } + + NodePath tonp(E->get().to); + Node * to = get_node(tonp); + if (!to) { + to_erase.push_back(E); + continue; + } + + GraphNode *gto = to->cast_to<GraphNode>(); + + if (!gto) { + to_erase.push_back(E); + continue; + } + + Vector2 frompos=gfrom->get_connection_output_pos(E->get().from_port)+gfrom->get_offset(); + Color color = gfrom->get_connection_output_color(E->get().from_port); + Vector2 topos=gto->get_connection_input_pos(E->get().to_port)+gto->get_offset(); + Color tocolor = gto->get_connection_input_color(E->get().to_port); + _draw_cos_line(connections_layer,frompos,topos,color,tocolor); + + } + + while(to_erase.size()) { + connections.erase(to_erase.front()->get()); + to_erase.pop_front(); + } + } } void GraphEdit::_top_layer_draw() { @@ -589,53 +768,14 @@ void GraphEdit::_top_layer_draw() { col.g+=0.4; col.b+=0.4; } - _draw_cos_line(pos,topos,col,col); - } - List<List<Connection>::Element* > to_erase; - for(List<Connection>::Element *E=connections.front();E;E=E->next()) { - - NodePath fromnp(E->get().from); - - Node * from = get_node(fromnp); - if (!from) { - to_erase.push_back(E); - continue; - } - - GraphNode *gfrom = from->cast_to<GraphNode>(); - - if (!gfrom) { - to_erase.push_back(E); - continue; - } - - NodePath tonp(E->get().to); - Node * to = get_node(tonp); - if (!to) { - to_erase.push_back(E); - continue; - } - - GraphNode *gto = to->cast_to<GraphNode>(); - - if (!gto) { - to_erase.push_back(E); - continue; + if (!connecting_out) { + SWAP(pos,topos); } - - Vector2 frompos=gfrom->get_connection_output_pos(E->get().from_port)+gfrom->get_pos(); - Color color = gfrom->get_connection_output_color(E->get().from_port); - Vector2 topos=gto->get_connection_input_pos(E->get().to_port)+gto->get_pos(); - Color tocolor = gto->get_connection_input_color(E->get().to_port); - _draw_cos_line(frompos,topos,color,tocolor); - + _draw_cos_line(top_layer,pos,topos,col,col); } - while(to_erase.size()) { - connections.erase(to_erase.front()->get()); - to_erase.pop_front(); - } + if (box_selecting) top_layer->draw_rect(box_selecting_rect,Color(0.7,0.7,1.0,0.3)); } @@ -765,6 +905,8 @@ void GraphEdit::_input_event(const InputEvent& p_ev) { dragging = false; top_layer->update(); + update(); + connections_layer->update(); } if (b.button_index==BUTTON_LEFT && b.pressed) { @@ -775,6 +917,10 @@ void GraphEdit::_input_event(const InputEvent& p_ev) { gn=get_child(i)->cast_to<GraphNode>(); if (gn) { + + if (gn->is_resizing()) + continue; + Rect2 r = gn->get_rect(); r.size*=zoom; if (r.has_point(get_local_mouse_pos())) @@ -886,6 +1032,7 @@ void GraphEdit::clear_connections() { connections.clear(); update(); + connections_layer->update(); } void GraphEdit::set_zoom(float p_zoom) { @@ -1019,6 +1166,7 @@ void GraphEdit::set_use_snap(bool p_enable) { snap_button->set_pressed(p_enable); update(); + } bool GraphEdit::is_using_snap() const{ @@ -1082,6 +1230,10 @@ void GraphEdit::_bind_methods() { ObjectTypeDB::bind_method(_MD("_snap_value_changed"),&GraphEdit::_snap_value_changed); ObjectTypeDB::bind_method(_MD("_input_event"),&GraphEdit::_input_event); + ObjectTypeDB::bind_method(_MD("_update_scroll_offset"),&GraphEdit::_update_scroll_offset); + ObjectTypeDB::bind_method(_MD("_connections_layer_draw"),&GraphEdit::_connections_layer_draw); + + ObjectTypeDB::bind_method(_MD("set_selected","node"),&GraphEdit::set_selected); @@ -1090,6 +1242,7 @@ void GraphEdit::_bind_methods() { ADD_SIGNAL(MethodInfo("popup_request", PropertyInfo(Variant::VECTOR2,"p_position"))); ADD_SIGNAL(MethodInfo("duplicate_nodes_request")); ADD_SIGNAL(MethodInfo("node_selected",PropertyInfo(Variant::OBJECT,"node"))); + ADD_SIGNAL(MethodInfo("connection_to_empty",PropertyInfo(Variant::STRING,"from"),PropertyInfo(Variant::INT,"from_slot"),PropertyInfo(Variant::VECTOR2,"release_pos"))); ADD_SIGNAL(MethodInfo("delete_nodes_request")); ADD_SIGNAL(MethodInfo("_begin_node_move")); ADD_SIGNAL(MethodInfo("_end_node_move")); @@ -1101,6 +1254,7 @@ void GraphEdit::_bind_methods() { GraphEdit::GraphEdit() { set_focus_mode(FOCUS_ALL); + awaiting_scroll_offset_update=false; top_layer=NULL; top_layer=memnew(GraphEditFilter(this)); add_child(top_layer); @@ -1110,6 +1264,12 @@ GraphEdit::GraphEdit() { top_layer->set_stop_mouse(false); top_layer->connect("input_event",this,"_top_layer_input"); + connections_layer = memnew( Control ); + add_child(connections_layer); + connections_layer->connect("draw",this,"_connections_layer_draw"); + connections_layer->set_name("CLAYER"); + connections_layer->set_disable_visibility_clip(true); // so it can draw freely and be offseted + h_scroll = memnew(HScrollBar); h_scroll->set_name("_h_scroll"); top_layer->add_child(h_scroll); @@ -1172,5 +1332,8 @@ GraphEdit::GraphEdit() { zoom_hb->add_child(snap_amount); setting_scroll_ofs=false; + just_disconected=false; + + } diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h index 6d35e1518f..c5174f6699 100644 --- a/scene/gui/graph_edit.h +++ b/scene/gui/graph_edit.h @@ -92,6 +92,7 @@ private: Vector2 connecting_to; String connecting_target_to; int connecting_target_index; + bool just_disconected; bool dragging; bool just_selected; @@ -110,9 +111,12 @@ private: bool setting_scroll_ofs; bool right_disconnects; bool updating; + bool awaiting_scroll_offset_update; List<Connection> connections; - void _draw_cos_line(const Vector2& p_from, const Vector2& p_to, const Color& p_color, const Color &p_to_color); + void _bake_segment2d(CanvasItem* p_where,float p_begin, float p_end, const Vector2& p_a, const Vector2& p_out, const Vector2& p_b, const Vector2& p_in, int p_depth, int p_min_depth, int p_max_depth, float p_tol, const Color& p_color, const Color& p_to_color, int &lines) const; + + void _draw_cos_line(CanvasItem* p_where,const Vector2& p_from, const Vector2& p_to, const Color& p_color, const Color &p_to_color); void _graph_node_raised(Node* p_gn); void _graph_node_moved(Node *p_gn); @@ -121,13 +125,19 @@ private: void _scroll_moved(double); void _input_event(const InputEvent& p_ev); + Control *connections_layer; GraphEditFilter *top_layer; void _top_layer_input(const InputEvent& p_ev); void _top_layer_draw(); + void _connections_layer_draw(); void _update_scroll_offset(); Array _get_connection_list() const; + bool lines_on_bg; + + + struct ConnType { union { @@ -200,6 +210,7 @@ public: int get_snap() const; void set_snap(int p_snap); + GraphEdit(); }; diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index 66d2725ad2..da298a795a 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -183,16 +183,45 @@ void GraphNode::_resort() { } +bool GraphNode::has_point(const Point2& p_point) const { + + if (comment) { + Ref<StyleBox> comment = get_stylebox("comment"); + Ref<Texture> resizer =get_icon("resizer"); + + if (Rect2(get_size()-resizer->get_size(), resizer->get_size()).has_point(p_point)) { + return true; + } + if (Rect2(0,0,get_size().width,comment->get_margin(MARGIN_TOP)).has_point(p_point)) { + return true; + } + + return false; + + } else { + return Control::has_point(p_point); + } +} void GraphNode::_notification(int p_what) { if (p_what==NOTIFICATION_DRAW) { - Ref<StyleBox> sb=get_stylebox(selected ? "selectedframe" : "frame"); + Ref<StyleBox> sb; + + if (comment) { + sb = get_stylebox( selected? "commentfocus" : "comment"); + + } else { + + sb = get_stylebox( selected ? "selectedframe" : "frame"); + } + sb=sb->duplicate(); sb->call("set_modulate",modulate); Ref<Texture> port =get_icon("port"); Ref<Texture> close =get_icon("close"); + Ref<Texture> resizer =get_icon("resizer"); int close_offset = get_constant("close_offset"); Ref<Font> title_font = get_font("title_font"); int title_offset = get_constant("title_offset"); @@ -258,6 +287,11 @@ void GraphNode::_notification(int p_what) { } } + + + if (resizeable) { + draw_texture(resizer,get_size()-resizer->get_size()); + } } if (p_what==NOTIFICATION_SORT_CHILDREN) { @@ -594,19 +628,51 @@ void GraphNode::_input_event(const InputEvent& p_ev) { ERR_EXPLAIN("GraphNode must be the child of a GraphEdit node."); ERR_FAIL_COND(get_parent_control() == NULL); - get_parent_control()->grab_focus(); + print_line("INPUT EVENT BUTTON"); if(p_ev.mouse_button.pressed && p_ev.mouse_button.button_index==BUTTON_LEFT) { Vector2 mpos = Vector2(p_ev.mouse_button.x,p_ev.mouse_button.y); if (close_rect.size!=Size2() && close_rect.has_point(mpos)) { emit_signal("close_request"); + accept_event(); return; } + + Ref<Texture> resizer =get_icon("resizer"); + + if (resizeable && mpos.x > get_size().x-resizer->get_width() && mpos.y > get_size().y-resizer->get_height()) { + + resizing=true; + resizing_from=mpos; + resizing_from_size=get_size(); + accept_event(); + return; + } + + //send focus to parent emit_signal("raise_request"); + get_parent_control()->grab_focus(); + + } + + if(!p_ev.mouse_button.pressed && p_ev.mouse_button.button_index==BUTTON_LEFT) { + resizing=false; } + + } + + + if (resizing && p_ev.type==InputEvent::MOUSE_MOTION) { + Vector2 mpos = Vector2(p_ev.mouse_motion.x,p_ev.mouse_motion.y); + + Vector2 diff = mpos - resizing_from; + + emit_signal("resize_request",resizing_from_size+diff); + } + } void GraphNode::set_modulate(const Color &p_color) { @@ -630,6 +696,30 @@ GraphNode::Overlay GraphNode::get_overlay() const{ return overlay; } +void GraphNode::set_comment(bool p_enable) { + + comment=p_enable; + update(); +} + +bool GraphNode::is_comment() const{ + + return comment; +} + + +void GraphNode::set_resizeable(bool p_enable) { + + resizeable=p_enable; + update(); +} + +bool GraphNode::is_resizeable() const{ + + return resizeable; +} + + void GraphNode::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_title","title"),&GraphNode::set_title); @@ -649,6 +739,12 @@ void GraphNode::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_offset","offset"),&GraphNode::set_offset); ObjectTypeDB::bind_method(_MD("get_offset"),&GraphNode::get_offset); + ObjectTypeDB::bind_method(_MD("set_comment","comment"),&GraphNode::set_comment); + ObjectTypeDB::bind_method(_MD("is_comment"),&GraphNode::is_comment); + + ObjectTypeDB::bind_method(_MD("set_resizeable","resizeable"),&GraphNode::set_resizeable); + ObjectTypeDB::bind_method(_MD("is_resizeable"),&GraphNode::is_resizeable); + ObjectTypeDB::bind_method(_MD("get_connection_output_count"),&GraphNode::get_connection_output_count); ObjectTypeDB::bind_method(_MD("get_connection_input_count"),&GraphNode::get_connection_input_count); @@ -675,6 +771,7 @@ void GraphNode::_bind_methods() { ADD_SIGNAL(MethodInfo("dragged",PropertyInfo(Variant::VECTOR2,"from"),PropertyInfo(Variant::VECTOR2,"to"))); ADD_SIGNAL(MethodInfo("raise_request")); ADD_SIGNAL(MethodInfo("close_request")); + ADD_SIGNAL(MethodInfo("resize_request",PropertyInfo(Variant::VECTOR2,"new_minsize"))); BIND_CONSTANT( OVERLAY_DISABLED ); BIND_CONSTANT( OVERLAY_BREAKPOINT ); @@ -688,4 +785,7 @@ GraphNode::GraphNode() { connpos_dirty=true; set_stop_mouse(false); modulate=Color(1,1,1,1); + comment=false; + resizeable=false; + resizing=false; } diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h index e87fb15b93..cbfd34f556 100644 --- a/scene/gui/graph_node.h +++ b/scene/gui/graph_node.h @@ -60,6 +60,12 @@ private: String title; bool show_close; Vector2 offset; + bool comment; + bool resizeable; + + bool resizing; + Vector2 resizing_from; + Vector2 resizing_from_size; Rect2 close_rect; @@ -87,6 +93,9 @@ private: Overlay overlay; Color modulate; + + bool has_point(const Point2& p_point) const; + protected: @@ -144,8 +153,16 @@ public: void set_overlay(Overlay p_overlay); Overlay get_overlay() const; + void set_comment(bool p_enable); + bool is_comment() const; + + void set_resizeable(bool p_enable); + bool is_resizeable() const; + virtual Size2 get_minimum_size() const; + bool is_resizing() const { return resizing; } + GraphNode(); }; diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index 105d919338..63902ef815 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -40,6 +40,7 @@ void ItemList::add_item(const String& p_item,const Ref<Texture>& p_texture,bool item.selectable=p_selectable; item.selected=false; item.disabled=false; + item.tooltip_enabled=true; item.custom_bg=Color(0,0,0,0); items.push_back(item); @@ -57,6 +58,7 @@ void ItemList::add_icon_item(const Ref<Texture>& p_item,bool p_selectable){ item.selectable=p_selectable; item.selected=false; item.disabled=false; + item.tooltip_enabled=true; item.custom_bg=Color(0,0,0,0); items.push_back(item); @@ -82,6 +84,16 @@ String ItemList::get_item_text(int p_idx) const{ } +void ItemList::set_item_tooltip_enabled(int p_idx, const bool p_enabled) { + ERR_FAIL_INDEX(p_idx,items.size()); + items[p_idx].tooltip_enabled = p_enabled; +} + +bool ItemList::is_item_tooltip_enabled(int p_idx) const { + ERR_FAIL_INDEX_V(p_idx,items.size(), false); + return items[p_idx].tooltip_enabled; +} + void ItemList::set_item_tooltip(int p_idx,const String& p_tooltip){ ERR_FAIL_INDEX(p_idx,items.size()); @@ -1198,6 +1210,9 @@ String ItemList::get_tooltip(const Point2& p_pos) const { int closest = get_item_at_pos(p_pos); if (closest!=-1) { + if (!items[closest].tooltip_enabled) { + return ""; + } if (items[closest].tooltip!="") { return items[closest].tooltip; } @@ -1294,6 +1309,9 @@ void ItemList::_bind_methods(){ ObjectTypeDB::bind_method(_MD("set_item_custom_bg_color","idx","custom_bg_color"),&ItemList::set_item_custom_bg_color); ObjectTypeDB::bind_method(_MD("get_item_custom_bg_color","idx"),&ItemList::get_item_custom_bg_color); + ObjectTypeDB::bind_method(_MD("set_item_tooltip_enabled","idx","enable"),&ItemList::set_item_tooltip_enabled); + ObjectTypeDB::bind_method(_MD("is_item_tooltip_enabled","idx"),&ItemList::is_item_tooltip_enabled); + ObjectTypeDB::bind_method(_MD("set_item_tooltip","idx","tooltip"),&ItemList::set_item_tooltip); ObjectTypeDB::bind_method(_MD("get_item_tooltip","idx"),&ItemList::get_item_tooltip); diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index e1902d1c1f..91c74b5291 100644 --- a/scene/gui/item_list.h +++ b/scene/gui/item_list.h @@ -56,6 +56,7 @@ private: bool selectable; bool selected; bool disabled; + bool tooltip_enabled; Variant metadata; String tooltip; Color custom_bg; @@ -135,6 +136,9 @@ public: void set_item_tag_icon(int p_idx,const Ref<Texture>& p_tag_icon); Ref<Texture> get_item_tag_icon(int p_idx) const; + void set_item_tooltip_enabled(int p_idx, const bool p_enabled); + bool is_item_tooltip_enabled(int p_idx) const; + void set_item_tooltip(int p_idx,const String& p_tooltip); String get_item_tooltip(int p_idx) const; diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index fcea12fd6b..90a8af9238 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -193,8 +193,8 @@ void LineEdit::_input_event(InputEvent p_event) { } set_cursor_pos(0); - emit_signal("text_changed",text); - _change_notify("text"); + _text_changed(); + } @@ -215,8 +215,7 @@ void LineEdit::_input_event(InputEvent p_event) { selection_clear(); undo_text = text; text = text.substr(0,cursor_pos); - emit_signal("text_changed",text); - _change_notify("text"); + _text_changed(); } } break; @@ -475,9 +474,7 @@ void LineEdit::_input_event(InputEvent p_event) { selection_delete(); CharType ucodestr[2]={(CharType)k.unicode,0}; append_at_cursor(ucodestr); - emit_signal("text_changed",text); - _change_notify("text"); - + _text_changed(); accept_event(); } @@ -725,8 +722,7 @@ void LineEdit::paste_text() { if(selection.enabled) selection_delete(); append_at_cursor(paste_buffer); - emit_signal("text_changed",text); - _change_notify("text"); + _text_changed(); } @@ -750,9 +746,7 @@ void LineEdit::undo() { set_cursor_pos(old_cursor_pos); } - emit_signal("text_changed",text); - _change_notify("text"); - + _text_changed(); } void LineEdit::shift_selection_check_pre(bool p_shift) { @@ -806,16 +800,6 @@ void LineEdit::set_cursor_at_pixel_pos(int p_x) { pixel_ofs+=char_w; if (pixel_ofs > p_x) { //found what we look for - - - if ( (pixel_ofs-p_x) < (char_w >> 1 ) ) { - - ofs+=1; - } else if ( (pixel_ofs-p_x) > (char_w >> 1 ) ) { - - ofs-=1; - } - break; } @@ -891,8 +875,7 @@ void LineEdit::delete_char() { // set_window_pos(cursor_pos-get_window_length()); } - emit_signal("text_changed",text); - _change_notify("text"); + _text_changed(); } void LineEdit::delete_text(int p_from_column, int p_to_column) { @@ -924,8 +907,7 @@ void LineEdit::delete_text(int p_from_column, int p_to_column) { window_pos=cursor_pos; } - emit_signal("text_changed",text); - _change_notify("text"); + _text_changed(); } void LineEdit::set_text(String p_text) { @@ -940,8 +922,7 @@ void LineEdit::set_text(String p_text) { void LineEdit::clear() { clear_internal(); - emit_signal("text_changed",text); - _change_notify("text"); + _text_changed(); } String LineEdit::get_text() const { @@ -1080,7 +1061,17 @@ Size2 LineEdit::get_minimum_size() const { Size2 min=style->get_minimum_size(); min.height+=font->get_height(); - min.width+=get_constant("minimum_spaces")*font->get_char_size(' ').x; + + //minimum size of text + int space_size = font->get_char_size(' ').x; + int mstext = get_constant("minimum_spaces")*space_size; + + if (expand_to_text_length) { + mstext=MAX(mstext,font->get_string_size(text).x+space_size); //add a spce because some fonts are too exact + } + + min.width+=mstext; + return min; } @@ -1236,6 +1227,29 @@ PopupMenu *LineEdit::get_menu() const { } #endif + +void LineEdit::set_expand_to_text_length(bool p_enabled) { + + expand_to_text_length = p_enabled; + minimum_size_changed(); +} + +bool LineEdit::get_expand_to_text_length() const{ + + return expand_to_text_length; +} + + +void LineEdit::_text_changed() { + + if (expand_to_text_length) + minimum_size_changed(); + + emit_signal("text_changed",text); + _change_notify("text"); + +} + void LineEdit::_bind_methods() { ObjectTypeDB::bind_method(_MD("_toggle_draw_caret"),&LineEdit::_toggle_draw_caret); @@ -1258,7 +1272,9 @@ void LineEdit::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_placeholder_alpha"),&LineEdit::get_placeholder_alpha); ObjectTypeDB::bind_method(_MD("set_cursor_pos","pos"),&LineEdit::set_cursor_pos); ObjectTypeDB::bind_method(_MD("get_cursor_pos"),&LineEdit::get_cursor_pos); - ObjectTypeDB::bind_method(_MD("cursor_set_blink_enabled", "enable"),&LineEdit::cursor_set_blink_enabled); + ObjectTypeDB::bind_method(_MD("set_expand_to_text_length","enabled"),&LineEdit::set_expand_to_text_length); + ObjectTypeDB::bind_method(_MD("get_expand_to_text_length"),&LineEdit::get_expand_to_text_length); + ObjectTypeDB::bind_method(_MD("cursor_set_blink_enabled", "enabled"),&LineEdit::cursor_set_blink_enabled); ObjectTypeDB::bind_method(_MD("cursor_get_blink_enabled"),&LineEdit::cursor_get_blink_enabled); ObjectTypeDB::bind_method(_MD("cursor_set_blink_speed", "blink_speed"),&LineEdit::cursor_set_blink_speed); ObjectTypeDB::bind_method(_MD("cursor_get_blink_speed"),&LineEdit::cursor_get_blink_speed); @@ -1296,6 +1312,7 @@ void LineEdit::_bind_methods() { ADD_PROPERTYNZ( PropertyInfo( Variant::INT, "max_length" ), _SCS("set_max_length"),_SCS("get_max_length") ); ADD_PROPERTYNO( PropertyInfo( Variant::BOOL, "editable" ), _SCS("set_editable"),_SCS("is_editable") ); ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "secret" ), _SCS("set_secret"),_SCS("is_secret") ); + ADD_PROPERTYNO( PropertyInfo( Variant::BOOL, "expand_to_len" ), _SCS("set_expand_to_text_length"),_SCS("get_expand_to_text_length") ); ADD_PROPERTY( PropertyInfo( Variant::INT,"focus_mode", PROPERTY_HINT_ENUM, "None,Click,All" ), _SCS("set_focus_mode"), _SCS("get_focus_mode") ); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret/caret_blink"), _SCS("cursor_set_blink_enabled"), _SCS("cursor_get_blink_enabled"));; ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "caret/caret_blink_speed",PROPERTY_HINT_RANGE,"0.1,10,0.1"), _SCS("cursor_set_blink_speed"),_SCS("cursor_get_blink_speed") ); @@ -1337,7 +1354,7 @@ LineEdit::LineEdit() { menu->add_separator(); menu->add_item(TTR("Undo"),MENU_UNDO,KEY_MASK_CMD|KEY_Z); menu->connect("item_pressed",this,"menu_option"); - + expand_to_text_length=false; } diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h index 112e4ad55e..47d5706bbe 100644 --- a/scene/gui/line_edit.h +++ b/scene/gui/line_edit.h @@ -90,6 +90,11 @@ private: } selection; Timer *caret_blink_timer; + + + void _text_changed(); + bool expand_to_text_length; + bool caret_blink_enabled; bool draw_caret; bool window_has_focus; @@ -169,6 +174,9 @@ public: virtual Size2 get_minimum_size() const; + void set_expand_to_text_length(bool p_len); + bool get_expand_to_text_length() const; + virtual bool is_text_field() const; LineEdit(); ~LineEdit(); diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp index d5d14ad649..3b9ca40bd8 100644 --- a/scene/gui/slider.cpp +++ b/scene/gui/slider.cpp @@ -47,12 +47,15 @@ void Slider::_input_event(InputEvent p_event) { if (mb.button_index==BUTTON_LEFT) { if (mb.pressed) { + Ref<Texture> grabber = get_icon(mouse_inside||has_focus()?"grabber_hilite":"grabber"); grab.pos=orientation==VERTICAL?mb.y:mb.x; - double max = orientation==VERTICAL ? get_size().height : get_size().width ; + double grab_width = (double)grabber->get_size().width; + double grab_height = (double)grabber->get_size().height; + double max = orientation==VERTICAL ? get_size().height - grab_height : get_size().width - grab_width; if (orientation==VERTICAL) - set_unit_value( 1 - ((double)grab.pos / max) ); + set_unit_value( 1 - (((double)grab.pos - (grab_height / 2.0)) / max) ); else - set_unit_value((double)grab.pos / max); + set_unit_value(((double)grab.pos - (grab_width/2.0)) / max); grab.active=true; grab.uvalue=get_unit_value(); } else { diff --git a/scene/gui/texture_progress.cpp b/scene/gui/texture_progress.cpp index 923a35031c..2c576b6ba5 100644 --- a/scene/gui/texture_progress.cpp +++ b/scene/gui/texture_progress.cpp @@ -297,6 +297,7 @@ void TextureProgress::_bind_methods() { TextureProgress::TextureProgress() { mode=FILL_LEFT_TO_RIGHT; + rad_init_angle=0; rad_center_off=Point2(); rad_max_degrees=360; } diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 487f62ed44..20794b2faa 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -171,6 +171,21 @@ String TreeItem::get_text(int p_column) const { } +void TreeItem::set_suffix(int p_column,String p_suffix) { + + ERR_FAIL_INDEX( p_column, cells.size() ); + cells[p_column].suffix=p_suffix; + + _changed_notify(p_column); + +} + +String TreeItem::get_suffix(int p_column) const { + + ERR_FAIL_INDEX_V( p_column, cells.size(), "" ); + return cells[p_column].suffix; + +} void TreeItem::set_icon(int p_column,const Ref<Texture>& p_icon) { @@ -927,8 +942,12 @@ void Tree::draw_item_rect(const TreeItem::Cell& p_cell,const Rect2i& p_rect,cons Ref<Font> font = cache.font; + String text = p_cell.text; + if (p_cell.suffix!=String()) + text+=" "+p_cell.suffix; + rect.pos.y+=Math::floor((rect.size.y-font->get_height())/2.0) +font->get_ascent(); - font->draw(ci,rect.pos,p_cell.text,p_color,rect.size.x); + font->draw(ci,rect.pos,text,p_color,rect.size.x); } @@ -1072,11 +1091,21 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& if (p_item->cells[i].selected && select_mode!=SELECT_ROW) { Rect2i r(item_rect.pos,item_rect.size); + if (p_item->cells[i].text.size() > 0){ + float icon_width = p_item->cells[i].get_icon_size().width; + r.pos.x += icon_width; + r.size.x -= icon_width; + } //r.grow(cache.selected->get_margin(MARGIN_LEFT)); - if (has_focus()) + if (has_focus()){ cache.selected_focus->draw(ci,r ); - else + p_item->set_meta("__focus_rect", Rect2(r.pos,r.size)); + } else { cache.selected->draw(ci,r ); + } + if (text_editor->is_visible()){ + text_editor->set_pos(get_global_pos() + r.pos); + } } if (p_item->cells[i].custom_bg_color) { @@ -1165,6 +1194,9 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& String s = p_item->cells[i].text; s=s.get_slicec(',',option); + if (p_item->cells[i].suffix!=String()) + s+=" "+p_item->cells[i].suffix; + Ref<Texture> downarrow = cache.select_arrow; font->draw(ci, text_pos, s, col,item_rect.size.x-downarrow->get_width() ); @@ -1181,6 +1213,10 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& String valtext = String::num( p_item->cells[i].val, Math::step_decimals( p_item->cells[i].step ) ); //String valtext = rtos( p_item->cells[i].val ); + + if (p_item->cells[i].suffix!=String()) + valtext+=" "+p_item->cells[i].suffix; + font->draw( ci, text_pos, valtext, col, item_rect.size.x-updown->get_width()); if (!p_item->cells[i].editable) @@ -2328,9 +2364,22 @@ void Tree::_input_event(InputEvent p_event) { range_drag_enabled=false; Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE); warp_mouse(range_drag_capture_pos); - } else - edit_selected(); + } else { + if (delayed_text_editor) { + uint64_t diff = OS::get_singleton()->get_ticks_msec() - first_selection_time; + if (diff >= 400 && diff <= 800) + edit_selected(); + // fast double click + else if (diff < 400) { + emit_signal("item_double_clicked"); + } + + first_selection_time = OS::get_singleton()->get_ticks_msec(); + } else { + edit_selected(); + } + } pressing_for_editor=false; } @@ -2468,16 +2517,7 @@ bool Tree::edit_selected() { if (!s->cells[col].editable) return false; - Rect2 rect; - rect.pos.y = get_item_offset(s) - get_scroll().y; - - for(int i=0;i<col;i++) { - - rect.pos.x+=get_column_width(i); - } - - rect.size.width=get_column_width(col); - rect.size.height=compute_item_height(s)+cache.vseparation; + Rect2 rect = s->get_meta("__focus_rect"); popup_edited_item=s; popup_edited_item_col=col; @@ -2848,7 +2888,6 @@ void Tree::item_changed(int p_column,TreeItem *p_item) { void Tree::item_selected(int p_column,TreeItem *p_item) { - if (select_mode==SELECT_MULTI) { if (!p_item->cells[p_column].selectable) @@ -2856,8 +2895,11 @@ void Tree::item_selected(int p_column,TreeItem *p_item) { p_item->cells[p_column].selected=true; //emit_signal("multi_selected",p_item,p_column,true); - NO this is for TreeItem::select + if (delayed_text_editor) + first_selection_time = OS::get_singleton()->get_ticks_msec(); } else { + select_single_item(p_item,root,p_column); } update(); @@ -3128,7 +3170,7 @@ void Tree::ensure_cursor_is_visible() { int screenh=get_size().height-h_scroll->get_combined_minimum_size().height; if (ofs+h>v_scroll->get_val()+screenh) - v_scroll->set_val(ofs-screenh+h); + v_scroll->call_deferred("set_val", ofs-screenh+h); else if (ofs < v_scroll->get_val()) v_scroll->set_val(ofs); } @@ -3503,6 +3545,16 @@ bool Tree::get_allow_rmb_select() const{ return allow_rmb_select; } + +void Tree::set_delayed_text_editor(bool enabled) { + delayed_text_editor = enabled; +} + +bool Tree::is_delayed_text_editor_enabled() const { + return delayed_text_editor; +} + + void Tree::_bind_methods() { ObjectTypeDB::bind_method(_MD("_range_click_timeout"),&Tree::_range_click_timeout); @@ -3556,6 +3608,9 @@ void Tree::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_allow_rmb_select","allow"),&Tree::set_allow_rmb_select); ObjectTypeDB::bind_method(_MD("get_allow_rmb_select"),&Tree::get_allow_rmb_select); + ObjectTypeDB::bind_method(_MD("set_delayed_text_editor","enable"),&Tree::set_delayed_text_editor); + ObjectTypeDB::bind_method(_MD("is_delayed_text_editor_enabled"),&Tree::is_delayed_text_editor_enabled); + ObjectTypeDB::bind_method(_MD("set_single_select_cell_editing_only_when_already_selected","enable"),&Tree::set_single_select_cell_editing_only_when_already_selected); ObjectTypeDB::bind_method(_MD("get_single_select_cell_editing_only_when_already_selected"),&Tree::get_single_select_cell_editing_only_when_already_selected); @@ -3566,6 +3621,7 @@ void Tree::_bind_methods() { ADD_SIGNAL( MethodInfo("item_rmb_selected",PropertyInfo(Variant::VECTOR2,"pos"))); ADD_SIGNAL( MethodInfo("empty_tree_rmb_selected",PropertyInfo(Variant::VECTOR2,"pos"))); ADD_SIGNAL( MethodInfo("item_edited")); + ADD_SIGNAL( MethodInfo("item_double_clicked")); ADD_SIGNAL( MethodInfo("item_collapsed",PropertyInfo(Variant::OBJECT,"item"))); //ADD_SIGNAL( MethodInfo("item_doubleclicked" ) ); ADD_SIGNAL( MethodInfo("button_pressed",PropertyInfo(Variant::OBJECT,"item"),PropertyInfo(Variant::INT,"column"),PropertyInfo(Variant::INT,"id"))); @@ -3669,6 +3725,9 @@ Tree::Tree() { force_select_on_already_selected=false; allow_rmb_select=false; + + first_selection_time = 0; + delayed_text_editor = false; } diff --git a/scene/gui/tree.h b/scene/gui/tree.h index f5100ab5b6..2124dce749 100644 --- a/scene/gui/tree.h +++ b/scene/gui/tree.h @@ -69,6 +69,7 @@ friend class Tree; Ref<Texture> icon; Rect2i icon_region; String text; + String suffix; double min,max,step,val; int icon_max_w; bool expr; @@ -168,6 +169,9 @@ public: void set_text(int p_column,String p_text); String get_text(int p_column) const; + void set_suffix(int p_column,String p_suffix); + String get_suffix(int p_column) const; + void set_icon(int p_column,const Ref<Texture>& p_icon); Ref<Texture> get_icon(int p_column) const; @@ -433,6 +437,9 @@ friend class TreeItem; float last_drag_time; float time_since_motion;*/ + bool delayed_text_editor; + uint64_t first_selection_time; + float drag_speed; float drag_from; float drag_accum; @@ -527,6 +534,9 @@ public: void set_value_evaluator(ValueEvaluator *p_evaluator); + void set_delayed_text_editor(bool enabled); + bool is_delayed_text_editor_enabled() const; + Tree(); ~Tree(); diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 0c7d569334..1892240426 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -37,6 +37,7 @@ VARIANT_ENUM_CAST(Node::PauseMode); VARIANT_ENUM_CAST(Node::NetworkMode); +VARIANT_ENUM_CAST(Node::RPCMode); @@ -494,41 +495,57 @@ bool Node::is_network_master() const { return false; } -void Node::allow_remote_call(const StringName& p_method) { - data.allowed_remote_calls.insert(p_method); -} -void Node::disallow_remote_call(const StringName& p_method){ +void Node::_propagate_network_owner(Node*p_owner) { - data.allowed_remote_calls.erase(p_method); + if (data.network_mode!=NETWORK_MODE_INHERIT) + return; + data.network_owner=p_owner; + for(int i=0;i<data.children.size();i++) { + data.children[i]->_propagate_network_owner(p_owner); + } } -void Node::allow_remote_set(const StringName& p_property){ +/***** RPC CONFIG ********/ - data.allowed_remote_set.insert(p_property); +void Node::rpc_config(const StringName& p_method,RPCMode p_mode) { + if (p_mode==RPC_MODE_DISABLED) { + data.rpc_methods.erase(p_method); + } else { + data.rpc_methods[p_method]=p_mode; + }; } -void Node::disallow_remote_set(const StringName& p_property){ - data.allowed_remote_set.erase(p_property); +void Node::rset_config(const StringName& p_property,RPCMode p_mode) { + + if (p_mode==RPC_MODE_DISABLED) { + data.rpc_properties.erase(p_property); + } else { + data.rpc_properties[p_property]=p_mode; + }; } +/***** RPC FUNCTIONS ********/ -void Node::_propagate_network_owner(Node*p_owner) { +void Node::rpc(const StringName& p_method,VARIANT_ARG_DECLARE) { - if (data.network_mode!=NETWORK_MODE_INHERIT) - return; - data.network_owner=p_owner; - for(int i=0;i<data.children.size();i++) { + VARIANT_ARGPTRS; - data.children[i]->_propagate_network_owner(p_owner); + int argc=0; + for(int i=0;i<VARIANT_ARG_MAX;i++) { + if (argptr[i]->get_type()==Variant::NIL) + break; + argc++; } + + rpcp(0,false,p_method,argptr,argc); } -void Node::remote_call_reliable(const StringName& p_method,VARIANT_ARG_DECLARE) { +void Node::rpc_id(int p_peer_id,const StringName& p_method,VARIANT_ARG_DECLARE) { VARIANT_ARGPTRS; @@ -539,16 +556,26 @@ void Node::remote_call_reliable(const StringName& p_method,VARIANT_ARG_DECLARE) argc++; } - remote_call_reliablep(p_method,argptr,argc); + rpcp(p_peer_id,false,p_method,argptr,argc); } -void Node::remote_call_reliablep(const StringName& p_method,const Variant** p_arg,int p_argcount){ - ERR_FAIL_COND(!is_inside_tree()); - get_tree()->_remote_call(this,true,false,p_method,p_arg,p_argcount); +void Node::rpc_unreliable(const StringName& p_method,VARIANT_ARG_DECLARE) { + + VARIANT_ARGPTRS; + + int argc=0; + for(int i=0;i<VARIANT_ARG_MAX;i++) { + if (argptr[i]->get_type()==Variant::NIL) + break; + argc++; + } + + rpcp(0,true,p_method,argptr,argc); } -void Node::remote_call_unreliable(const StringName& p_method,VARIANT_ARG_DECLARE){ + +void Node::rpc_unreliable_id(int p_peer_id,const StringName& p_method,VARIANT_ARG_DECLARE) { VARIANT_ARGPTRS; @@ -559,35 +586,67 @@ void Node::remote_call_unreliable(const StringName& p_method,VARIANT_ARG_DECLARE argc++; } - remote_call_unreliablep(p_method,argptr,argc); - + rpcp(p_peer_id,true,p_method,argptr,argc); } -void Node::remote_call_unreliablep(const StringName& p_method,const Variant** p_arg,int p_argcount){ - ERR_FAIL_COND(!is_inside_tree()); +Variant Node::_rpc_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { - get_tree()->_remote_call(this,false,false,p_method,p_arg,p_argcount); -} + if (p_argcount<1) { + r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; + r_error.argument=1; + return Variant(); + } -void Node::remote_set_reliable(const StringName& p_property,const Variant& p_value) { + if (p_args[0]->get_type()!=Variant::STRING) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::STRING; + return Variant(); + } + StringName method = *p_args[0]; - ERR_FAIL_COND(!is_inside_tree()); - const Variant *ptr=&p_value; + rpcp(0,false,method,&p_args[1],p_argcount-1); - get_tree()->_remote_call(this,true,true,p_property,&ptr,1); + r_error.error=Variant::CallError::CALL_OK; + return Variant(); } -void Node::remote_set_unreliable(const StringName& p_property,const Variant& p_value){ - ERR_FAIL_COND(!is_inside_tree()); - const Variant *ptr=&p_value; +Variant Node::_rpc_id_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { + + if (p_argcount<2) { + r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; + r_error.argument=2; + return Variant(); + } - get_tree()->_remote_call(this,false,true,p_property,&ptr,1); + if (p_args[0]->get_type()!=Variant::INT) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::INT; + return Variant(); + } + + if (p_args[1]->get_type()!=Variant::STRING) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=1; + r_error.expected=Variant::STRING; + return Variant(); + } + + int peer_id = *p_args[0]; + StringName method = *p_args[1]; + + rpcp(peer_id,false,method,&p_args[2],p_argcount-2); + + r_error.error=Variant::CallError::CALL_OK; + return Variant(); } -Variant Node::_remote_call_reliable_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { + +Variant Node::_rpc_unreliable_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { if (p_argcount<1) { r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; @@ -604,12 +663,46 @@ Variant Node::_remote_call_reliable_bind(const Variant** p_args, int p_argcount, StringName method = *p_args[0]; - remote_call_reliablep(method,&p_args[1],p_argcount-1); + rpcp(0,true,method,&p_args[1],p_argcount-1); + r_error.error=Variant::CallError::CALL_OK; + return Variant(); } -Variant Node::_remote_call_unreliable_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { +Variant Node::_rpc_unreliable_id_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { + + if (p_argcount<2) { + r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; + r_error.argument=2; + return Variant(); + } + + if (p_args[0]->get_type()!=Variant::INT) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_error.expected=Variant::INT; + return Variant(); + } + + if (p_args[1]->get_type()!=Variant::STRING) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=1; + r_error.expected=Variant::STRING; + return Variant(); + } + + int peer_id = *p_args[0]; + StringName method = *p_args[1]; + + rpcp(peer_id,true,method,&p_args[2],p_argcount-2); + + r_error.error=Variant::CallError::CALL_OK; + return Variant(); +} + +#if 0 +Variant Node::_rpc_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { if (p_argcount<1) { r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; @@ -626,8 +719,356 @@ Variant Node::_remote_call_unreliable_bind(const Variant** p_args, int p_argcoun StringName method = *p_args[0]; - remote_call_unreliablep(method,&p_args[1],p_argcount-1); + rpcp(method,&p_args[1],p_argcount-1); + r_error.error=Variant::CallError::CALL_OK; + return Variant(); +} + +#endif +void Node::rpcp(int p_peer_id,bool p_unreliable,const StringName& p_method,const Variant** p_arg,int p_argcount) { + + ERR_FAIL_COND(!is_inside_tree()); + + bool skip_rpc=false; + + if (p_peer_id==0 || p_peer_id==get_tree()->get_network_unique_id() || (p_peer_id<0 && p_peer_id!=-get_tree()->get_network_unique_id())) { + //check that send mode can use local call + + + bool call_local=false; + + + + Map<StringName,RPCMode>::Element *E = data.rpc_methods.find(p_method); + if (E) { + + switch(E->get()) { + + case RPC_MODE_DISABLED: { + //do nothing + } break; + case RPC_MODE_REMOTE: { + //do nothing also, no need to call local + } break; + case RPC_MODE_SYNC: { + //call it, sync always results in call + call_local=true; + } break; + case RPC_MODE_MASTER: { + call_local=is_network_master(); + if (call_local) { + skip_rpc=true; //no other master so.. + } + } break; + case RPC_MODE_SLAVE: { + call_local=!is_network_master(); + } break; + + } + } + + + if (call_local) { + Variant::CallError ce; + call(p_method,p_arg,p_argcount,ce); + if (ce.error!=Variant::CallError::CALL_OK) { + String error = Variant::get_call_error_text(this,p_method,p_arg,p_argcount,ce); + error="rpc() aborted in local call: - "+error; + ERR_PRINTS(error); + return; + } + } else if (get_script_instance()){ + //attempt with script + ScriptInstance::RPCMode rpc_mode = get_script_instance()->get_rpc_mode(p_method); + + switch(rpc_mode) { + + case ScriptInstance::RPC_MODE_DISABLED: { + //do nothing + } break; + case ScriptInstance::RPC_MODE_REMOTE: { + //do nothing also, no need to call local + } break; + case ScriptInstance::RPC_MODE_SYNC: { + //call it, sync always results in call + call_local=true; + } break; + case ScriptInstance::RPC_MODE_MASTER: { + call_local=is_network_master(); + if (call_local) { + skip_rpc=true; //no other master so.. + } + } break; + case ScriptInstance::RPC_MODE_SLAVE: { + call_local=!is_network_master(); + } break; + } + + if (call_local) { + Variant::CallError ce; + ce.error=Variant::CallError::CALL_OK; + get_script_instance()->call(p_method,p_arg,p_argcount,ce); + if (ce.error!=Variant::CallError::CALL_OK) { + String error = Variant::get_call_error_text(this,p_method,p_arg,p_argcount,ce); + error="rpc() aborted in script local call: - "+error; + ERR_PRINTS(error); + return; + } + } + } + } + + if (skip_rpc) + return; + + + get_tree()->_rpc(this,p_peer_id,p_unreliable,false,p_method,p_arg,p_argcount); + +} + + +/******** RSET *********/ + + +void Node::rsetp(int p_peer_id,bool p_unreliable,const StringName& p_property,const Variant& p_value) { + + ERR_FAIL_COND(!is_inside_tree()); + + bool skip_rset=false; + + if (p_peer_id==0 || p_peer_id==get_tree()->get_network_unique_id() || (p_peer_id<0 && p_peer_id!=-get_tree()->get_network_unique_id())) { + //check that send mode can use local call + + + bool set_local=false; + + Map<StringName,RPCMode>::Element *E = data.rpc_properties.find(p_property); + if (E) { + + switch(E->get()) { + + case RPC_MODE_DISABLED: { + //do nothing + } break; + case RPC_MODE_REMOTE: { + //do nothing also, no need to call local + } break; + case RPC_MODE_SYNC: { + //call it, sync always results in call + set_local=true; + } break; + case RPC_MODE_MASTER: { + set_local=is_network_master(); + if (set_local) { + skip_rset=true; + } + + } break; + case RPC_MODE_SLAVE: { + set_local=!is_network_master(); + } break; + + } + } + + + if (set_local) { + bool valid; + set(p_property,p_value,&valid); + + if (!valid) { + String error="rset() aborted in local set, property not found: - "+String(p_property); + ERR_PRINTS(error); + return; + } + } else if (get_script_instance()){ + //attempt with script + ScriptInstance::RPCMode rpc_mode = get_script_instance()->get_rset_mode(p_property); + + switch(rpc_mode) { + + case ScriptInstance::RPC_MODE_DISABLED: { + //do nothing + } break; + case ScriptInstance::RPC_MODE_REMOTE: { + //do nothing also, no need to call local + } break; + case ScriptInstance::RPC_MODE_SYNC: { + //call it, sync always results in call + set_local=true; + } break; + case ScriptInstance::RPC_MODE_MASTER: { + set_local=is_network_master(); + if (set_local) { + skip_rset=true; + } + } break; + case ScriptInstance::RPC_MODE_SLAVE: { + set_local=!is_network_master(); + } break; + } + + if (set_local) { + + bool valid = get_script_instance()->set(p_property,p_value); + + if (!valid) { + String error="rset() aborted in local script set, property not found: - "+String(p_property); + ERR_PRINTS(error); + return; + } + } + + } + } + + if (skip_rset) + return; + + const Variant*vptr = &p_value; + + get_tree()->_rpc(this,p_peer_id,p_unreliable,true,p_property,&vptr,1); + +} + + + +void Node::rset(const StringName& p_property,const Variant& p_value) { + + rsetp(0,false,p_property,p_value); + +} + +void Node::rset_id(int p_peer_id,const StringName& p_property,const Variant& p_value) { + + rsetp(p_peer_id,false,p_property,p_value); + +} + +void Node::rset_unreliable(const StringName& p_property,const Variant& p_value) { + + rsetp(0,true,p_property,p_value); + +} + +void Node::rset_unreliable_id(int p_peer_id,const StringName& p_property,const Variant& p_value) { + + rsetp(p_peer_id,true,p_property,p_value); + +} + +//////////// end of rpc + +bool Node::can_call_rpc(const StringName& p_method) const { + + const Map<StringName,RPCMode>::Element *E = data.rpc_methods.find(p_method); + if (E) { + + switch(E->get()) { + + case RPC_MODE_DISABLED: { + return false; + } break; + case RPC_MODE_REMOTE: { + return true; + } break; + case RPC_MODE_SYNC: { + return true; + } break; + case RPC_MODE_MASTER: { + return is_network_master(); + } break; + case RPC_MODE_SLAVE: { + return !is_network_master(); + } break; + } + } + + + if (get_script_instance()){ + //attempt with script + ScriptInstance::RPCMode rpc_mode = get_script_instance()->get_rpc_mode(p_method); + + switch(rpc_mode) { + + case ScriptInstance::RPC_MODE_DISABLED: { + return false; + } break; + case ScriptInstance::RPC_MODE_REMOTE: { + return true; + } break; + case ScriptInstance::RPC_MODE_SYNC: { + return true; + } break; + case ScriptInstance::RPC_MODE_MASTER: { + return is_network_master(); + } break; + case ScriptInstance::RPC_MODE_SLAVE: { + return !is_network_master(); + } break; + } + + } + + ERR_PRINTS("RPC on unauthorized method attempted: "+String(p_method)+" on base: "+String(Variant(this))); + return false; +} + +bool Node::can_call_rset(const StringName& p_property) const { + + const Map<StringName,RPCMode>::Element *E = data.rpc_properties.find(p_property); + if (E) { + + switch(E->get()) { + + case RPC_MODE_DISABLED: { + return false; + } break; + case RPC_MODE_REMOTE: { + return true; + } break; + case RPC_MODE_SYNC: { + return true; + } break; + case RPC_MODE_MASTER: { + return is_network_master(); + } break; + case RPC_MODE_SLAVE: { + return !is_network_master(); + } break; + } + } + + + if (get_script_instance()){ + //attempt with script + ScriptInstance::RPCMode rpc_mode = get_script_instance()->get_rset_mode(p_property); + + switch(rpc_mode) { + + case ScriptInstance::RPC_MODE_DISABLED: { + return false; + } break; + case ScriptInstance::RPC_MODE_REMOTE: { + return true; + } break; + case ScriptInstance::RPC_MODE_SYNC: { + return true; + } break; + case ScriptInstance::RPC_MODE_MASTER: { + return is_network_master(); + } break; + case ScriptInstance::RPC_MODE_SLAVE: { + return !is_network_master(); + } break; + } + + } + + ERR_PRINTS("RSET on unauthorized property attempted: "+String(p_property)+" on base: "+String(Variant(this))); + + return false; } @@ -2444,11 +2885,9 @@ void Node::_bind_methods() { ObjectTypeDB::bind_method(_MD("is_network_master"),&Node::is_network_master); - ObjectTypeDB::bind_method(_MD("allow_remote_call","method"),&Node::allow_remote_call); - ObjectTypeDB::bind_method(_MD("disallow_remote_call","method"),&Node::disallow_remote_call); + ObjectTypeDB::bind_method(_MD("rpc_config","method","mode"),&Node::rpc_config); + ObjectTypeDB::bind_method(_MD("rset_config","property","mode"),&Node::rset_config); - ObjectTypeDB::bind_method(_MD("allow_remote_set","method"),&Node::allow_remote_set); - ObjectTypeDB::bind_method(_MD("disallow_remote_set","method"),&Node::disallow_remote_set); #ifdef TOOLS_ENABLED ObjectTypeDB::bind_method(_MD("_set_import_path","import_path"),&Node::set_import_path); @@ -2459,19 +2898,29 @@ void Node::_bind_methods() { { MethodInfo mi; - mi.name="remote_call_reliable"; + mi.arguments.push_back( PropertyInfo( Variant::STRING, "method")); - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"remote_call_reliable",&Node::_remote_call_reliable_bind,mi); + mi.name="rpc"; + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc",&Node::_rpc_bind,mi); + mi.name="rpc_unreliable"; + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc_unreliable",&Node::_rpc_unreliable_bind,mi); + + mi.arguments.push_front( PropertyInfo( Variant::INT, "peer_id") ); + + mi.name="rpc_id"; + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc_id",&Node::_rpc_id_bind,mi); + mi.name="rpc_unreliable_id"; + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc_unreliable_id",&Node::_rpc_unreliable_id_bind,mi); - mi.name="remote_call_unreliable"; - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"remote_call_unreliable",&Node::_remote_call_unreliable_bind,mi); } - ObjectTypeDB::bind_method(_MD("remote_set_reliable","property","value:Variant"),&Node::remote_set_reliable); - ObjectTypeDB::bind_method(_MD("remote_set_unreliable","property","value:Variant"),&Node::remote_set_unreliable); + ObjectTypeDB::bind_method(_MD("rset","property","value:Variant"),&Node::rset); + ObjectTypeDB::bind_method(_MD("rset_id","peer_id","property","value:Variant"),&Node::rset_id); + ObjectTypeDB::bind_method(_MD("rset_unreliable","property","value:Variant"),&Node::rset_unreliable); + ObjectTypeDB::bind_method(_MD("rset_unreliable_id","peer_id","property","value:Variant"),&Node::rset_unreliable_id); BIND_CONSTANT( NOTIFICATION_ENTER_TREE ); @@ -2491,7 +2940,15 @@ void Node::_bind_methods() { BIND_CONSTANT( NOTIFICATION_PATH_CHANGED); + BIND_CONSTANT( NETWORK_MODE_INHERIT ); + BIND_CONSTANT( NETWORK_MODE_MASTER ); + BIND_CONSTANT( NETWORK_MODE_SLAVE ); + BIND_CONSTANT( RPC_MODE_DISABLED ); + BIND_CONSTANT( RPC_MODE_REMOTE ); + BIND_CONSTANT( RPC_MODE_SYNC ); + BIND_CONSTANT( RPC_MODE_MASTER ); + BIND_CONSTANT( RPC_MODE_SLAVE ); BIND_CONSTANT( PAUSE_MODE_INHERIT ); BIND_CONSTANT( PAUSE_MODE_STOP ); @@ -2506,7 +2963,6 @@ void Node::_bind_methods() { //ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/input" ), _SCS("set_process_input"),_SCS("is_processing_input" ) ); //ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/unhandled_input" ), _SCS("set_process_unhandled_input"),_SCS("is_processing_unhandled_input" ) ); ADD_PROPERTYNZ( PropertyInfo( Variant::INT, "process/pause_mode",PROPERTY_HINT_ENUM,"Inherit,Stop,Process" ), _SCS("set_pause_mode"),_SCS("get_pause_mode" ) ); - ADD_PROPERTYNZ( PropertyInfo( Variant::INT, "process/network_mode",PROPERTY_HINT_ENUM,"Inherit,Master,Slave" ), _SCS("set_network_mode"),_SCS("get_network_mode" ) ); ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "editor/display_folded",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR ), _SCS("set_display_folded"),_SCS("is_displayed_folded" ) ); BIND_VMETHOD( MethodInfo("_process",PropertyInfo(Variant::REAL,"delta")) ); diff --git a/scene/main/node.h b/scene/main/node.h index 761725286e..3568da2ab0 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -60,6 +60,15 @@ public: NETWORK_MODE_SLAVE }; + enum RPCMode { + + RPC_MODE_DISABLED, //no rpc for this method, calls to this will be blocked (default) + RPC_MODE_REMOTE, // using rpc() on it will call method / set property in all other peers + RPC_MODE_SYNC, // using rpc() on it will call method / set property in all other peers and locally + RPC_MODE_MASTER, // usinc rpc() on it will call method on wherever the master is, be it local or remote + RPC_MODE_SLAVE, // usinc rpc() on it will call method for all slaves, be it local or remote + }; + struct Comparator { bool operator()(const Node* p_a, const Node* p_b) const { return p_b->is_greater_than(p_a); } @@ -75,6 +84,7 @@ private: }; + struct Data { String filename; @@ -108,8 +118,8 @@ private: NetworkMode network_mode; Node *network_owner; - Set<StringName> allowed_remote_calls; - Set<StringName> allowed_remote_set; + Map<StringName,RPCMode> rpc_methods; + Map<StringName,RPCMode> rpc_properties; // variables used to properly sort the node when processing, ignored otherwise @@ -160,8 +170,10 @@ private: Array _get_children() const; Array _get_groups() const; - Variant _remote_call_reliable_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error); - Variant _remote_call_unreliable_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error); + Variant _rpc_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error); + Variant _rpc_unreliable_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error); + Variant _rpc_id_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error); + Variant _rpc_unreliable_id_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error); friend class SceneTree; @@ -358,20 +370,25 @@ public: NetworkMode get_network_mode() const; bool is_network_master() const; - void allow_remote_call(const StringName& p_method); - void disallow_remote_call(const StringName& p_method); + void rpc_config(const StringName& p_method,RPCMode p_mode); // config a local method for RPC + void rset_config(const StringName& p_property,RPCMode p_mode); // config a local property for RPC + + void rpc(const StringName& p_method,VARIANT_ARG_LIST); //rpc call, honors RPCMode + void rpc_unreliable(const StringName& p_method,VARIANT_ARG_LIST); //rpc call, honors RPCMode + void rpc_id(int p_peer_id,const StringName& p_method,VARIANT_ARG_LIST); //rpc call, honors RPCMode + void rpc_unreliable_id(int p_peer_id,const StringName& p_method,VARIANT_ARG_LIST); //rpc call, honors RPCMode - void allow_remote_set(const StringName& p_property); - void disallow_remote_set(const StringName& p_property); + void rpcp(int p_peer_id,bool p_unreliable,const StringName& p_method,const Variant** p_arg,int p_argcount); - void remote_call_reliable(const StringName& p_method,VARIANT_ARG_DECLARE); - void remote_call_reliablep(const StringName& p_method,const Variant** p_arg,int p_argcount); + void rset(const StringName& p_property, const Variant& p_value); //remote set call, honors RPCMode + void rset_unreliable(const StringName& p_property,const Variant& p_value); //remote set call, honors RPCMode + void rset_id(int p_peer_id,const StringName& p_property,const Variant& p_value); //remote set call, honors RPCMode + void rset_unreliable_id(int p_peer_id,const StringName& p_property,const Variant& p_value); //remote set call, honors RPCMode - void remote_call_unreliable(const StringName& p_method,VARIANT_ARG_DECLARE); - void remote_call_unreliablep(const StringName& p_method,const Variant** p_arg,int p_argcount); + void rsetp(int p_peer_id,bool p_unreliable,const StringName& p_property,const Variant& p_value); - void remote_set_reliable(const StringName& p_property,const Variant& p_value); - void remote_set_unreliable(const StringName& p_property,const Variant& p_value); + bool can_call_rpc(const StringName& p_method) const; + bool can_call_rset(const StringName& p_property) const; Node(); diff --git a/scene/main/scene_main_loop.cpp b/scene/main/scene_main_loop.cpp index 6af2b9b169..e3472c074a 100644 --- a/scene/main/scene_main_loop.cpp +++ b/scene/main/scene_main_loop.cpp @@ -44,7 +44,7 @@ #include "scene/resources/packed_scene.h" #include "scene/resources/material.h" #include "scene/resources/mesh.h" - +#include "io/marshalls.h" void SceneTreeTimer::_bind_methods() { @@ -1657,25 +1657,45 @@ Ref<SceneTreeTimer> SceneTree::create_timer(float p_delay_sec) { return stt; } -void SceneTree::_network_peer_connected(const StringName& p_id) { +void SceneTree::_network_peer_connected(int p_id) { connected_peers.insert(p_id); path_get_cache.insert(p_id,PathGetCache()); + + emit_signal("network_peer_connected",p_id); } -void SceneTree::_network_peer_disconnected(const StringName& p_id) { +void SceneTree::_network_peer_disconnected(int p_id) { connected_peers.erase(p_id); path_get_cache.erase(p_id); //I no longer need your cache, sorry emit_signal("network_peer_disconnected",p_id); } +void SceneTree::_connected_to_server() { + + emit_signal("connected_to_server"); +} + +void SceneTree::_connection_failed() { + + emit_signal("connection_failed"); +} + +void SceneTree::_server_disconnected() { + + emit_signal("server_disconnected"); +} + void SceneTree::set_network_peer(const Ref<NetworkedMultiplayerPeer>& p_network_peer) { if (network_peer.is_valid()) { network_peer->disconnect("peer_connected",this,"_network_peer_connected"); network_peer->disconnect("peer_disconnected",this,"_network_peer_disconnected"); + network_peer->disconnect("connection_succeeded",this,"_connected_to_server"); + network_peer->disconnect("connection_failed",this,"_connection_failed"); + network_peer->disconnect("server_disconnected",this,"_server_disconnected"); connected_peers.clear(); path_get_cache.clear(); path_send_cache.clear(); @@ -1690,6 +1710,9 @@ void SceneTree::set_network_peer(const Ref<NetworkedMultiplayerPeer>& p_network_ if (network_peer.is_valid()) { network_peer->connect("peer_connected",this,"_network_peer_connected"); network_peer->connect("peer_disconnected",this,"_network_peer_disconnected"); + network_peer->connect("connection_succeeded",this,"_connected_to_server"); + network_peer->connect("connection_failed",this,"_connection_failed"); + network_peer->connect("server_disconnected",this,"_server_disconnected"); } } @@ -1700,7 +1723,27 @@ bool SceneTree::is_network_server() const { } -void SceneTree::_remote_call(Node* p_from, bool p_reliable, bool p_set, const StringName& p_name, const Variant** p_arg, int p_argcount) { +int SceneTree::get_network_unique_id() const { + + ERR_FAIL_COND_V(!network_peer.is_valid(),0); + return network_peer->get_unique_id(); +} + +void SceneTree::set_refuse_new_network_connections(bool p_refuse) { + ERR_FAIL_COND(!network_peer.is_valid()); + network_peer->set_refuse_new_connections(p_refuse); +} + +bool SceneTree::is_refusing_new_network_connections() const { + + ERR_FAIL_COND_V(!network_peer.is_valid(),false); + + return network_peer->is_refusing_new_connections(); + +} + + +void SceneTree::_rpc(Node* p_from,int p_to,bool p_unreliable,bool p_set,const StringName& p_name,const Variant** p_arg,int p_argcount) { if (network_peer.is_null()) { ERR_EXPLAIN("Attempt to remote call/set when networking is not active in SceneTree."); @@ -1717,28 +1760,26 @@ void SceneTree::_remote_call(Node* p_from, bool p_reliable, bool p_set, const St ERR_FAIL(); } - NodePath from_path = p_from->get_path(); - ERR_FAIL_COND(from_path.is_empty()); + if (p_argcount>255) { + ERR_EXPLAIN("Too many arguments >255."); + ERR_FAIL(); + } - //create base packet - Array message; + if (p_to!=0 && !connected_peers.has(ABS(p_to))) { + if (p_to==get_network_unique_id()) { + ERR_EXPLAIN("Attempt to remote call/set yourself! unique ID: "+itos(get_network_unique_id())); + } else { + ERR_EXPLAIN("Attempt to remote call unexisting ID: "+itos(p_to)); - message.resize(3+p_argcount); //alloc size for args + } - //set message type - if (p_set) { - message[0]=NETWORK_COMMAND_REMOTE_SET; - } else { - message[0]=NETWORK_COMMAND_REMOTE_CALL; + ERR_FAIL(); } - //set message name - message[2]=p_name; + NodePath from_path = p_from->get_path(); + ERR_FAIL_COND(from_path.is_empty()); + - //set message args - for(int i=0;i<p_argcount;i++) { - message[3+i]=*p_arg[i]; - } //see if the path is cached PathSentCache *psc = path_send_cache.getptr(from_path); @@ -1750,14 +1791,67 @@ void SceneTree::_remote_call(Node* p_from, bool p_reliable, bool p_set, const St } + + //create base packet, lots of harcode because it must be tight + + int ofs=0; + +#define MAKE_ROOM(m_amount) if (packet_cache.size() < m_amount) packet_cache.resize(m_amount); + + //encode type + MAKE_ROOM(1); + packet_cache[0]=p_set ? NETWORK_COMMAND_REMOTE_SET : NETWORK_COMMAND_REMOTE_CALL; + ofs+=1; + + //encode ID + MAKE_ROOM(ofs+4); + encode_uint32(psc->id,&packet_cache[ofs]); + ofs+=4; + + //encode function name + CharString name = String(p_name).utf8(); + int len = encode_cstring(name.get_data(),NULL); + MAKE_ROOM(ofs+len); + encode_cstring(name.get_data(),&packet_cache[ofs]); + ofs+=len; + + if (p_set) { + //set argument + Error err = encode_variant(*p_arg[0],NULL,len); + ERR_FAIL_COND(err!=OK); + MAKE_ROOM(ofs+len); + encode_variant(*p_arg[0],&packet_cache[ofs],len); + ofs+=len; + + } else { + //call arguments + MAKE_ROOM(ofs+1); + packet_cache[ofs]=p_argcount; + ofs+=1; + for(int i=0;i<p_argcount;i++) { + Error err = encode_variant(*p_arg[i],NULL,len); + ERR_FAIL_COND(err!=OK); + MAKE_ROOM(ofs+len); + encode_variant(*p_arg[i],&packet_cache[ofs],len); + ofs+=len; + } + + } + //see if all peers have cached path (is so, call can be fast) bool has_all_peers=true; - List<StringName> peers_to_add; //if one is missing, take note to add it + List<int> peers_to_add; //if one is missing, take note to add it - for (Set<StringName>::Element *E=connected_peers.front();E;E=E->next()) { + for (Set<int>::Element *E=connected_peers.front();E;E=E->next()) { - Map<StringName,bool>::Element *F = psc->confirmed_peers.find(E->get()); + if (p_to<0 && E->get()==-p_to) + continue; //continue, excluded + + if (p_to>0 && E->get()!=p_to) + continue; //continue, not for this peer + + Map<int,bool>::Element *F = psc->confirmed_peers.find(E->get()); if (!F || F->get()==false) { //path was not cached, or was cached but is unconfirmed @@ -1767,87 +1861,114 @@ void SceneTree::_remote_call(Node* p_from, bool p_reliable, bool p_set, const St } has_all_peers=false; - break; } } //those that need to be added, send a message for this - for (List<StringName>::Element *E=peers_to_add.front();E;E=E->next()) { + for (List<int>::Element *E=peers_to_add.front();E;E=E->next()) { + + //encode function name + CharString pname = String(from_path).utf8(); + int len = encode_cstring(pname.get_data(),NULL); - Array add_path_message; - add_path_message.resize(3); - add_path_message[0]=NETWORK_COMMAND_SIMPLIFY_PATH; - add_path_message[1]=from_path; - add_path_message[2]=psc->id; + Vector<uint8_t> packet; + + packet.resize(1+4+len); + packet[0]=NETWORK_COMMAND_SIMPLIFY_PATH; + encode_uint32(psc->id,&packet[1]); + encode_cstring(pname.get_data(),&packet[5]); network_peer->set_target_peer(E->get()); //to all of you - network_peer->set_transfer_mode(NetworkedMultiplayerPeer::TRANSFER_MODE_ORDERED); - network_peer->put_var(add_path_message); //a message with love + network_peer->set_transfer_mode(NetworkedMultiplayerPeer::TRANSFER_MODE_RELIABLE); + network_peer->put_packet(packet.ptr(),packet.size()); psc->confirmed_peers.insert(E->get(),false); //insert into confirmed, but as false since it was not confirmed } //take chance and set transfer mode, since all send methods will use it - network_peer->set_transfer_mode(p_reliable ? NetworkedMultiplayerPeer::TRANSFER_MODE_ORDERED : NetworkedMultiplayerPeer::TRANSFER_MODE_UNRELIABLE); + network_peer->set_transfer_mode(p_unreliable ? NetworkedMultiplayerPeer::TRANSFER_MODE_UNRELIABLE : NetworkedMultiplayerPeer::TRANSFER_MODE_RELIABLE); if (has_all_peers) { //they all have verified paths, so send fast - message[1]=psc->id; - - network_peer->set_target_peer(StringName()); //to all of you - network_peer->put_var(message); //a message with love + network_peer->set_target_peer(p_to); //to all of you + network_peer->put_packet(packet_cache.ptr(),ofs); //a message with love } else { //not all verified path, so send one by one - for (Set<StringName>::Element *E=connected_peers.front();E;E=E->next()) { - Map<StringName,bool>::Element *F = psc->confirmed_peers.find(E->get()); + //apend path at the end, since we will need it for some packets + CharString pname = String(from_path).utf8(); + int path_len = encode_cstring(pname.get_data(),NULL); + MAKE_ROOM(ofs+path_len); + encode_cstring(pname.get_data(),&packet_cache[ofs]); + + + for (Set<int>::Element *E=connected_peers.front();E;E=E->next()) { + + if (p_to<0 && E->get()==-p_to) + continue; //continue, excluded + + if (p_to>0 && E->get()!=p_to) + continue; //continue, not for this peer + + Map<int,bool>::Element *F = psc->confirmed_peers.find(E->get()); ERR_CONTINUE(!F);//should never happen network_peer->set_target_peer(E->get()); //to this one specifically if (F->get()==true) { //this one confirmed path, so use id - message[1]=psc->id; + encode_uint32(psc->id,&packet_cache[1]); + network_peer->put_packet(packet_cache.ptr(),ofs); } else { //this one did not confirm path yet, so use entire path (sorry!) - message[1]=from_path; + encode_uint32(0x80000000|ofs,&packet_cache[1]); //offset to path and flag + network_peer->put_packet(packet_cache.ptr(),ofs+path_len); } - network_peer->put_var(message); } } } -void SceneTree::_network_process_packet(const StringName& p_from,const Array& p_packet) { +void SceneTree::_network_process_packet(int p_from, const uint8_t* p_packet, int p_packet_len) { - ERR_FAIL_COND(p_packet.empty()); + ERR_FAIL_COND(p_packet_len<5); - int packet_type = p_packet[0]; + uint8_t packet_type = p_packet[0]; switch(packet_type) { case NETWORK_COMMAND_REMOTE_CALL: case NETWORK_COMMAND_REMOTE_SET: { - ERR_FAIL_COND(p_packet.size()<3); - Variant target = p_packet[1]; - Node* node=NULL; + ERR_FAIL_COND(p_packet_len<5); + uint32_t target = decode_uint32(&p_packet[1]); + + + Node *node=NULL; + + if (target&0x80000000) { + + int ofs = target&0x7FFFFFFF; + ERR_FAIL_COND(ofs>=p_packet_len); + + String paths; + paths.parse_utf8((const char*)&p_packet[ofs],p_packet_len-ofs); + + NodePath np = paths; - if (target.get_type()==Variant::NODE_PATH) { - NodePath np = target; node = get_root()->get_node(np); if (node==NULL) { ERR_EXPLAIN("Failed to get path from RPC: "+String(np)); ERR_FAIL_COND(node==NULL); } - } else if (target.get_type()==Variant::INT) { + } else { int id = target; - Map<StringName,PathGetCache>::Element *E=path_get_cache.find(p_from); + Map<int,PathGetCache>::Element *E=path_get_cache.find(p_from); ERR_FAIL_COND(!E); Map<int,PathGetCache::NodeInfo>::Element *F=E->get().nodes.find(id); @@ -1863,23 +1984,51 @@ void SceneTree::_network_process_packet(const StringName& p_from,const Array& p_ } - } else { - ERR_FAIL(); } - StringName name = p_packet[2]; + ERR_FAIL_COND(p_packet_len<6); + + //detect cstring end + int len_end=5; + for(;len_end<p_packet_len;len_end++) { + if (p_packet[len_end]==0) { + break; + } + } + + ERR_FAIL_COND(len_end>=p_packet_len); + + StringName name = String::utf8((const char*)&p_packet[5]); + + + if (packet_type==NETWORK_COMMAND_REMOTE_CALL) { - int argc = p_packet.size()-3; + if (!node->can_call_rpc(name)) + return; + + int ofs = len_end+1; + + ERR_FAIL_COND(ofs>=p_packet_len); + + int argc = p_packet[ofs]; Vector<Variant> args; Vector<const Variant*> argp; args.resize(argc); argp.resize(argc); + ofs++; + for(int i=0;i<argc;i++) { - args[i]=p_packet[3+i]; - argp[i]=&args[i]; + + ERR_FAIL_COND(ofs>=p_packet_len); + int vlen; + Error err = decode_variant(args[i],&p_packet[ofs],p_packet_len-ofs,&vlen); + ERR_FAIL_COND(err!=OK); + //args[i]=p_packet[3+i]; + argp[i]=&args[i]; + ofs+=vlen; } Variant::CallError ce; @@ -1887,14 +2036,22 @@ void SceneTree::_network_process_packet(const StringName& p_from,const Array& p_ node->call(name,argp.ptr(),argc,ce); if (ce.error!=Variant::CallError::CALL_OK) { String error = Variant::get_call_error_text(node,name,argp.ptr(),argc,ce); + error="RPC - "+error; ERR_PRINTS(error); } } else { + if (!node->can_call_rset(name)) + return; + + int ofs = len_end+1; + + ERR_FAIL_COND(ofs>=p_packet_len); + + Variant value; + decode_variant(value,&p_packet[ofs],p_packet_len-ofs); - ERR_FAIL_COND(p_packet.size()!=4); - Variant value = p_packet[3]; bool valid; node->set(name,value,&valid); @@ -1907,9 +2064,13 @@ void SceneTree::_network_process_packet(const StringName& p_from,const Array& p_ } break; case NETWORK_COMMAND_SIMPLIFY_PATH: { - ERR_FAIL_COND(p_packet.size()!=3); - NodePath path = p_packet[1]; - int id = p_packet[2]; + ERR_FAIL_COND(p_packet_len<5); + int id = decode_uint32(&p_packet[1]); + + String paths; + paths.parse_utf8((const char*)&p_packet[5],p_packet_len-5); + + NodePath path = paths; if (!path_get_cache.has(p_from)) { path_get_cache[p_from]=PathGetCache(); @@ -1921,24 +2082,36 @@ void SceneTree::_network_process_packet(const StringName& p_from,const Array& p_ path_get_cache[p_from].nodes[id]=ni; - network_peer->set_transfer_mode(NetworkedMultiplayerPeer::TRANSFER_MODE_ORDERED); - network_peer->set_target_peer(p_from); - Array message; - message.resize(2); - message[0]=NETWORK_COMMAND_CONFIRM_PATH; - message[1]=path; + { + //send ack + + //encode path + CharString pname = String(path).utf8(); + int len = encode_cstring(pname.get_data(),NULL); - network_peer->put_var(message); + Vector<uint8_t> packet; + + packet.resize(1+len); + packet[0]=NETWORK_COMMAND_CONFIRM_PATH; + encode_cstring(pname.get_data(),&packet[1]); + + network_peer->set_transfer_mode(NetworkedMultiplayerPeer::TRANSFER_MODE_RELIABLE); + network_peer->set_target_peer(p_from); + network_peer->put_packet(packet.ptr(),packet.size()); + } } break; case NETWORK_COMMAND_CONFIRM_PATH: { - ERR_FAIL_COND(p_packet.size()!=2); - NodePath path = p_packet[1]; + + String paths; + paths.parse_utf8((const char*)&p_packet[1],p_packet_len-1); + + NodePath path = paths; PathSentCache *psc = path_send_cache.getptr(path); ERR_FAIL_COND(!psc); - Map<StringName,bool>::Element *E=psc->confirmed_peers.find(p_from); + Map<int,bool>::Element *E=psc->confirmed_peers.find(p_from); ERR_FAIL_COND(!E); E->get()=true; } break; @@ -1948,25 +2121,30 @@ void SceneTree::_network_process_packet(const StringName& p_from,const Array& p_ void SceneTree::_network_poll() { - if (!network_peer.is_valid()) + if (!network_peer.is_valid() || network_peer->get_connection_status()==NetworkedMultiplayerPeer::CONNECTION_DISCONNECTED) return; network_peer->poll(); + if (!network_peer.is_valid()) //it's possible that polling might have resulted in a disconnection, so check here + return; + while(network_peer->get_available_packet_count()) { - StringName sender = network_peer->get_packet_peer(); - Variant packet; - Error err = network_peer->get_var(packet); + int sender = network_peer->get_packet_peer(); + const uint8_t *packet; + int len; + + Error err = network_peer->get_packet(&packet,len); if (err!=OK) { ERR_PRINT("Error getting packet!"); } - if (packet.get_type()!=Variant::ARRAY) { - ERR_PRINT("Error getting packet! (not an array)"); - } + _network_process_packet(sender,packet,len); - _network_process_packet(sender,packet); + if (!network_peer.is_valid()) { + break; //it's also possible that a packet or RPC caused a disconnection, so also check here + } } @@ -2022,13 +2200,9 @@ void SceneTree::_bind_methods() { mi.arguments.push_back( PropertyInfo( Variant::INT, "flags")); mi.arguments.push_back( PropertyInfo( Variant::STRING, "group")); mi.arguments.push_back( PropertyInfo( Variant::STRING, "method")); - Vector<Variant> defargs; - for(int i=0;i<VARIANT_ARG_MAX;i++) { - mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); - defargs.push_back(Variant()); - } - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"call_group",&SceneTree::_call_group,mi,defargs); + + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"call_group",&SceneTree::_call_group,mi); ObjectTypeDB::bind_method(_MD("set_current_scene","child_node:Node"),&SceneTree::set_current_scene); ObjectTypeDB::bind_method(_MD("get_current_scene:Node"),&SceneTree::get_current_scene); @@ -2042,9 +2216,15 @@ void SceneTree::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_network_peer","peer:NetworkedMultiplayerPeer"),&SceneTree::set_network_peer); - ObjectTypeDB::bind_method(_MD("is_network_server","is_network_server"),&SceneTree::is_network_server); + ObjectTypeDB::bind_method(_MD("is_network_server"),&SceneTree::is_network_server); + ObjectTypeDB::bind_method(_MD("get_network_unique_id"),&SceneTree::get_network_unique_id); + ObjectTypeDB::bind_method(_MD("set_refuse_new_network_connections","refuse"),&SceneTree::set_refuse_new_network_connections); + ObjectTypeDB::bind_method(_MD("is_refusing_new_network_connections"),&SceneTree::is_refusing_new_network_connections); ObjectTypeDB::bind_method(_MD("_network_peer_connected"),&SceneTree::_network_peer_connected); ObjectTypeDB::bind_method(_MD("_network_peer_disconnected"),&SceneTree::_network_peer_disconnected); + ObjectTypeDB::bind_method(_MD("_connected_to_server"),&SceneTree::_connected_to_server); + ObjectTypeDB::bind_method(_MD("_connection_failed"),&SceneTree::_connection_failed); + ObjectTypeDB::bind_method(_MD("_server_disconnected"),&SceneTree::_server_disconnected); ADD_SIGNAL( MethodInfo("tree_changed") ); ADD_SIGNAL( MethodInfo("node_removed",PropertyInfo( Variant::OBJECT, "node") ) ); @@ -2055,8 +2235,11 @@ void SceneTree::_bind_methods() { ADD_SIGNAL( MethodInfo("fixed_frame")); ADD_SIGNAL( MethodInfo("files_dropped",PropertyInfo(Variant::STRING_ARRAY,"files"),PropertyInfo(Variant::INT,"screen")) ); - ADD_SIGNAL( MethodInfo("network_peer_connected",PropertyInfo(Variant::STRING,"id"))); - ADD_SIGNAL( MethodInfo("network_peer_disconnected",PropertyInfo(Variant::STRING,"id"))); + ADD_SIGNAL( MethodInfo("network_peer_connected",PropertyInfo(Variant::INT,"id"))); + ADD_SIGNAL( MethodInfo("network_peer_disconnected",PropertyInfo(Variant::INT,"id"))); + ADD_SIGNAL( MethodInfo("connected_to_server")); + ADD_SIGNAL( MethodInfo("connection_failed")); + ADD_SIGNAL( MethodInfo("server_disconnected")); BIND_CONSTANT( GROUP_CALL_DEFAULT ); BIND_CONSTANT( GROUP_CALL_REVERSE ); diff --git a/scene/main/scene_main_loop.h b/scene/main/scene_main_loop.h index f67dae01be..1c0f88862c 100644 --- a/scene/main/scene_main_loop.h +++ b/scene/main/scene_main_loop.h @@ -188,13 +188,17 @@ private: Ref<NetworkedMultiplayerPeer> network_peer; - Set<StringName> connected_peers; - void _network_peer_connected(const StringName& p_id); - void _network_peer_disconnected(const StringName& p_id); + Set<int> connected_peers; + void _network_peer_connected(int p_id); + void _network_peer_disconnected(int p_id); + + void _connected_to_server(); + void _connection_failed(); + void _server_disconnected(); //path sent caches struct PathSentCache { - Map<StringName,bool> confirmed_peers; + Map<int,bool> confirmed_peers; int id; }; @@ -211,9 +215,11 @@ private: Map<int,NodeInfo> nodes; }; - Map<StringName,PathGetCache> path_get_cache; + Map<int,PathGetCache> path_get_cache; + + Vector<uint8_t> packet_cache; - void _network_process_packet(const StringName &p_from, const Array& p_packet); + void _network_process_packet(int p_from, const uint8_t *p_packet, int p_packet_len); void _network_poll(); static SceneTree *singleton; @@ -221,7 +227,8 @@ friend class Node; - void _remote_call(Node* p_from,bool p_reliable,bool p_set,const StringName& p_name,const Variant** p_arg,int p_argcount); + + void _rpc(Node* p_from,int p_to,bool p_unreliable,bool p_set,const StringName& p_name,const Variant** p_arg,int p_argcount); void tree_changed(); void node_removed(Node *p_node); @@ -418,6 +425,10 @@ public: void set_network_peer(const Ref<NetworkedMultiplayerPeer>& p_network_peer); bool is_network_server() const; + int get_network_unique_id() const; + + void set_refuse_new_network_connections(bool p_refuse); + bool is_refusing_new_network_connections() const; SceneTree(); ~SceneTree(); diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index 2033599307..03f28bef08 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -627,6 +627,8 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F // GraphNode Ref<StyleBoxTexture> graphsb = make_stylebox(graph_node_png,6,24,6,5,16,24,16,5); + Ref<StyleBoxTexture> graphsbcomment = make_stylebox(graph_node_comment_png,6,24,6,5,16,24,16,5); + Ref<StyleBoxTexture> graphsbcommentselected = make_stylebox(graph_node_comment_focus_png,6,24,6,5,16,24,16,5); Ref<StyleBoxTexture> graphsbselected = make_stylebox(graph_node_selected_png,6,24,6,5,16,24,16,5); Ref<StyleBoxTexture> graphsbdefault = make_stylebox(graph_node_default_png,4,4,4,4,6,4,4,4); Ref<StyleBoxTexture> graphsbdeffocus = make_stylebox(graph_node_default_focus_png,4,4,4,4,6,4,4,4); @@ -639,11 +641,14 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F t->set_stylebox("selectedframe","GraphNode", graphsbselected ); t->set_stylebox("defaultframe", "GraphNode", graphsbdefault ); t->set_stylebox("defaultfocus", "GraphNode", graphsbdeffocus ); + t->set_stylebox("comment", "GraphNode", graphsbcomment ); + t->set_stylebox("commentfocus", "GraphNode", graphsbcommentselected ); t->set_stylebox("breakpoint", "GraphNode", graph_bpoint ); t->set_stylebox("position", "GraphNode", graph_position ); t->set_constant("separation","GraphNode", 1 *scale); t->set_icon("port","GraphNode", make_icon( graph_port_png ) ); t->set_icon("close","GraphNode", make_icon( graph_node_close_png ) ); + t->set_icon("resizer","GraphNode", make_icon( window_resizer_png ) ); t->set_font("title_font","GraphNode", default_font ); t->set_color("title_color","GraphNode", Color(0,0,0,1)); t->set_constant("title_offset","GraphNode", 20 *scale); @@ -930,6 +935,8 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F t->set_stylebox("bg","GraphEdit", make_stylebox( tree_bg_png,4,4,4,5) ); t->set_color("grid_minor","GraphEdit", Color(1,1,1,0.05) ); t->set_color("grid_major","GraphEdit", Color(1,1,1,0.2) ); + t->set_constant("bezier_len_pos","GraphEdit", 80*scale ); + t->set_constant("bezier_len_neg","GraphEdit", 160*scale ); diff --git a/scene/resources/default_theme/graph_node.png b/scene/resources/default_theme/graph_node.png Binary files differindex ed0b6a6cd2..d4b4dd3c1f 100644 --- a/scene/resources/default_theme/graph_node.png +++ b/scene/resources/default_theme/graph_node.png diff --git a/scene/resources/default_theme/graph_node_comment.png b/scene/resources/default_theme/graph_node_comment.png Binary files differnew file mode 100644 index 0000000000..f2d6daa259 --- /dev/null +++ b/scene/resources/default_theme/graph_node_comment.png diff --git a/scene/resources/default_theme/graph_node_comment_focus.png b/scene/resources/default_theme/graph_node_comment_focus.png Binary files differnew file mode 100644 index 0000000000..a4b7b5a618 --- /dev/null +++ b/scene/resources/default_theme/graph_node_comment_focus.png diff --git a/scene/resources/default_theme/graph_node_selected.png b/scene/resources/default_theme/graph_node_selected.png Binary files differindex 33c4d06128..f76c9703dd 100644 --- a/scene/resources/default_theme/graph_node_selected.png +++ b/scene/resources/default_theme/graph_node_selected.png diff --git a/scene/resources/default_theme/theme_data.h b/scene/resources/default_theme/theme_data.h index d62ca07c38..73c801483f 100644 --- a/scene/resources/default_theme/theme_data.h +++ b/scene/resources/default_theme/theme_data.h @@ -100,7 +100,7 @@ static const unsigned char full_panel_bg_png[]={ static const unsigned char graph_node_png[]={ -0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x7,0x1d,0x1,0x8,0x10,0x1e,0x6f,0x12,0x2b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x2,0x6a,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0xbb,0x6e,0x13,0x51,0x10,0x86,0xbf,0xf1,0x2e,0xb1,0x83,0x85,0x63,0x5,0x10,0xe2,0x22,0xa5,0x0,0x1a,0x24,0x90,0x22,0x9e,0x81,0x2,0xd1,0x53,0xf1,0x2,0x20,0xa,0x1a,0xa,0xa0,0x44,0xd0,0xd0,0x20,0x81,0xe0,0x5,0xa8,0xe8,0x11,0x5,0xcf,0x80,0x22,0x81,0x42,0x3,0x14,0x91,0xb8,0x4,0x85,0x58,0x8e,0x21,0x78,0xd7,0xd9,0x73,0x86,0xe2,0x9c,0xdd,0xec,0xae,0xd7,0xce,0x85,0xe,0xed,0x34,0xbb,0x3a,0x3e,0xf3,0xcd,0xcc,0x3f,0x63,0x69,0x47,0xd8,0x36,0x1,0x1a,0x40,0xe0,0x9f,0x42,0xd1,0x14,0xb0,0x80,0xf1,0x4f,0x25,0x77,0xa9,0x1,0x1c,0x4,0xe6,0x81,0xa3,0x40,0x7,0x38,0x50,0x2,0x6c,0x1,0x3,0x60,0xd,0xe8,0x1,0x7f,0x0,0x9b,0x46,0x6d,0x3,0x67,0xe6,0xe,0x75,0xaf,0xb7,0x9a,0xad,0xcb,0x33,0x33,0xcd,0x53,0x54,0xd8,0x68,0x14,0x7f,0x89,0xe2,0xe8,0xf5,0xc6,0xaf,0xfe,0x73,0xe0,0x13,0xb0,0x29,0x3e,0xd2,0xc2,0x7c,0xf7,0xf0,0xe3,0xd3,0xb,0x67,0xaf,0x3c,0xb8,0xfb,0x88,0xd9,0x4e,0xab,0xca,0x9f,0xe1,0x20,0xe2,0xde,0xc3,0xdb,0x7c,0x5e,0xf9,0xf8,0xaa,0xd7,0x5f,0xbf,0x5,0xac,0x8,0xd0,0x2,0x16,0x8f,0x1f,0x3b,0xf9,0xe6,0xc5,0xb3,0x97,0xed,0x24,0xb1,0x24,0xa3,0xa4,0x12,0x10,0xce,0x84,0x84,0x61,0x83,0x6b,0x37,0xae,0x6e,0x7e,0xff,0xf1,0xf5,0x12,0xb0,0x14,0x7a,0x1d,0xda,0x61,0x10,0xb6,0x87,0xbf,0x63,0x10,0x75,0x47,0xa,0x2a,0x79,0x85,0x95,0x51,0xbc,0xc5,0x28,0x86,0x30,0x8,0xdb,0xbe,0x6c,0x49,0x1,0x1,0x80,0x51,0xeb,0xfc,0x9d,0xc0,0x4e,0x6b,0xf,0xd1,0xfc,0xb9,0xb3,0x20,0x5,0x68,0xfa,0x8b,0x5a,0x8b,0xaa,0x80,0x28,0x82,0xa0,0x28,0xa2,0x92,0x73,0xd3,0xb1,0xde,0x86,0x85,0x46,0x5b,0x45,0x51,0x50,0x45,0xc4,0x95,0x61,0x53,0x27,0x71,0x61,0x74,0x1a,0xc0,0xaa,0xcd,0x6e,0xa8,0x64,0x2f,0xee,0x5d,0x29,0x8a,0x32,0x39,0x3,0x5f,0xb6,0x2f,0x4c,0x45,0x73,0x5a,0xd8,0x31,0x48,0x1,0x60,0xac,0x2d,0xf1,0x5,0x51,0x75,0x45,0x68,0x5a,0xbf,0x4e,0xcf,0x60,0xfb,0x82,0x2b,0x5a,0x73,0x4e,0xb6,0xe2,0xf,0x52,0x2,0xd8,0x82,0xe2,0x14,0x50,0x54,0xc4,0x2f,0x8b,0x68,0xad,0x1f,0x99,0x54,0x79,0x41,0xdd,0x0,0xf8,0xb6,0x82,0x88,0x4e,0xeb,0x82,0x66,0x89,0xaa,0x3b,0xc8,0x52,0x48,0x41,0x56,0x76,0xcc,0x60,0x7b,0x74,0x75,0xac,0x1a,0x49,0x47,0x72,0x72,0x6,0xe2,0xe7,0x56,0x45,0xfd,0x5d,0xc9,0x44,0x28,0x40,0x2b,0x45,0x34,0xea,0x7,0xa8,0x14,0xc9,0x92,0x75,0x64,0x7,0x11,0x8d,0x8f,0x98,0x9b,0x87,0xf2,0xf4,0x4d,0xd5,0x40,0xd5,0xc9,0x97,0xf,0xa3,0x5a,0x74,0x9c,0x36,0x89,0xf7,0x9f,0xdc,0x61,0xaf,0x96,0x1,0x92,0x2d,0xc3,0xe2,0xf9,0x8b,0xbb,0x72,0x5a,0x7a,0xff,0xb6,0x3a,0x83,0x8d,0x41,0x7f,0xcf,0x19,0x34,0xf8,0x47,0xab,0x1,0x35,0xa0,0x6,0xd4,0x80,0x1a,0x50,0x3,0x6a,0xc0,0x7f,0x9,0x90,0x8a,0x4f,0xe0,0x3d,0x67,0x60,0xf7,0xe1,0x6b,0x53,0x80,0x5,0x22,0x63,0x4c,0x6c,0x93,0x5d,0x78,0x25,0x60,0x8c,0x89,0x81,0x8,0xb0,0xd,0xbf,0xca,0xae,0x47,0xf1,0x70,0x79,0xad,0xb7,0xca,0x34,0x88,0x4d,0x60,0xad,0xb7,0x4a,0x14,0xf,0x97,0x81,0x75,0xc0,0xa4,0x9b,0xeb,0x1c,0x70,0xa1,0xd3,0xee,0x3e,0x6d,0x35,0x67,0xcf,0x5,0x41,0x50,0x29,0xae,0x31,0xc6,0x46,0xf1,0xf0,0xc3,0x60,0xb3,0x7f,0x13,0x78,0x7,0x6c,0x48,0x6e,0x85,0xeb,0x0,0x27,0x80,0x23,0x40,0x73,0xc2,0xf2,0x1d,0x3,0x3f,0x81,0x6f,0x7e,0x8f,0x36,0x52,0x12,0x34,0x4c,0xf7,0xc1,0x9,0x55,0xa8,0x2f,0x39,0xd9,0xa7,0xf0,0xe3,0xf6,0x17,0x4c,0x97,0x1d,0x24,0x5b,0x8,0x8b,0x95,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x8,0x17,0xd,0x5,0x12,0xa1,0x38,0x83,0x9b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x2,0x74,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0x3d,0x6f,0xd3,0x60,0x10,0xc7,0x7f,0x17,0x9b,0x26,0x25,0x22,0xad,0xa,0x8,0xf1,0x52,0x75,0x0,0x16,0x24,0x90,0x2a,0x96,0x7c,0x1,0x6,0xc4,0xce,0xc4,0x17,0x0,0x31,0xb0,0x30,0x0,0x23,0x82,0x85,0x5,0x9,0x4,0x5f,0x80,0x89,0x1d,0x31,0xf0,0x5,0x58,0x50,0x25,0x50,0x59,0x80,0xa1,0xe2,0xad,0x28,0x34,0x4a,0x3,0x25,0x76,0xea,0xe7,0x39,0x6,0x3f,0x76,0x6d,0xc7,0x49,0x5f,0xd8,0x90,0x6f,0xb1,0xf5,0xe4,0xb9,0xdf,0xdd,0xfd,0xef,0x22,0xf9,0x84,0x2d,0x13,0xa0,0x6,0x78,0xee,0x29,0xe4,0x4d,0x1,0xb,0x18,0xf7,0x54,0x32,0x97,0x6a,0xc0,0x7e,0x60,0xe,0x38,0xc,0xb4,0x80,0x7d,0x5,0xc0,0x26,0xd0,0x7,0x3a,0x40,0x17,0xf8,0x3,0xd8,0x24,0x6a,0x13,0x38,0x35,0x73,0x60,0xf6,0x6a,0xa3,0xde,0xb8,0x38,0x35,0x55,0x3f,0x41,0x89,0xd,0x87,0xe1,0x97,0x20,0xc,0x5e,0xae,0xff,0xea,0x3d,0x5,0x3e,0x2,0x1b,0xe2,0x22,0x2d,0xcc,0xcd,0x1e,0x7c,0x78,0x72,0xe1,0xf4,0xa5,0x7b,0xb7,0x1f,0x7c,0x9e,0x6e,0x35,0xca,0xfc,0x19,0xf4,0x3,0xee,0xdc,0xbf,0x39,0xff,0x69,0xe5,0xc3,0x8b,0x6e,0x6f,0xed,0x6,0xb0,0x22,0x40,0x3,0x58,0x3c,0x7a,0xe4,0xf8,0xab,0x67,0x4f,0x9e,0x77,0xa3,0xc8,0x12,0xd,0xa3,0x52,0x80,0x3f,0xe5,0xe3,0xfb,0x35,0xae,0x5c,0xbb,0x3c,0xf7,0xfd,0xc7,0xd7,0xb,0xc0,0x92,0xef,0x74,0x68,0xfa,0x9e,0xdf,0x1c,0xfc,0xe,0xbb,0x88,0xc6,0x47,0xa,0x2a,0x59,0x85,0x95,0x61,0xb8,0xc9,0x30,0x4,0xdf,0xf3,0x9b,0xae,0x6c,0x49,0x0,0x1e,0x80,0x51,0x1b,0xfb,0xc7,0x2,0xc7,0x5a,0x3b,0x88,0x66,0xcf,0x63,0xf3,0x12,0x80,0x26,0xbf,0xa8,0xb5,0xa8,0xa,0x88,0x22,0x8,0x8a,0x22,0x2a,0x19,0x37,0x1d,0xe9,0xad,0x9f,0x6b,0xb4,0x55,0x14,0x5,0x55,0x44,0xe2,0x32,0x6c,0xe2,0x24,0x71,0x18,0x9d,0x4,0xb0,0x6a,0xd3,0x1b,0x2a,0xe9,0x4b,0xfc,0xae,0xe4,0x45,0x19,0x9f,0x81,0x2b,0xdb,0x15,0xa6,0xa2,0x19,0x2d,0xec,0x8,0x24,0x7,0x30,0xd6,0x16,0xf8,0x82,0xa8,0xc6,0x45,0x68,0x52,0xbf,0x4e,0xce,0x60,0xeb,0x42,0x5c,0xb4,0x66,0x9c,0x6c,0xc9,0x1f,0xa4,0x0,0xb0,0x39,0xc5,0xc9,0xa1,0x28,0x89,0x5f,0x14,0xd1,0x5a,0x37,0x32,0x89,0xf2,0x82,0xc6,0x3,0xe0,0xda,0xa,0x22,0x3a,0xa9,0xb,0x9a,0x26,0xaa,0xf1,0x41,0x9a,0x42,0x2,0xb2,0xb2,0x6d,0x6,0x5b,0xa3,0xab,0x23,0xd5,0x48,0x32,0x92,0xe3,0x33,0x10,0x37,0xb7,0x2a,0xea,0xee,0x4a,0x2a,0x42,0xe,0x5a,0x2a,0xa2,0x51,0x37,0x40,0x85,0x48,0x96,0xb4,0x23,0xdb,0x88,0x68,0x5c,0xc4,0xcc,0x3c,0x14,0xa7,0x6f,0xa2,0x6,0xaa,0xb1,0x7c,0xd9,0x30,0xaa,0x79,0xc7,0x49,0x93,0x78,0xf7,0xd1,0xad,0x79,0x76,0x69,0x29,0x20,0xda,0x34,0x2c,0x9e,0x3d,0xff,0x7a,0x27,0x4e,0x4b,0xef,0xde,0xb4,0x4b,0x33,0x58,0xef,0xf7,0x76,0x9b,0x0,0x35,0xfe,0xd1,0x2a,0x40,0x5,0xa8,0x0,0x15,0xa0,0x2,0x54,0x80,0xa,0xf0,0x5f,0x2,0xa4,0xe4,0x13,0x78,0xd7,0x19,0xd8,0x3d,0xf8,0xda,0x4,0x60,0x81,0xc0,0x18,0x13,0xda,0x68,0x7,0x5e,0x11,0x18,0x63,0x42,0x20,0x0,0x6c,0xcd,0xad,0xb2,0x6b,0x41,0x38,0x58,0xee,0x74,0x57,0xdb,0x93,0x20,0x36,0x82,0x4e,0x77,0xb5,0x1d,0x84,0x83,0x65,0x60,0xd,0x30,0xc9,0xe6,0x3a,0x3,0x9c,0x6b,0x35,0x67,0x1f,0x37,0xea,0xd3,0x67,0x3c,0xcf,0x2b,0x15,0xd7,0x18,0x63,0x83,0x70,0xf0,0xbe,0xbf,0xd1,0xbb,0xe,0xbc,0x5,0xd6,0x25,0xb3,0xc2,0xb5,0x80,0x63,0xc0,0x21,0xa0,0x3e,0x66,0xf9,0xe,0x81,0x9f,0xc0,0x37,0xb7,0x47,0x1b,0x29,0x8,0xea,0x27,0xfb,0xe0,0x98,0x2a,0xd4,0x95,0x1c,0xed,0x51,0xf8,0x51,0xfb,0xb,0x1,0xbe,0x20,0x9f,0x90,0x81,0x17,0xaa,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -114,6 +114,16 @@ static const unsigned char graph_node_close_png[]={ }; +static const unsigned char graph_node_comment_png[]={ +0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x8,0x19,0x11,0x2a,0x1d,0xd6,0x78,0x8b,0x40,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x1,0x74,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0xbf,0x4e,0xc2,0x50,0x14,0xc6,0x7f,0x6d,0x91,0x56,0x1b,0x90,0x80,0x2c,0x44,0xc2,0xa0,0x2e,0xe,0x3e,0x3,0x89,0x93,0xf1,0x1d,0x4c,0x18,0x4d,0x1c,0x7c,0xb,0x57,0x7,0x13,0x47,0x13,0x77,0x46,0xe3,0xc4,0x4b,0x98,0x60,0x4c,0xd4,0x81,0x60,0x58,0x94,0xff,0x22,0x2d,0xd0,0xd6,0xe5,0xde,0x88,0x8,0x2,0x35,0x6e,0xf7,0x5b,0x6e,0x9a,0x9c,0xef,0x77,0xee,0x39,0x37,0x1d,0x3e,0x8d,0x2f,0x69,0x80,0xe,0x18,0xe2,0xd4,0xf8,0xae,0x0,0xf0,0x1,0x4f,0x9c,0x1,0x63,0x45,0x3a,0xb0,0x6,0x24,0x81,0x34,0x10,0x7,0x56,0x26,0x0,0x43,0xa0,0x3,0xbc,0x2,0xd,0xe0,0x3,0xf0,0x65,0x57,0x1b,0xd8,0x5e,0x8f,0x25,0x8e,0x2d,0xd3,0x3a,0x88,0x46,0xcd,0x4d,0xa6,0x68,0x30,0x70,0x5f,0x1c,0xd7,0xb9,0x6d,0x77,0x5b,0x97,0xc0,0x13,0xd0,0xd3,0x44,0xa7,0x5c,0x32,0x91,0x3a,0xdf,0xca,0xed,0x1c,0x16,0x52,0xdd,0x2a,0xbf,0xe8,0xaa,0x1e,0xcb,0x3e,0x57,0x1e,0x6f,0x1a,0xad,0xfa,0x29,0x50,0x91,0x33,0xa7,0x4d,0xd3,0xca,0xcf,0x33,0x3,0x14,0x52,0xdd,0xaa,0x69,0x5a,0x79,0x31,0xaa,0x21,0x97,0x65,0x47,0x8c,0x88,0xcd,0x82,0x12,0xb5,0x36,0xa0,0x49,0x80,0xc1,0xf2,0x32,0x24,0x20,0x90,0x4f,0x12,0x46,0x3a,0x7f,0x94,0x2,0x28,0x80,0x2,0x88,0x5f,0x7b,0xfc,0xe3,0xec,0xe1,0x3d,0x1b,0x1a,0x30,0x1a,0x7a,0x1c,0x65,0xd8,0x5f,0xc4,0x74,0x5d,0xa3,0xa4,0x5e,0x41,0x1,0x14,0x40,0x1,0x14,0x40,0x1,0x14,0x40,0x1,0xfe,0x15,0xa0,0x4d,0xc9,0x88,0x4b,0xdf,0xc0,0xf,0xe1,0xf5,0x25,0xc0,0x7,0x1c,0xcf,0xf3,0xdc,0x45,0x9d,0xa2,0xd6,0x1,0x7c,0x5d,0x44,0xd9,0xba,0xe3,0xf6,0xcb,0xc5,0xa6,0x5d,0x9a,0x67,0x2e,0x36,0xed,0x92,0xe3,0xf6,0xcb,0x40,0x1d,0xf0,0x64,0x72,0x5d,0x7,0xf6,0xe2,0x76,0xe2,0xc2,0x32,0x57,0x77,0xd,0xc3,0xd0,0x67,0x74,0xf6,0x1d,0xb7,0x7f,0xdf,0xe9,0xb5,0x4e,0x80,0x3b,0xa0,0xad,0x8d,0x45,0xb8,0x38,0x90,0x1,0x36,0x0,0x73,0x46,0xf8,0x76,0x81,0x37,0xa0,0x26,0x72,0xb4,0xa7,0x4d,0x2c,0x34,0x22,0xf3,0xe0,0x8c,0x9,0x2,0x31,0xf2,0x28,0xe4,0xe2,0x7f,0xea,0x13,0x64,0x47,0x6c,0x83,0x36,0x6d,0xd2,0x40,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + + +static const unsigned char graph_node_comment_focus_png[]={ +0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0x0,0x0,0x0,0x0,0x0,0xf9,0x43,0xbb,0x7f,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x9,0x2,0xe,0x16,0x22,0xbe,0xef,0xc2,0xe1,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x1,0x4a,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0xd7,0xbf,0x4b,0xdb,0x41,0x1c,0xc6,0xf1,0xd7,0x37,0x51,0x4,0x3,0xa,0xa2,0x20,0xd2,0xe2,0xe2,0x64,0x41,0xdc,0xdc,0xac,0xe0,0x54,0xdc,0xb2,0xe6,0x2f,0x10,0x1a,0xf0,0x4f,0x11,0x22,0xf8,0x17,0x64,0xcd,0x26,0x9d,0x1c,0x74,0x73,0x13,0x21,0x4e,0x2e,0xa5,0xa5,0x14,0xac,0x82,0x82,0x62,0xd0,0x7c,0xd3,0xa1,0x77,0x18,0x35,0xfe,0x48,0xa4,0xdb,0x3d,0x70,0xdc,0xf2,0x79,0xde,0x77,0xf7,0x39,0x38,0xee,0xc9,0xdc,0x2b,0x43,0x1,0xc5,0x30,0x67,0x1e,0xaa,0x83,0x1c,0xed,0x30,0x77,0x74,0x15,0x15,0x30,0x8a,0x9,0x4c,0x61,0xc,0xc3,0x8f,0x0,0xb7,0xb8,0xc4,0x29,0xce,0x71,0x8d,0x3c,0xae,0x5a,0xc2,0x5c,0xa3,0x5a,0x59,0xc7,0x17,0x7c,0xd0,0x5b,0x3f,0xf1,0xad,0x5c,0xab,0x6f,0xe3,0x4,0x57,0x59,0x58,0x69,0xb6,0x51,0xad,0x6c,0x62,0xed,0x77,0xf3,0xf0,0x87,0x17,0x34,0xfd,0x69,0xf1,0x23,0x76,0xca,0xb5,0xfa,0x6,0xbe,0xc7,0x33,0x4f,0x61,0xe5,0x35,0x33,0x84,0x9a,0x95,0xe0,0x29,0xc6,0x66,0x95,0xc2,0x78,0xab,0x62,0x7d,0x16,0x1,0x45,0xfd,0xab,0x18,0x1,0x9d,0x78,0x25,0x83,0xa8,0xe0,0x9d,0x4a,0x80,0x4,0x48,0x80,0x7f,0x1a,0xea,0xf1,0xda,0xc,0xe,0x38,0xd8,0xdf,0x5b,0x7d,0x8b,0x69,0x69,0xf9,0xf3,0x6e,0xba,0x85,0x4,0x48,0x80,0x4,0x48,0x80,0x4,0x48,0x80,0x4,0xf8,0xaf,0x80,0xac,0x47,0x46,0xec,0x7b,0x7,0xf9,0x0,0xde,0x3c,0x2,0x72,0xdc,0xa0,0xd5,0x87,0xb9,0x15,0x3c,0x79,0x21,0x44,0xd9,0x33,0x34,0xbb,0x3f,0x4f,0xaf,0x7c,0xb0,0x9a,0xc1,0xd3,0x8e,0xc9,0x75,0x1c,0xb,0x8d,0x6a,0x65,0xb,0xf3,0x2f,0x34,0x37,0xc7,0x71,0xb9,0x56,0xff,0x8a,0x23,0x5c,0x64,0x5d,0x11,0x6e,0xc,0x33,0x98,0xc4,0xc8,0x33,0xe1,0xbb,0x85,0x3f,0xf8,0x15,0x72,0x74,0x3b,0x7b,0xd4,0xd0,0xa1,0x98,0x7,0x9f,0xd9,0x41,0x27,0x1c,0xf9,0x6e,0xc0,0xc6,0x3f,0xd5,0x5f,0x9d,0x54,0x4e,0x15,0xfd,0xeb,0xb4,0x4f,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + + static const unsigned char graph_node_default_png[]={ 0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x3,0x0,0x0,0x0,0x28,0x2d,0xf,0x53,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x39,0x50,0x4c,0x54,0x45,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x12,0x19,0xe,0xb,0x10,0xe,0xb,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x12,0x19,0x0,0x0,0x0,0x19,0x15,0x1c,0x24,0x1e,0x27,0x16,0x12,0x19,0xff,0xff,0xff,0x2b,0x4d,0xfd,0x66,0x0,0x0,0x0,0xf,0x74,0x52,0x4e,0x53,0x0,0x46,0x47,0x3f,0x2b,0x11,0x3,0xfd,0xd3,0xcd,0x2a,0x73,0x45,0xf8,0x3d,0x3f,0x57,0xda,0x84,0x0,0x0,0x0,0x1,0x62,0x4b,0x47,0x44,0x12,0x7b,0xbc,0x6c,0x0,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x4,0x4e,0x1d,0x2,0xaf,0x0,0x0,0x0,0x38,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0x64,0x2,0x2,0x46,0x8,0xc9,0xcc,0xc2,0xca,0xc6,0xc0,0x8f,0x4,0xd8,0x39,0x98,0x59,0x19,0x50,0x80,0x0,0x27,0x17,0xaa,0x0,0x83,0x20,0x37,0x9a,0x0,0x3f,0xd3,0xc0,0x8,0xf0,0xa0,0x9,0xf0,0xf2,0x61,0x3a,0x1d,0xc3,0x73,0xe8,0xde,0x7,0x0,0x89,0x4d,0x2,0xf2,0x16,0xd3,0x74,0x45,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x39,0x3a,0x32,0x36,0x2b,0x30,0x32,0x3a,0x30,0x30,0xc9,0xad,0xc8,0x52,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x39,0x3a,0x32,0x36,0x2b,0x30,0x32,0x3a,0x30,0x30,0xb8,0xf0,0x70,0xee,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -130,7 +140,7 @@ static const unsigned char graph_node_position_png[]={ static const unsigned char graph_node_selected_png[]={ -0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x8,0x6,0xc,0x29,0x12,0x71,0x6e,0xb2,0xf8,0x0,0x0,0x3,0x37,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0x4f,0x88,0xdc,0x74,0x14,0xc7,0xbf,0xef,0x97,0x7f,0x9b,0xcc,0xee,0xec,0x64,0x64,0x76,0x5,0xd1,0xd5,0xc2,0x6e,0x41,0x8f,0xbd,0xef,0x49,0x7a,0x10,0xa,0xeb,0x61,0xa1,0xb5,0x16,0xc4,0xa3,0x87,0xbd,0xb9,0x17,0x8f,0x5e,0xa4,0xc7,0x16,0xbc,0x8,0xa2,0xdb,0x16,0xf,0x7b,0xb0,0x50,0x28,0x54,0x7a,0xea,0xdd,0xa3,0x82,0x16,0x14,0x5,0xc1,0xd9,0xe9,0x4e,0x32,0x3b,0xc9,0x64,0x26,0xbf,0xe4,0xf7,0x3c,0x24,0xd9,0x26,0x99,0x35,0x73,0xf0,0x26,0xf3,0x60,0x66,0x12,0xe6,0xbd,0xcf,0xf7,0xbd,0xef,0xef,0x17,0xc8,0x8f,0x98,0x99,0x0,0x88,0x47,0x8f,0x7e,0xb4,0x92,0xa1,0x67,0xf,0xcf,0x6,0x96,0x62,0x25,0xa4,0x8c,0x9,0xa5,0x30,0xc,0x93,0x5,0x9,0xd5,0x6d,0xf7,0x66,0x7a,0xd7,0x8d,0xae,0x5d,0xbb,0x32,0x3,0xa0,0x88,0x99,0xb5,0x87,0xdf,0x3c,0x5c,0x1b,0x85,0x93,0xd7,0x86,0xbe,0x7f,0x69,0x34,0xf2,0x36,0x83,0x30,0x70,0xe2,0x38,0xd6,0xcb,0x0,0xd3,0x34,0x93,0xd5,0xd6,0xea,0x64,0x7d,0xdd,0xed,0x77,0x3b,0x9d,0xdf,0xd6,0x5b,0xce,0x5f,0x7b,0x1f,0xed,0x8d,0xe9,0xe8,0xe8,0x49,0x2b,0x1e,0xf6,0xdf,0xf2,0x46,0xc3,0xdd,0xf7,0x6f,0xec,0xde,0x31,0x2d,0x5d,0x43,0x43,0xc4,0xb3,0x24,0xfd,0xfe,0xbb,0x67,0x7,0xee,0x7a,0xf7,0x99,0xd9,0xdd,0xfc,0x5d,0x48,0xcf,0x77,0xfa,0x2f,0x4e,0x76,0xf6,0xae,0xef,0xde,0x65,0x66,0x6d,0x7a,0xda,0x46,0x12,0xb8,0x48,0xc3,0x6e,0xe5,0x93,0x4,0x2e,0xa6,0xa7,0x6d,0x30,0xb3,0xb6,0x77,0x7d,0xf7,0x6e,0xff,0xc5,0xc9,0x8e,0xf4,0x7c,0x47,0x8f,0x93,0xc8,0xc,0x83,0xf1,0x86,0xb5,0xa2,0x8b,0x99,0xb7,0x6,0x12,0x84,0x44,0x2a,0x50,0x4d,0x99,0x1,0x90,0x20,0x20,0xea,0xc2,0x72,0xc7,0x22,0xc,0xc6,0x1b,0xb1,0x1b,0x99,0x42,0xb1,0x12,0x93,0x68,0x62,0x3,0x40,0x2a,0x19,0xcc,0x79,0xb1,0xaa,0x56,0x13,0x18,0xcc,0x8c,0x34,0x61,0x0,0xc0,0x24,0x9a,0xd8,0x8a,0x95,0x10,0x52,0x4a,0x4a,0x91,0x12,0x0,0x30,0x65,0xba,0xcc,0xc,0x88,0x5c,0x16,0x0,0x8,0x60,0x5,0x80,0x19,0xe0,0x2c,0x27,0x45,0x4a,0x52,0x4a,0xd2,0xd,0xc3,0x60,0xa4,0x79,0xa2,0x62,0x30,0x8,0x20,0xc6,0xf9,0xc,0x39,0x84,0x99,0x2b,0xbf,0x45,0x4d,0x65,0xa9,0x98,0x19,0x20,0x2,0xc0,0x28,0xf2,0xea,0xc1,0xb5,0x3f,0xf4,0xda,0xbf,0x60,0x95,0x27,0x10,0x97,0xdc,0x2b,0x75,0xd3,0x4,0xe0,0x4c,0xbb,0x7c,0x93,0x15,0xab,0x97,0x90,0x7a,0x67,0x15,0x80,0x52,0xa5,0xd9,0x73,0xf7,0x88,0x73,0x5f,0x98,0x41,0x8b,0x47,0x28,0x4b,0x50,0xa9,0x9f,0xec,0x5b,0x2d,0xea,0x0,0xac,0xc0,0xaa,0x66,0xff,0xbc,0x8b,0xd,0x1e,0xe4,0x73,0xe7,0x4d,0x23,0xdf,0x3e,0xc5,0x30,0xd9,0x55,0x53,0x7,0x19,0x40,0xe5,0x85,0x25,0x35,0x7a,0x39,0xbb,0x6a,0x6,0xa8,0xac,0xbe,0xa2,0x5d,0x56,0xa5,0xc5,0xcb,0x48,0xc5,0x7e,0xa0,0x62,0x33,0x51,0xe1,0x67,0xfe,0x3c,0x34,0x75,0xa0,0xb2,0xc2,0x39,0x25,0x85,0xf3,0x15,0xa9,0x5b,0x3b,0xbf,0x95,0xb9,0xfe,0x28,0x36,0xc7,0xbc,0x89,0x75,0x8d,0x92,0x91,0xb5,0x8b,0x79,0xc0,0x67,0x9f,0x7f,0x8a,0x9f,0x7f,0xfd,0xa9,0x51,0xf1,0xed,0x9d,0x77,0xf0,0xd5,0xb7,0x5f,0x5c,0xc,0xb8,0xb4,0xb5,0xd,0x4d,0x18,0x8d,0x80,0xad,0xd7,0xdf,0xfc,0xf7,0xe,0xc2,0x30,0xc0,0xe8,0xcc,0x6f,0x4,0x84,0x61,0x50,0xb9,0x17,0xf8,0x8f,0xb1,0x4,0x2c,0x1,0x4b,0xc0,0x12,0xb0,0x4,0x2c,0x1,0x4b,0xc0,0xff,0xf,0x20,0xa5,0x24,0x68,0x17,0xbe,0xfe,0x5c,0x1c,0x45,0x8e,0x56,0xea,0x40,0x83,0xc6,0x0,0x60,0xe8,0xfa,0xc2,0xfa,0x22,0xa7,0xa8,0x11,0x96,0x69,0xa5,0x96,0x69,0xc6,0x0,0xe0,0xd8,0xab,0xb,0x1,0x45,0x8e,0x65,0x9a,0xb1,0x65,0x5a,0xa9,0x6e,0xea,0x76,0xbc,0x62,0x3b,0x83,0xd9,0x54,0xf2,0xc1,0xe1,0x7,0x74,0xe7,0x36,0x61,0x12,0x8d,0x21,0x93,0xa4,0x72,0xe8,0x32,0x74,0x1d,0x8e,0xbd,0x86,0x83,0xc3,0x1b,0x98,0x4d,0x25,0xaf,0xd8,0xce,0xc0,0xd4,0xed,0x98,0x8e,0x8e,0x9e,0xb4,0x4e,0xff,0x7c,0xbe,0xed,0x9f,0x79,0xef,0x7e,0xf8,0xf1,0x7b,0xb7,0x2d,0xdb,0x68,0x74,0x62,0x16,0x49,0xbe,0xff,0xf5,0xe3,0xc3,0x4e,0xdb,0x7d,0xfa,0xca,0x1b,0xdb,0xcf,0x89,0x99,0xb5,0x7,0x5f,0x3e,0x68,0xf,0x3c,0x7f,0xcb,0xf3,0xfd,0xcb,0x93,0x28,0xdc,0x90,0x52,0x1a,0x4a,0x55,0xdf,0x56,0x85,0x10,0x30,0xc,0x43,0x3a,0x76,0xeb,0xc4,0xed,0x74,0x7e,0xe9,0xb9,0x9d,0x3f,0x6e,0x7e,0x72,0xf3,0x8c,0x8a,0xd3,0xfb,0xbd,0x7b,0x3f,0xac,0x4,0x7f,0xf7,0x5b,0x52,0xcd,0x4c,0x66,0x75,0xe1,0xf2,0x12,0x9,0x65,0x8,0x2b,0x5e,0x7d,0x75,0x33,0xbc,0x75,0xeb,0xea,0x14,0xc0,0xf9,0xf1,0x4,0xcc,0x4c,0xc7,0xc7,0xc7,0xa2,0xd7,0xeb,0x35,0x8e,0x30,0x18,0xc,0x78,0x7f,0x7f,0x5f,0x11,0x65,0xc7,0xba,0x7f,0x0,0xff,0xc4,0xaa,0x19,0xfd,0xaf,0x1e,0xb7,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x8,0x17,0xd,0x4,0x3b,0xfa,0x91,0x2a,0xb6,0x0,0x0,0x3,0x44,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0x3f,0x68,0xdc,0x76,0x14,0xc7,0xbf,0xef,0xa7,0x9f,0x7e,0x3a,0xdd,0x39,0xf6,0xdd,0x95,0xb3,0x3,0xc1,0x75,0x1b,0x70,0xa,0xe9,0x98,0x25,0x93,0x87,0x52,0x3a,0x4,0x2,0xce,0xe0,0xd2,0x34,0x35,0x94,0x8e,0x1d,0xbc,0xd5,0x4b,0xc7,0x2e,0x25,0x63,0x2,0x5d,0xa,0xa5,0xb1,0x1b,0x2,0xf5,0xd0,0x40,0xa0,0x90,0x10,0x3a,0x64,0xca,0x92,0x31,0x81,0x24,0xd0,0xd2,0x9a,0x40,0x2f,0x17,0xdf,0x1f,0xfb,0x74,0xf2,0xe9,0x27,0xfd,0x5e,0x7,0x49,0xb6,0x4e,0xe7,0xea,0x86,0x6e,0xe5,0x1e,0xdc,0x49,0x42,0xef,0x7d,0xde,0xf7,0x7d,0xf5,0x13,0xe8,0x47,0xcc,0x4c,0x0,0xc4,0xbd,0x7b,0x4f,0x9c,0xb0,0xdd,0x71,0xdb,0xfb,0x2d,0xc7,0xb0,0x11,0x5a,0x7,0x84,0x4c,0xd8,0xb6,0x62,0x41,0xc2,0xd4,0x67,0x1b,0x43,0x59,0xaf,0xf9,0x97,0x2f,0x5f,0x18,0x2,0x30,0xc4,0xcc,0xd6,0xdd,0x1f,0xef,0x9e,0xea,0x79,0x83,0x33,0xed,0x6e,0xf7,0x6c,0xaf,0xd7,0x59,0xe8,0x7b,0xfd,0x72,0x10,0x4,0x32,0xb,0x50,0x4a,0x85,0x33,0x95,0x99,0xc1,0xdc,0x5c,0xad,0x59,0xaf,0x56,0x7f,0x9f,0xab,0x94,0x5f,0xad,0x7e,0xbe,0x7a,0x40,0x5b,0x5b,0xf7,0x2b,0x41,0xbb,0xf9,0x6e,0xa7,0xd7,0x5e,0xb9,0x72,0x75,0xe5,0x86,0x72,0xa4,0x85,0x82,0x8,0x86,0x61,0xf4,0xcb,0x9d,0x47,0x1b,0xb5,0xb9,0xfa,0x23,0x55,0x5f,0xf8,0x43,0xea,0x4e,0xb7,0xdc,0x7c,0xf3,0xfa,0xdc,0xc7,0xeb,0x1f,0xdc,0x64,0x66,0x71,0xb8,0x37,0xbb,0x2b,0x1d,0xb,0x44,0x23,0x13,0x80,0x99,0x11,0xe,0x23,0x50,0x65,0x6f,0x71,0xf5,0x93,0x95,0x9b,0x3f,0x6f,0xff,0xb6,0x76,0x9a,0x9c,0xa6,0x8,0x42,0x5f,0x79,0xfd,0x83,0x79,0xa7,0x24,0x5,0xfc,0xfa,0x2e,0x9,0x42,0xa8,0xd,0xc2,0x20,0x1a,0xfd,0x69,0x3,0x12,0x4,0xf8,0xf5,0x5d,0xa7,0x24,0x85,0xd7,0x3f,0x98,0xf,0x42,0x5f,0x9,0xc3,0x46,0xc,0xfc,0x81,0xb,0x0,0x91,0x66,0x30,0x1b,0x10,0x0,0x98,0x6c,0x7b,0x80,0xc0,0x60,0x66,0x44,0x21,0x3,0x0,0x6,0xfe,0xc0,0x35,0x6c,0x84,0xd0,0x5a,0x53,0x84,0x88,0x0,0x80,0x13,0xd9,0xcc,0xc,0x88,0xb8,0x10,0x0,0x40,0x0,0x1b,0x0,0xcc,0x0,0xc7,0x39,0x11,0x22,0xd2,0x5a,0x93,0xb4,0x6d,0x9b,0x11,0x25,0x89,0x86,0xc1,0x20,0x80,0x18,0xa0,0xe3,0xee,0x47,0xd0,0xcc,0x31,0xad,0x91,0x79,0xa3,0x40,0x4,0x80,0x91,0xe6,0xe5,0x83,0x73,0x37,0x64,0xee,0x2e,0xd8,0x24,0x9,0xc4,0xc7,0xa,0xb2,0x6a,0x8a,0x0,0x1c,0xf7,0xce,0x5e,0xc4,0xc5,0xe6,0x18,0x92,0x57,0x36,0x2,0x30,0x26,0x33,0x7b,0xe2,0x1e,0x71,0xe2,0xb,0x33,0x68,0xf2,0x8,0xd9,0x16,0x94,0xd1,0x13,0xff,0x9b,0x49,0xa,0xc0,0x6,0x6c,0x72,0xf6,0x8f,0xbb,0x58,0xe0,0x41,0x32,0x77,0x22,0x1a,0xc9,0xf2,0x49,0x87,0x89,0xcf,0x8a,0x14,0xc4,0x0,0x93,0x14,0x66,0xba,0xd1,0xf1,0xec,0xa6,0x18,0x60,0xe2,0xfa,0x91,0xde,0xd9,0xae,0x34,0xf9,0x31,0x52,0xba,0x1e,0x28,0x5d,0x4c,0x94,0xfa,0x99,0xbc,0xf,0x45,0xa,0x4c,0x5c,0x38,0xd6,0xc9,0xe0,0xe8,0x89,0xe4,0xad,0x1d,0x5f,0xca,0x9c,0x7f,0x15,0x8b,0x63,0xdc,0xc4,0x7c,0x8f,0x8c,0x91,0xb9,0x93,0x71,0xc0,0xd7,0xdf,0x7c,0xf5,0xea,0xd9,0x8b,0xa7,0x85,0x1d,0xcf,0x9f,0x7b,0x1f,0xdf,0xdf,0xfa,0x76,0xf1,0x44,0xc0,0xd9,0xa5,0x65,0x58,0xc2,0x2e,0x4,0x2c,0x2d,0xbe,0xf3,0xef,0xa,0x3c,0xaf,0x8f,0xde,0x7e,0xb7,0x10,0xe0,0x79,0xfd,0x91,0x6b,0x81,0xff,0x18,0x53,0xc0,0x14,0x30,0x5,0x4c,0x1,0x53,0xc0,0x14,0x30,0x5,0xfc,0xff,0x0,0x5a,0x6b,0x82,0x75,0xe2,0xe7,0xcf,0xc9,0x91,0xe6,0x58,0x19,0x5,0x16,0x2c,0x6,0x0,0x5b,0xca,0x89,0xf5,0x69,0x4e,0x5a,0x23,0x1c,0xe5,0x44,0x8e,0x52,0x1,0x0,0x94,0xdd,0x99,0x89,0x80,0x34,0xc7,0x51,0x2a,0x70,0x94,0x13,0x49,0x25,0xdd,0xa0,0xe4,0x96,0x5b,0xc3,0x43,0xcd,0x1b,0x9b,0x9f,0x5e,0xbc,0x71,0x9d,0x1e,0xf,0xfc,0x3,0xe8,0x30,0x1c,0xd9,0x74,0xd9,0x52,0xa2,0xec,0x9e,0xc2,0xc6,0xe6,0xd5,0x8b,0xc3,0x43,0xcd,0x25,0xb7,0xdc,0x52,0xd2,0xd,0x68,0x6b,0xeb,0x7e,0x65,0xef,0xaf,0x97,0xcb,0xdd,0xfd,0xce,0x87,0x9f,0x7d,0x71,0xe9,0xba,0xe3,0xda,0x85,0x4e,0xc,0x7d,0xcd,0x3f,0xfd,0xf0,0xeb,0x66,0x75,0xb6,0xf6,0xf0,0xad,0xb7,0x97,0x5f,0x12,0x33,0x5b,0xb7,0xbf,0xbb,0x3d,0xdb,0xea,0x74,0x97,0x3a,0xdd,0xee,0x7b,0x3,0xdf,0x9b,0xd7,0x5a,0xdb,0xc6,0x8c,0x7e,0xad,0xa,0x21,0x60,0xdb,0xb6,0x2e,0xbb,0x95,0xd7,0xb5,0x6a,0xf5,0x79,0xa3,0x56,0xfd,0xf3,0xda,0x97,0xd7,0xf6,0x29,0xdd,0xbd,0x6f,0x6f,0x3f,0x28,0xf5,0xff,0x6e,0x56,0xb4,0x19,0x2a,0x66,0x73,0xe2,0xe3,0x25,0x12,0xc6,0x16,0x4e,0x30,0x73,0x7a,0xc1,0x5b,0x5f,0xff,0xe8,0x10,0xc0,0xd1,0xf6,0x4,0xcc,0x4c,0x3b,0x3b,0x3b,0xa2,0xd1,0x68,0x14,0x8e,0xd0,0x6a,0xb5,0x78,0x6d,0x6d,0xcd,0x10,0xc5,0xdb,0xba,0x7f,0x0,0xb2,0x1f,0xaf,0x82,0x62,0x7a,0x69,0xbb,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; @@ -544,6 +554,11 @@ static const unsigned char vsplitter_png[]={ }; +static const unsigned char window_resizer_png[]={ +0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x8,0x19,0x11,0x33,0x13,0xaa,0xc0,0xf,0x5f,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x0,0x2f,0x49,0x44,0x41,0x54,0x38,0xcb,0x63,0x60,0x18,0x5,0x24,0x81,0x17,0x2f,0x5e,0xf4,0xa3,0x8b,0x31,0x91,0xa2,0xb9,0xb9,0xb9,0x99,0x7c,0x9b,0xb3,0xb3,0xb3,0xfb,0x87,0x81,0x66,0x6c,0x81,0x48,0x92,0x66,0xa2,0x5c,0x43,0x91,0xe6,0x11,0xa,0x0,0x73,0x5b,0x34,0x19,0x10,0xa0,0xb6,0x7d,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + + diff --git a/scene/resources/default_theme/window_resizer.png b/scene/resources/default_theme/window_resizer.png Binary files differnew file mode 100644 index 0000000000..ed51968c4e --- /dev/null +++ b/scene/resources/default_theme/window_resizer.png diff --git a/scene/resources/scene_format_text.cpp b/scene/resources/scene_format_text.cpp index 7bb9ca90ae..615c092dad 100644 --- a/scene/resources/scene_format_text.cpp +++ b/scene/resources/scene_format_text.cpp @@ -1289,6 +1289,10 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_re } internal_resources[res]=idx; +#ifdef TOOLS_ENABLED + res->set_edited(false); +#endif + } diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp index 54cd929c2f..8e92a475ab 100644 --- a/servers/physics_2d/physics_2d_server_sw.cpp +++ b/servers/physics_2d/physics_2d_server_sw.cpp @@ -1016,14 +1016,14 @@ void Physics2DServerSW::body_set_pickable(RID p_body,bool p_pickable) { } -bool Physics2DServerSW::body_test_motion(RID p_body,const Vector2& p_motion,float p_margin,MotionResult *r_result) { +bool Physics2DServerSW::body_test_motion(RID p_body, const Matrix32 &p_from, const Vector2& p_motion, float p_margin, MotionResult *r_result) { Body2DSW *body = body_owner.get(p_body); ERR_FAIL_COND_V(!body,false); ERR_FAIL_COND_V(!body->get_space(),false); ERR_FAIL_COND_V(body->get_space()->is_locked(),false); - return body->get_space()->test_body_motion(body,p_motion,p_margin,r_result); + return body->get_space()->test_body_motion(body,p_from,p_motion,p_margin,r_result); } diff --git a/servers/physics_2d/physics_2d_server_sw.h b/servers/physics_2d/physics_2d_server_sw.h index d557688b91..1dc735289a 100644 --- a/servers/physics_2d/physics_2d_server_sw.h +++ b/servers/physics_2d/physics_2d_server_sw.h @@ -236,7 +236,7 @@ public: virtual void body_set_pickable(RID p_body,bool p_pickable); - virtual bool body_test_motion(RID p_body,const Vector2& p_motion,float p_margin=0.001,MotionResult *r_result=NULL); + virtual bool body_test_motion(RID p_body,const Matrix32& p_from,const Vector2& p_motion,float p_margin=0.001,MotionResult *r_result=NULL); /* JOINT API */ diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.h b/servers/physics_2d/physics_2d_server_wrap_mt.h index fd98da2d9c..57da958f9a 100644 --- a/servers/physics_2d/physics_2d_server_wrap_mt.h +++ b/servers/physics_2d/physics_2d_server_wrap_mt.h @@ -266,10 +266,10 @@ public: FUNC2(body_set_pickable,RID,bool); - bool body_test_motion(RID p_body,const Vector2& p_motion,float p_margin=0.001,MotionResult *r_result=NULL) { + bool body_test_motion(RID p_body,const Matrix32& p_from,const Vector2& p_motion,float p_margin=0.001,MotionResult *r_result=NULL) { ERR_FAIL_COND_V(main_thread!=Thread::get_caller_ID(),false); - return physics_2d_server->body_test_motion(p_body,p_motion,p_margin,r_result); + return physics_2d_server->body_test_motion(p_body,p_from,p_motion,p_margin,r_result); } /* JOINT API */ diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp index 5fde6f567b..d0dcee7763 100644 --- a/servers/physics_2d/space_2d_sw.cpp +++ b/servers/physics_2d/space_2d_sw.cpp @@ -589,7 +589,7 @@ int Space2DSW::_cull_aabb_for_body(Body2DSW *p_body,const Rect2& p_aabb) { return amount; } -bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p_margin,Physics2DServer::MotionResult *r_result) { +bool Space2DSW::test_body_motion(Body2DSW *p_body, const Matrix32 &p_from, const Vector2&p_motion, float p_margin, Physics2DServer::MotionResult *r_result) { //give me back regular physics engine logic //this is madness @@ -598,6 +598,11 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p //this took about a week to get right.. //but is it right? who knows at this point.. + if (r_result) { + r_result->collider_id=0; + r_result->collider_shape=0; + + } Rect2 body_aabb; for(int i=0;i<p_body->get_shape_count();i++) { @@ -610,8 +615,7 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p body_aabb=body_aabb.grow(p_margin); - - Matrix32 body_transform = p_body->get_transform(); + Matrix32 body_transform = p_from; { //STEP 1, FREE BODY IF STUCK @@ -681,6 +685,17 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p Vector2 a = sr[i*2+0]; Vector2 b = sr[i*2+1]; +#if 0 + Vector2 rel = b-a; + float d = rel.length(); + if (d==0) + continue; + + Vector2 n = rel/d; + float traveled = n.dot(recover_motion); + a+=n*traveled; + +#endif // float d = a.distance_to(b); //if (d<margin) @@ -833,8 +848,9 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p collided=false; if (r_result) { - r_result->motion=p_motion+(body_transform.elements[2]-p_body->get_transform().elements[2]); - r_result->remainder=Vector2(); + r_result->motion=p_motion; + r_result->remainder=Vector2(); + r_result->motion+=(body_transform.elements[2]-p_from.elements[2]); } } else { @@ -895,16 +911,19 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p Vector2 rel_vec = r_result->collision_point-body->get_transform().get_origin(); r_result->collider_velocity = Vector2(-body->get_angular_velocity() * rel_vec.y, body->get_angular_velocity() * rel_vec.x) + body->get_linear_velocity(); - r_result->motion=safe*p_motion+(body_transform.elements[2]-p_body->get_transform().elements[2]); + r_result->motion=safe*p_motion; r_result->remainder=p_motion - safe * p_motion; + r_result->motion+=(body_transform.elements[2]-p_from.elements[2]); + } collided=true; } else { if (r_result) { - r_result->motion=p_motion+(body_transform.elements[2]-p_body->get_transform().elements[2]); + r_result->motion=p_motion; r_result->remainder=Vector2(); + r_result->motion+=(body_transform.elements[2]-p_from.elements[2]); } collided=false; diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h index f8e1f32838..f58e8c3fe7 100644 --- a/servers/physics_2d/space_2d_sw.h +++ b/servers/physics_2d/space_2d_sw.h @@ -184,7 +184,7 @@ public: int get_collision_pairs() const { return collision_pairs; } - bool test_body_motion(Body2DSW *p_body, const Vector2&p_motion, float p_margin, Physics2DServer::MotionResult *r_result); + bool test_body_motion(Body2DSW *p_body, const Matrix32 &p_from, const Vector2&p_motion, float p_margin, Physics2DServer::MotionResult *r_result); void set_debug_contacts(int p_amount) { contact_debug.resize(p_amount); } diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp index e41461c11f..a77b13eb21 100644 --- a/servers/physics_2d_server.cpp +++ b/servers/physics_2d_server.cpp @@ -493,12 +493,12 @@ Physics2DTestMotionResult::Physics2DTestMotionResult(){ -bool Physics2DServer::_body_test_motion(RID p_body,const Vector2& p_motion,float p_margin,const Ref<Physics2DTestMotionResult>& p_result) { +bool Physics2DServer::_body_test_motion(RID p_body,const Matrix32& p_from,const Vector2& p_motion,float p_margin,const Ref<Physics2DTestMotionResult>& p_result) { MotionResult *r=NULL; if (p_result.is_valid()) r=p_result->get_result_ptr(); - return body_test_motion(p_body,p_motion,p_margin,r); + return body_test_motion(p_body,p_from,p_motion,p_margin,r); } void Physics2DServer::_bind_methods() { @@ -619,7 +619,7 @@ void Physics2DServer::_bind_methods() { ObjectTypeDB::bind_method(_MD("body_set_force_integration_callback","body","receiver","method","userdata"),&Physics2DServer::body_set_force_integration_callback,DEFVAL(Variant())); - ObjectTypeDB::bind_method(_MD("body_test_motion","body","motion","margin","result:Physics2DTestMotionResult"),&Physics2DServer::_body_test_motion,DEFVAL(0.08),DEFVAL(Variant())); + ObjectTypeDB::bind_method(_MD("body_test_motion","body","from","motion","margin","result:Physics2DTestMotionResult"),&Physics2DServer::_body_test_motion,DEFVAL(0.08),DEFVAL(Variant())); /* JOINT API */ diff --git a/servers/physics_2d_server.h b/servers/physics_2d_server.h index 53c5a9ecc0..10707e9314 100644 --- a/servers/physics_2d_server.h +++ b/servers/physics_2d_server.h @@ -238,7 +238,7 @@ class Physics2DServer : public Object { static Physics2DServer * singleton; - virtual bool _body_test_motion(RID p_body,const Vector2& p_motion,float p_margin=0.08,const Ref<Physics2DTestMotionResult>& p_result=Ref<Physics2DTestMotionResult>()); + virtual bool _body_test_motion(RID p_body, const Matrix32 &p_from, const Vector2& p_motion, float p_margin=0.08, const Ref<Physics2DTestMotionResult>& p_result=Ref<Physics2DTestMotionResult>()); protected: static void _bind_methods(); @@ -497,7 +497,7 @@ public: Variant collider_metadata; }; - virtual bool body_test_motion(RID p_body,const Vector2& p_motion,float p_margin=0.001,MotionResult *r_result=NULL)=0; + virtual bool body_test_motion(RID p_body,const Matrix32& p_from,const Vector2& p_motion,float p_margin=0.001,MotionResult *r_result=NULL)=0; /* JOINT API */ diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index 50ec6792cc..8cc567072f 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -685,6 +685,7 @@ public: Point2 from,to; Color color; float width; + bool antialiased; CommandLine() { type = TYPE_LINE; } }; @@ -948,7 +949,7 @@ public: virtual void canvas_begin_rect(const Matrix32& p_transform)=0; virtual void canvas_set_clip(bool p_clip, const Rect2& p_rect)=0; virtual void canvas_end_rect()=0; - virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width)=0; + virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased)=0; virtual void canvas_draw_rect(const Rect2& p_rect, int p_flags, const Rect2& p_source,RID p_texture,const Color& p_modulate)=0; virtual void canvas_draw_style_box(const Rect2& p_rect, const Rect2& p_src_region, RID p_texture,const float *p_margins, bool p_draw_center=true,const Color& p_modulate=Color(1,1,1))=0; virtual void canvas_draw_primitive(const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width)=0; diff --git a/servers/visual/rasterizer_dummy.cpp b/servers/visual/rasterizer_dummy.cpp index 0e71d224d5..edbdc2fe23 100644 --- a/servers/visual/rasterizer_dummy.cpp +++ b/servers/visual/rasterizer_dummy.cpp @@ -1615,7 +1615,7 @@ void RasterizerDummy::canvas_end_rect() { } -void RasterizerDummy::canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width) { +void RasterizerDummy::canvas_draw_line(const Point2& p_from, const Point2& p_to, const Color& p_color, float p_width, bool p_antialiased) { diff --git a/servers/visual/rasterizer_dummy.h b/servers/visual/rasterizer_dummy.h index ac320e55f9..cac36eb6fc 100644 --- a/servers/visual/rasterizer_dummy.h +++ b/servers/visual/rasterizer_dummy.h @@ -706,7 +706,7 @@ public: virtual void canvas_begin_rect(const Matrix32& p_transform); virtual void canvas_set_clip(bool p_clip, const Rect2& p_rect); virtual void canvas_end_rect(); - virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width); + virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased); virtual void canvas_draw_rect(const Rect2& p_rect, int p_flags, const Rect2& p_source,RID p_texture,const Color& p_modulate); virtual void canvas_draw_style_box(const Rect2& p_rect, const Rect2& p_src_region, RID p_texture,const float *p_margins, bool p_draw_center=true,const Color& p_modulate=Color(1,1,1)); virtual void canvas_draw_primitive(const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width); diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index d89ea887fa..f7614ac080 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -3629,7 +3629,7 @@ float VisualServerRaster::canvas_item_get_self_opacity(RID p_item, float p_self_ } -void VisualServerRaster::canvas_item_add_line(RID p_item, const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width) { +void VisualServerRaster::canvas_item_add_line(RID p_item, const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased) { VS_CHANGED; CanvasItem *canvas_item = canvas_item_owner.get( p_item ); ERR_FAIL_COND(!canvas_item); @@ -3640,6 +3640,7 @@ void VisualServerRaster::canvas_item_add_line(RID p_item, const Point2& p_from, line->from=p_from; line->to=p_to; line->width=p_width; + line->antialiased=p_antialiased; canvas_item->rect_dirty=true; diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 228a4a7c44..496820f4a8 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -1168,7 +1168,7 @@ public: virtual void canvas_item_attach_viewport(RID p_item, RID p_viewport); - virtual void canvas_item_add_line(RID p_item, const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width=1.0); + virtual void canvas_item_add_line(RID p_item, const Point2& p_from, const Point2& p_to, const Color& p_color, float p_width=1.0, bool p_antialiased=false); virtual void canvas_item_add_rect(RID p_item, const Rect2& p_rect, const Color& p_color); virtual void canvas_item_add_circle(RID p_item, const Point2& p_pos, float p_radius,const Color& p_color); virtual void canvas_item_add_texture_rect(RID p_item, const Rect2& p_rect, RID p_texture,bool p_tile=false,const Color& p_modulate=Color(1,1,1),bool p_transpose=false); diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 8c39b0bea1..b4e374dd6f 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -602,7 +602,7 @@ public: FUNC2(canvas_item_attach_viewport,RID, RID ); - FUNC5(canvas_item_add_line,RID, const Point2& , const Point2& ,const Color& ,float ); + FUNC6(canvas_item_add_line,RID, const Point2& , const Point2& ,const Color& ,float,bool); FUNC3(canvas_item_add_rect,RID, const Rect2& , const Color& ); FUNC4(canvas_item_add_circle,RID, const Point2& , float ,const Color& ); FUNC6(canvas_item_add_texture_rect,RID, const Rect2& , RID ,bool ,const Color&,bool ); diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index 9ec02f5071..f69580254c 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -532,7 +532,7 @@ void VisualServer::_bind_methods() { ObjectTypeDB::bind_method(_MD("canvas_item_get_self_opacity"),&VisualServer::canvas_item_get_self_opacity); ObjectTypeDB::bind_method(_MD("canvas_item_set_z"),&VisualServer::canvas_item_set_z); - ObjectTypeDB::bind_method(_MD("canvas_item_add_line"),&VisualServer::canvas_item_add_line, DEFVAL(1.0)); + ObjectTypeDB::bind_method(_MD("canvas_item_add_line"),&VisualServer::canvas_item_add_line, DEFVAL(1.0), DEFVAL(false)); ObjectTypeDB::bind_method(_MD("canvas_item_add_rect"),&VisualServer::canvas_item_add_rect); ObjectTypeDB::bind_method(_MD("canvas_item_add_texture_rect"),&VisualServer::canvas_item_add_texture_rect, DEFVAL(Color(1,1,1)), DEFVAL(false)); ObjectTypeDB::bind_method(_MD("canvas_item_add_texture_rect_region"),&VisualServer::canvas_item_add_texture_rect_region, DEFVAL(Color(1,1,1)), DEFVAL(false)); diff --git a/servers/visual_server.h b/servers/visual_server.h index 64318dfd72..2f3d8371f6 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -1020,7 +1020,7 @@ public: virtual void canvas_item_set_on_top(RID p_item, bool p_on_top)=0; virtual bool canvas_item_is_on_top(RID p_item) const=0; - virtual void canvas_item_add_line(RID p_item, const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width=1.0)=0; + virtual void canvas_item_add_line(RID p_item, const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width=1.0,bool p_antialiased=false)=0; virtual void canvas_item_add_rect(RID p_item, const Rect2& p_rect, const Color& p_color)=0; virtual void canvas_item_add_circle(RID p_item, const Point2& p_pos, float p_radius,const Color& p_color)=0; virtual void canvas_item_add_texture_rect(RID p_item, const Rect2& p_rect, RID p_texture,bool p_tile=false,const Color& p_modulate=Color(1,1,1),bool p_transpose=false)=0; diff --git a/tools/SCsub b/tools/SCsub index f6c14a13fb..aaebab724a 100644 --- a/tools/SCsub +++ b/tools/SCsub @@ -115,10 +115,7 @@ if (env["tools"]!="no"): env.Command('#tools/editor/builtin_fonts.h',flist,make_fonts_header) SConscript('editor/SCsub'); - #SConscript('scintilla/SCsub'); SConscript('collada/SCsub'); - SConscript('docdump/SCsub'); - #SConscript('freetype/SCsub'); SConscript('doc/SCsub') SConscript('pck/SCsub') diff --git a/tools/addheader/files b/tools/addheader/files deleted file mode 100644 index 7b0968236c..0000000000 --- a/tools/addheader/files +++ /dev/null @@ -1,158 +0,0 @@ -./scene/*.h -./scene/*.cpp -./scene/io/*.h -./scene/io/*.cpp -./scene/main/*.h -./scene/main/*.cpp -./scene/resources/*.h -./scene/resources/*.cpp -./scene/gui/*.h -./scene/gui/*.cpp -./scene/audio/*.h -./scene/audio/*.cpp -./scene/3d/*.h -./scene/3d/*.cpp -./scene/2d/*.h -./scene/2d/*.cpp -./scene/animation/*.h -./scene/animation/*.cpp -./bin/tests/*.h -./bin/tests/*.cpp -./main/*.h -./main/*.cpp -./modules/gridmap/*.h -./modules/gridmap/*.cpp -./servers/*.h -./servers/*.cpp -./servers/physics_2d/*.h -./servers/physics_2d/*.cpp -./servers/physics/*.h -./servers/physics/*.cpp -./servers/visual/*.h -./servers/visual/*.cpp -./servers/spatial_sound_2d/*.h -./servers/spatial_sound_2d/*.cpp -./servers/audio/*.h -./servers/audio/*.cpp -./tools/doc/doc_data.h -./tools/doc/doc_data.cpp -./tools/collada/collada.h -./tools/collada/collada.cpp -./tools/editor/*.h -./tools/editor/*.cpp -./tools/editor/plugins/*.h -./tools/editor/plugins/*.cpp -./tools/editor/io_plugins/*.h -./tools/editor/io_plugins/*.cpp -./tools/docdump/doc_dump.h -./tools/docdump/doc_dump.cpp -./core/*.h -./core/*.cpp -./core/io/object_format_binary.h -./core/io/file_access_buffered_fa.h -./core/io/file_access_buffered.h -./core/io/resource_saver.h -./core/io/file_access_compressed.cpp -./core/io/object_format_xml.cpp -./core/io/http_client.h -./core/io/object_format_xml.h -./core/io/compression.h -./core/io/ip_address.h -./core/io/file_access_pack.h -./core/io/ip.h -./core/io/tcp_server.h -./core/io/tcp_server.cpp -./core/io/packet_peer.cpp -./core/io/marshalls.h -./core/io/stream_peer.cpp -./core/io/resource_loader.cpp -./core/io/stream_peer_tcp.h -./core/io/stream_peer_tcp.cpp -./core/io/translation_loader_po.h -./core/io/zip_io.h -./core/io/ip_address.cpp -./core/io/object_saver_base.cpp -./core/io/object_loader.cpp -./core/io/xml_parser.h -./core/io/file_access_network.cpp -./core/io/resource_loader.h -./core/io/packet_peer.h -./core/io/stream_peer.h -./core/io/marshalls.cpp -./core/io/config_file.h -./core/io/ip.cpp -./core/io/file_access_zip.cpp -./core/io/resource_format_binary.h -./core/io/image_loader.h -./core/io/file_access_zip.h -./core/io/http_client.cpp -./core/io/file_access_memory.h -./core/io/xml_parser.cpp -./core/io/object_saver_base.h -./core/io/object_saver.cpp -./core/io/compression.cpp -./core/io/resource_format_xml.cpp -./core/io/object_format_binary.cpp -./core/io/file_access_compressed.h -./core/io/json.h -./core/io/file_access_pack.cpp -./core/io/resource_format_binary.cpp -./core/io/object_loader.h -./core/io/object_saver.h -./core/io/json.cpp -./core/io/file_access_network.h -./core/io/resource_saver.cpp -./core/io/file_access_memory.cpp -./core/io/image_loader.cpp -./core/io/resource_format_xml.h -./core/io/file_access_buffered.cpp -./core/io/config_file.cpp -./core/io/translation_loader_po.cpp -./core/os/*.h -./core/os/*.cpp -./core/math/*.h -./core/math/*.cpp -./script/gdscript/*.h -./script/gdscript/*.cpp -./script/multiscript/multi_script.cpp -./script/multiscript/multi_script.h -./script/register_script_types.h -./platform/android/*.h -./platform/android/*.cpp -./platform/android/java/src/com/android/godot/*.java -./platform/server/*.h -./platform/server/*.cpp -./platform/bb10/*.h -./platform/bb10/*.cpp -./platform/javascript/*.h -./platform/javascript/*.cpp -./platform/javascript/export/export.h -./platform/javascript/export/export.cpp -./platform/iphone/*.h -./platform/iphone/*.cpp -./platform/iphone/*.mm -./platform/windows/*.h -./platform/windows/*.cpp -./platform/osx/*.h -./platform/osx/*.cpp -./platform/osx/*.mm -./platform/x11/*.h -./platform/x11/*.cpp -./drivers/unix/*.h -./drivers/unix/*.cpp -./drivers/gles2/*.h -./drivers/gles2/*.cpp -./drivers/chibi/*.h -./drivers/chibi/*.cpp -./drivers/png/resource_saver_png.cpp -./drivers/png/image_loader_png.cpp -./drivers/png/image_loader_png.h -./drivers/vorbis/audio_stream_ogg_vorbis.h -./drivers/vorbis/audio_stream_ogg_vorbis.cpp -./drivers/gl_context/context_gl.h -./drivers/gles1/*.h -./drivers/gles1/*.cpp -./drivers/windows/*.h -./drivers/windows/*.cpp -./drivers/alsa/audio_driver_alsa.h -./drivers/alsa/audio_driver_alsa.cpp diff --git a/tools/addheader/header.txt b/tools/addheader/header.txt deleted file mode 100644 index e4efb2dcfc..0000000000 --- a/tools/addheader/header.txt +++ /dev/null @@ -1,12 +0,0 @@ -/*************************************************/ -/* $filename */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - - diff --git a/tools/buildstuff/zlib_freetype231_jpeg_libpng-bin-win32-vs81.zip b/tools/buildstuff/zlib_freetype231_jpeg_libpng-bin-win32-vs81.zip Binary files differdeleted file mode 100644 index 4adf30ea29..0000000000 --- a/tools/buildstuff/zlib_freetype231_jpeg_libpng-bin-win32-vs81.zip +++ /dev/null diff --git a/tools/docker/Dockerfile b/tools/dist/docker/Dockerfile index 428de9d1a7..428de9d1a7 100644 --- a/tools/docker/Dockerfile +++ b/tools/dist/docker/Dockerfile diff --git a/tools/docker/README.md b/tools/dist/docker/README.md index 7f10b46ad8..7f10b46ad8 100644 --- a/tools/docker/README.md +++ b/tools/dist/docker/README.md diff --git a/tools/docker/scripts/install-android-tools b/tools/dist/docker/scripts/install-android-tools index 8a617d9942..8a617d9942 100644 --- a/tools/docker/scripts/install-android-tools +++ b/tools/dist/docker/scripts/install-android-tools diff --git a/tools/html_fs/godot.html b/tools/dist/html_fs/godot.html index c354826e1f..c354826e1f 100644 --- a/tools/html_fs/godot.html +++ b/tools/dist/html_fs/godot.html diff --git a/tools/html_fs/godotfs.js b/tools/dist/html_fs/godotfs.js index 2c59344cf5..2c59344cf5 100644 --- a/tools/html_fs/godotfs.js +++ b/tools/dist/html_fs/godotfs.js diff --git a/platform/iphone/xcode/godot_xcode/data.pck b/tools/dist/ios_xcode/godot_xcode/data.pck index e69de29bb2..e69de29bb2 100644 --- a/platform/iphone/xcode/godot_xcode/data.pck +++ b/tools/dist/ios_xcode/godot_xcode/data.pck diff --git a/platform/iphone/xcode/godot_xcode/godot_debug.iphone b/tools/dist/ios_xcode/godot_xcode/godot_debug.iphone index e69de29bb2..e69de29bb2 100755 --- a/platform/iphone/xcode/godot_xcode/godot_debug.iphone +++ b/tools/dist/ios_xcode/godot_xcode/godot_debug.iphone diff --git a/platform/iphone/xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj b/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj index bdba8488c8..bdba8488c8 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj diff --git a/platform/iphone/xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 3c9ba38bbe..3c9ba38bbe 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png Binary files differindex 1d5e472665..1d5e472665 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-667h.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png Binary files differindex b13a399c83..b13a399c83 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-667h.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-667h@2x.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png Binary files differindex b51598fed0..b51598fed0 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-667h@2x.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-736h.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png Binary files differindex 8c44edbccd..8c44edbccd 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-736h.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-736h@3x.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png Binary files differindex 33847ac136..33847ac136 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-736h@3x.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Landscape-736h.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png Binary files differindex 2a025b745b..2a025b745b 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Landscape-736h.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png Binary files differindex 7099f3e18d..7099f3e18d 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png Binary files differindex 4a761c339a..4a761c339a 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png Binary files differindex b09cf21186..b09cf21186 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png Binary files differindex fa698eb70c..fa698eb70c 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default@2x~iphone.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png Binary files differindex ddf2861f4d..ddf2861f4d 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default@2x~iphone.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Default~iphone.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png Binary files differindex c485a33b03..c485a33b03 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Default~iphone.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json index a458b67873..a458b67873 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png Binary files differindex 165f4423b3..165f4423b3 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png Binary files differindex 2e205e920c..2e205e920c 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png Binary files differindex 6245f83f48..6245f83f48 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png Binary files differindex 7b24e01bc6..7b24e01bc6 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png Binary files differindex 344b470fa3..344b470fa3 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png Binary files differindex 0dcebbc3f2..0dcebbc3f2 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png Binary files differindex 9ae94e9aaf..9ae94e9aaf 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png Binary files differindex 569f24df91..569f24df91 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png Binary files differindex 9e69ed3121..9e69ed3121 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png Binary files differindex b970fa3067..b970fa3067 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png Binary files differindex 6097a6c73b..6097a6c73b 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png Binary files differindex 21b9622eb6..21b9622eb6 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png Binary files differindex 34dea8e6ad..34dea8e6ad 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png Binary files differindex f72eb0b345..f72eb0b345 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png Binary files differindex 793c9b1f5f..793c9b1f5f 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png Binary files differindex 7cd0e054ab..7cd0e054ab 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png Binary files differindex e9b2429754..e9b2429754 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes index e328a62cb6..e328a62cb6 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings b/tools/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings index 477b28ff8f..477b28ff8f 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/godot_ios-Info.plist b/tools/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist index f97b0fca36..f97b0fca36 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/godot_ios-Info.plist +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist diff --git a/platform/iphone/xcode/godot_xcode/godot_ios/main.m b/tools/dist/ios_xcode/godot_xcode/godot_ios/main.m index 3e4ea5e129..3e4ea5e129 100644 --- a/platform/iphone/xcode/godot_xcode/godot_ios/main.m +++ b/tools/dist/ios_xcode/godot_xcode/godot_ios/main.m diff --git a/platform/iphone/xcode/godot_xcode/godot_opt.iphone b/tools/dist/ios_xcode/godot_xcode/godot_opt.iphone index e69de29bb2..e69de29bb2 100755 --- a/platform/iphone/xcode/godot_xcode/godot_opt.iphone +++ b/tools/dist/ios_xcode/godot_xcode/godot_opt.iphone diff --git a/tools/osx_template.app/Contents/Info.plist b/tools/dist/osx_template.app/Contents/Info.plist index 5146c875bc..5146c875bc 100755 --- a/tools/osx_template.app/Contents/Info.plist +++ b/tools/dist/osx_template.app/Contents/Info.plist diff --git a/tools/Godot.app/Contents/PkgInfo b/tools/dist/osx_template.app/Contents/PkgInfo index 6f749b0f37..6f749b0f37 100644 --- a/tools/Godot.app/Contents/PkgInfo +++ b/tools/dist/osx_template.app/Contents/PkgInfo diff --git a/tools/osx_template.app/Contents/Resources/icon.icns b/tools/dist/osx_template.app/Contents/Resources/icon.icns Binary files differindex 375f61437d..375f61437d 100644 --- a/tools/osx_template.app/Contents/Resources/icon.icns +++ b/tools/dist/osx_template.app/Contents/Resources/icon.icns diff --git a/tools/Godot.app/Contents/Info.plist b/tools/dist/osx_tools.app/Contents/Info.plist index 2a3e727133..2a3e727133 100755 --- a/tools/Godot.app/Contents/Info.plist +++ b/tools/dist/osx_tools.app/Contents/Info.plist diff --git a/tools/osx_template.app/Contents/PkgInfo b/tools/dist/osx_tools.app/Contents/PkgInfo index 6f749b0f37..6f749b0f37 100644 --- a/tools/osx_template.app/Contents/PkgInfo +++ b/tools/dist/osx_tools.app/Contents/PkgInfo diff --git a/tools/Godot.app/Contents/Resources/Godot.icns b/tools/dist/osx_tools.app/Contents/Resources/Godot.icns Binary files differindex 375f61437d..375f61437d 100644 --- a/tools/Godot.app/Contents/Resources/Godot.icns +++ b/tools/dist/osx_tools.app/Contents/Resources/Godot.icns diff --git a/tools/doc/doc_data.cpp b/tools/doc/doc_data.cpp index 398267937b..4a8fdfb215 100644 --- a/tools/doc/doc_data.cpp +++ b/tools/doc/doc_data.cpp @@ -198,6 +198,11 @@ void DocData::generate(bool p_basic_types) { if (method.qualifiers!="") method.qualifiers+=" "; method.qualifiers+="const"; + + } else if (E->get().flags&METHOD_FLAG_VARARG) { + if (method.qualifiers!="") + method.qualifiers+=" "; + method.qualifiers+="vararg"; } for(int i=-1;i<E->get().arguments.size();i++) { @@ -276,14 +281,9 @@ void DocData::generate(bool p_basic_types) { default_arg_text=Variant::get_type_name(default_arg.get_type())+"("+default_arg_text+")"; break; - case Variant::VECTOR2: // 5 - case Variant::RECT2: - case Variant::VECTOR3: - case Variant::PLANE: - case Variant::QUAT: case Variant::_AABB: //sorry naming convention fail :( not like it's used often // 10 - case Variant::MATRIX3: case Variant::COLOR: + case Variant::PLANE: case Variant::RAW_ARRAY: case Variant::INT_ARRAY: case Variant::REAL_ARRAY: @@ -293,7 +293,18 @@ void DocData::generate(bool p_basic_types) { case Variant::COLOR_ARRAY: default_arg_text=Variant::get_type_name(default_arg.get_type())+"("+default_arg_text+")"; break; + case Variant::VECTOR2: // 5 + case Variant::RECT2: + case Variant::VECTOR3: + case Variant::QUAT: + case Variant::MATRIX3: + default_arg_text=Variant::get_type_name(default_arg.get_type())+default_arg_text; + break; case Variant::OBJECT: + if (default_arg.is_zero()) { + default_arg_text="NULL"; + break; + } case Variant::INPUT_EVENT: case Variant::DICTIONARY: // 20 case Variant::ARRAY: diff --git a/tools/docdump/doc_dump.cpp b/tools/doc/doc_dump.cpp index fbf13f9e8f..fbf13f9e8f 100644 --- a/tools/docdump/doc_dump.cpp +++ b/tools/doc/doc_dump.cpp diff --git a/tools/docdump/doc_dump.h b/tools/doc/doc_dump.h index 372f5e0969..372f5e0969 100644 --- a/tools/docdump/doc_dump.h +++ b/tools/doc/doc_dump.h diff --git a/tools/docdump/SCsub b/tools/docdump/SCsub deleted file mode 100644 index 34524f10ef..0000000000 --- a/tools/docdump/SCsub +++ /dev/null @@ -1,5 +0,0 @@ -Import('env') - -env.add_source_files(env.tool_sources,"*.cpp") - -Export('env') diff --git a/tools/editor/animation_editor.cpp b/tools/editor/animation_editor.cpp index aa0156b0c0..2f67df1fc3 100644 --- a/tools/editor/animation_editor.cpp +++ b/tools/editor/animation_editor.cpp @@ -316,7 +316,7 @@ public: int existing = animation->track_find_key(track,new_time,true); setting=true; - undo_redo->create_action(TTR("Move Add Key"),false); + undo_redo->create_action(TTR("Move Add Key"),UndoRedo::MERGE_ENDS); Variant val = animation->track_get_key_value(track,key); float trans = animation->track_get_key_transition(track,key); @@ -344,7 +344,7 @@ public: float val = p_value; float prev_val = animation->track_get_key_transition(track,key); setting=true; - undo_redo->create_action(TTR("Anim Change Transition"),true); + undo_redo->create_action(TTR("Anim Change Transition"),UndoRedo::MERGE_ENDS); undo_redo->add_do_method(animation.ptr(),"track_set_key_transition",track,key,val); undo_redo->add_undo_method(animation.ptr(),"track_set_key_transition",track,key,prev_val); undo_redo->add_do_method(this,"_update_obj",animation); @@ -387,7 +387,7 @@ public: } setting=true; - undo_redo->create_action(TTR("Anim Change Value"),true); + undo_redo->create_action(TTR("Anim Change Value"),UndoRedo::MERGE_ENDS); Variant prev = animation->track_get_key_value(track,key); undo_redo->add_do_method(animation.ptr(),"track_set_key_value",track,key,value); undo_redo->add_undo_method(animation.ptr(),"track_set_key_value",track,key,prev); @@ -463,7 +463,11 @@ public: } } - undo_redo->create_action(TTR("Anim Change Call"),mergeable); + if (mergeable) + undo_redo->create_action(TTR("Anim Change Call"),UndoRedo::MERGE_ENDS); + else + undo_redo->create_action(TTR("Anim Change Call")); + Variant prev = animation->track_get_key_value(track,key); setting=true; undo_redo->add_do_method(animation.ptr(),"track_set_key_value",track,key,d_new); @@ -1715,9 +1719,9 @@ void AnimationKeyEditor::_curve_transition_changed(float p_what) { if (selection.size()==0) return; if (selection.size()==1) - undo_redo->create_action(TTR("Edit Node Curve"),true); + undo_redo->create_action(TTR("Edit Node Curve"),UndoRedo::MERGE_ENDS); else - undo_redo->create_action(TTR("Edit Selection Curve"),true); + undo_redo->create_action(TTR("Edit Selection Curve"),UndoRedo::MERGE_ENDS); for(Map<SelectedKey,KeyInfo>::Element *E=selection.front();E;E=E->next()) { diff --git a/tools/editor/create_dialog.cpp b/tools/editor/create_dialog.cpp index b0cdd79798..5aac8bff09 100644 --- a/tools/editor/create_dialog.cpp +++ b/tools/editor/create_dialog.cpp @@ -140,7 +140,7 @@ void CreateDialog::_update_search() { search_options->clear(); - + help_bit->set_text(""); /* TreeItem *root = search_options->create_item(); _parse_fs(EditorFileSystem::get_singleton()->get_filesystem()); @@ -336,11 +336,27 @@ String CreateDialog::get_base_type() const { return base_type; } +void CreateDialog::_item_selected() { + + TreeItem *item = search_options->get_selected(); + if (!item) + return; + + String name = item->get_text(0); + + if (!EditorHelp::get_doc_data()->class_list.has(name)) + return; + + help_bit->set_text(EditorHelp::get_doc_data()->class_list[name].brief_description); + +} + void CreateDialog::_bind_methods() { ObjectTypeDB::bind_method(_MD("_text_changed"),&CreateDialog::_text_changed); ObjectTypeDB::bind_method(_MD("_confirmed"),&CreateDialog::_confirmed); ObjectTypeDB::bind_method(_MD("_sbox_input"),&CreateDialog::_sbox_input); + ObjectTypeDB::bind_method(_MD("_item_selected"),&CreateDialog::_item_selected); ADD_SIGNAL(MethodInfo("create")); @@ -364,9 +380,14 @@ CreateDialog::CreateDialog() { register_text_enter(search_box); set_hide_on_ok(false); search_options->connect("item_activated",this,"_confirmed"); + search_options->connect("cell_selected",this,"_item_selected"); // search_options->set_hide_root(true); base_type="Object"; + help_bit = memnew( EditorHelpBit ); + vbc->add_margin_child(TTR("Description:"),help_bit); + help_bit->connect("request_hide",this,"_closed"); + } diff --git a/tools/editor/create_dialog.h b/tools/editor/create_dialog.h index 8957479beb..41156b538a 100644 --- a/tools/editor/create_dialog.h +++ b/tools/editor/create_dialog.h @@ -34,6 +34,7 @@ #include "scene/gui/tree.h" #include "scene/gui/line_edit.h" #include "scene/gui/label.h" +#include "editor_help.h" /** @author Juan Linietsky <reduzio@gmail.com> */ @@ -49,6 +50,10 @@ class CreateDialog : public ConfirmationDialog { Tree *search_options; String base_type; + EditorHelpBit *help_bit; + + void _item_selected(); + void _update_search(); void _sbox_input(const InputEvent& p_ie); diff --git a/tools/editor/editor_data.cpp b/tools/editor/editor_data.cpp index 8d3fd6c9c2..35ec1ebfcc 100644 --- a/tools/editor/editor_data.cpp +++ b/tools/editor/editor_data.cpp @@ -834,7 +834,7 @@ void EditorSelection::_node_removed(Node *p_node) { void EditorSelection::add_node(Node *p_node) { ERR_FAIL_NULL(p_node); - + ERR_FAIL_COND(!p_node->is_inside_tree()); if (selection.has(p_node)) return; diff --git a/tools/editor/editor_dir_dialog.cpp b/tools/editor/editor_dir_dialog.cpp index f6ce7bf3f8..cf0732501e 100644 --- a/tools/editor/editor_dir_dialog.cpp +++ b/tools/editor/editor_dir_dialog.cpp @@ -143,7 +143,7 @@ void EditorDirDialog::set_current_path(const String& p_path) { reload(); String p = p_path; if (p.begins_with("res://")) - p.replace_first("res://",""); + p = p.replace_first("res://",""); Vector<String> dirs = p.split("/"); @@ -162,13 +162,13 @@ void EditorDirDialog::set_current_path(const String& p_path) { ERR_FAIL_COND(!p); String pp = p->get_metadata(0); if (pp=="") { + p->set_metadata(0,String(r->get_metadata(0)).plus_file(d)); _update_dir(p); - updating=true; - p->set_collapsed(false); - updating=false; - _item_collapsed(p); - } + updating=true; + p->set_collapsed(false); + updating=false; + _item_collapsed(p); r=p; } @@ -216,7 +216,7 @@ void EditorDirDialog::_make_dir_confirm() { if (err!=OK) { mkdirerr->popup_centered_minsize(Size2(250,80)); } else { - reload(); + set_current_path(dir.plus_file(makedirname->get_text())); } makedirname->set_text(""); // reset label } diff --git a/tools/editor/editor_help.cpp b/tools/editor/editor_help.cpp index 4ab86ad512..4f83dc2f66 100644 --- a/tools/editor/editor_help.cpp +++ b/tools/editor/editor_help.cpp @@ -31,7 +31,7 @@ #include "editor_settings.h" #include "os/keyboard.h" #include "doc_data_compressed.h" - +#include "tools/editor/plugins/script_editor_plugin.h" #include "os/keyboard.h" @@ -882,6 +882,15 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { class_desc->pop(); } + if (cd.methods[i].qualifiers.find("vararg")!=-1) { + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); + class_desc->add_text(","); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/symbol_color")); + class_desc->add_text(" ... "); + class_desc->pop(); + class_desc->pop(); + } + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/symbol_color")); class_desc->add_text(cd.methods[i].arguments.size()?" )":")"); class_desc->pop(); @@ -1256,16 +1265,20 @@ void EditorHelp::_help_callback(const String& p_topic) { } -void EditorHelp::_add_text(const String& p_bbcode) { - /*class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); - class_desc->push_font( get_font("normal","Fonts") ); - class_desc->push_indent(1);*/ +static void _add_text_to_rt(const String& p_bbcode,RichTextLabel *p_rt) { + + DocData *doc = EditorHelp::get_doc_data(); + String base_path; + + /*p_rt->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); + p_rt->push_font( get_font("normal","Fonts") ); + p_rt->push_indent(1);*/ int pos = 0; - Ref<Font> doc_font = get_font("doc","EditorFonts"); - Ref<Font> doc_code_font = get_font("doc_source","EditorFonts"); + Ref<Font> doc_font = p_rt->get_font("doc","EditorFonts"); + Ref<Font> doc_code_font = p_rt->get_font("doc_source","EditorFonts"); String bbcode=p_bbcode.replace("\t"," ").replace("\r"," ").strip_edges(); @@ -1333,7 +1346,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { brk_pos=bbcode.length(); if (brk_pos > pos) { - class_desc->add_text(bbcode.substr(pos,brk_pos-pos)); + p_rt->add_text(bbcode.substr(pos,brk_pos-pos)); } @@ -1344,7 +1357,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { if (brk_end==-1) { //no close, add the rest - class_desc->add_text(bbcode.substr(brk_pos,bbcode.length()-brk_pos)); + p_rt->add_text(bbcode.substr(brk_pos,bbcode.length()-brk_pos)); break; } @@ -1362,7 +1375,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { } if (!tag_ok) { - class_desc->add_text("["); + p_rt->add_text("["); pos++; continue; } @@ -1370,32 +1383,32 @@ void EditorHelp::_add_text(const String& p_bbcode) { tag_stack.pop_front(); pos=brk_end+1; if (tag!="/img") - class_desc->pop(); + p_rt->pop(); } else if (tag.begins_with("method ")) { String m = tag.substr(7,tag.length()); - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); - class_desc->push_meta("@"+m); - class_desc->add_text(m+"()"); - class_desc->pop(); - class_desc->pop(); + p_rt->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); + p_rt->push_meta("@"+m); + p_rt->add_text(m+"()"); + p_rt->pop(); + p_rt->pop(); pos=brk_end+1; } else if (doc->class_list.has(tag)) { - class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); - class_desc->push_meta("#"+tag); - class_desc->add_text(tag); - class_desc->pop(); - class_desc->pop(); + p_rt->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); + p_rt->push_meta("#"+tag); + p_rt->add_text(tag); + p_rt->pop(); + p_rt->pop(); pos=brk_end+1; } else if (tag=="b") { //use bold font - class_desc->push_font(doc_code_font); + p_rt->push_font(doc_code_font); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="i") { @@ -1406,37 +1419,37 @@ void EditorHelp::_add_text(const String& p_bbcode) { text_color.r*=1.1; text_color.g*=1.1; text_color.b*=1.1; - class_desc->push_color(text_color); - //class_desc->push_font(get_font("italic","Fonts")); + p_rt->push_color(text_color); + //p_rt->push_font(get_font("italic","Fonts")); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="code" || tag=="codeblock") { //use monospace font - class_desc->push_font(doc_code_font); + p_rt->push_font(doc_code_font); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="center") { //use monospace font - class_desc->push_align(RichTextLabel::ALIGN_CENTER); + p_rt->push_align(RichTextLabel::ALIGN_CENTER); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="br") { //use monospace font - class_desc->add_newline(); + p_rt->add_newline(); pos=brk_end+1; } else if (tag=="u") { //use underline - class_desc->push_underline(); + p_rt->push_underline(); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="s") { //use strikethrough (not supported underline instead) - class_desc->push_underline(); + p_rt->push_underline(); pos=brk_end+1; tag_stack.push_front(tag); @@ -1447,14 +1460,14 @@ void EditorHelp::_add_text(const String& p_bbcode) { if (end==-1) end=bbcode.length(); String url = bbcode.substr(brk_end+1,end-brk_end-1); - class_desc->push_meta(url); + p_rt->push_meta(url); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag.begins_with("url=")) { String url = tag.substr(4,tag.length()); - class_desc->push_meta(url); + p_rt->push_meta(url); pos=brk_end+1; tag_stack.push_front("url"); } else if (tag=="img") { @@ -1467,7 +1480,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { Ref<Texture> texture = ResourceLoader::load(base_path+"/"+image,"Texture"); if (texture.is_valid()) - class_desc->add_image(texture); + p_rt->add_image(texture); pos=end; tag_stack.push_front(tag); @@ -1515,7 +1528,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { - class_desc->push_color(color); + p_rt->push_color(color); pos=brk_end+1; tag_stack.push_front("color"); @@ -1526,9 +1539,9 @@ void EditorHelp::_add_text(const String& p_bbcode) { Ref<Font> font = ResourceLoader::load(base_path+"/"+fnt,"Font"); if (font.is_valid()) - class_desc->push_font(font); + p_rt->push_font(font); else { - class_desc->push_font(doc_font); + p_rt->push_font(doc_font); } pos=brk_end+1; @@ -1537,15 +1550,23 @@ void EditorHelp::_add_text(const String& p_bbcode) { } else { - class_desc->add_text("["); //ignore + p_rt->add_text("["); //ignore pos=brk_pos+1; } } - /*class_desc->pop(); - class_desc->pop(); - class_desc->pop();*/ + /*p_rt->pop(); + p_rt->pop(); + p_rt->pop();*/ + +} + + +void EditorHelp::_add_text(const String& p_bbcode) { + + + _add_text_to_rt(p_bbcode,class_desc); } @@ -1703,3 +1724,71 @@ EditorHelp::~EditorHelp() { } +///////////// + + + +void EditorHelpBit::_go_to_help(String p_what) { + + EditorNode::get_singleton()->set_visible_editor(EditorNode::EDITOR_SCRIPT); + ScriptEditor::get_singleton()->goto_help(p_what); + emit_signal("request_hide"); +} + +void EditorHelpBit::_meta_clicked(String p_select) { + + + // print_line("LINK: "+p_select); + if (p_select.begins_with("#")) { + //_goto_desc(p_select.substr(1,p_select.length())); + _go_to_help("class_name:"+p_select.substr(1,p_select.length())); + return; + } else if (p_select.begins_with("@")) { + + String m = p_select.substr(1,p_select.length()); + + if (m.find(".")!=-1) { + //must go somewhere else + + _go_to_help("class_method:"+m.get_slice(".",0)+":"+m.get_slice(".",0)); + } else { +// + // if (!method_line.has(m)) + // return; + //class_desc->scroll_to_line(method_line[m]); + } + + } + + +} + +void EditorHelpBit::_bind_methods() { + + ObjectTypeDB::bind_method("_meta_clicked",&EditorHelpBit::_meta_clicked); + ADD_SIGNAL(MethodInfo("request_hide")); +} + +void EditorHelpBit::_notification(int p_what){ + + if (p_what==NOTIFICATION_ENTER_TREE) { + add_style_override("panel",get_stylebox("normal","TextEdit")); + } +} + + +void EditorHelpBit::set_text(const String& p_text) { + + rich_text->clear(); + _add_text_to_rt(p_text,rich_text); +} + +EditorHelpBit::EditorHelpBit() { + + rich_text = memnew( RichTextLabel ); + add_child(rich_text); + rich_text->set_area_as_parent_rect(8*EDSCALE); + rich_text->connect("meta_clicked",this,"_meta_clicked"); + set_custom_minimum_size(Size2(0,70*EDSCALE)); + +} diff --git a/tools/editor/editor_help.h b/tools/editor/editor_help.h index c3d19894df..b0dc2809fe 100644 --- a/tools/editor/editor_help.h +++ b/tools/editor/editor_help.h @@ -200,6 +200,23 @@ public: +class EditorHelpBit : public Panel { + OBJ_TYPE( EditorHelpBit, Panel); + + RichTextLabel *rich_text; + void _go_to_help(String p_what); + void _meta_clicked(String p_what); + + +protected: + + static void _bind_methods(); + void _notification(int p_what); +public: + + void set_text(const String& p_text); + EditorHelpBit(); +}; #endif // EDITOR_HELP_H diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index c37c0dc463..8496530db3 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -1673,7 +1673,7 @@ void EditorNode::_edit_current() { if (main_plugin) { - if (main_plugin!=editor_plugin_screen) { + if (main_plugin!=editor_plugin_screen && (!ScriptEditor::get_singleton() || !ScriptEditor::get_singleton()->is_visible() || ScriptEditor::get_singleton()->can_take_away_focus())) { // update screen main_plugin @@ -6180,7 +6180,7 @@ EditorNode::EditorNode() { scenes_dock = memnew( FileSystemDock(this) ); scenes_dock->set_name(TTR("FileSystem")); - scenes_dock->set_use_thumbnails(int(EditorSettings::get_singleton()->get("file_dialog/display_mode"))==EditorFileDialog::DISPLAY_THUMBNAILS); + scenes_dock->set_display_mode(int(EditorSettings::get_singleton()->get("filesystem_dock/display_mode"))); dock_slot[DOCK_SLOT_LEFT_UR]->add_child(scenes_dock); //prop_pallete->add_child(scenes_dock); scenes_dock->connect("open",this,"open_request"); diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index 582462aa19..ad5cd86b4b 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -572,7 +572,10 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("scenetree_editor/draw_relationship_lines",false); set("scenetree_editor/relationship_line_color",Color::html("464646")); - set("gridmap_editor/pick_distance", 5000.0); + set("grid_map/pick_distance", 5000.0); + + set("3d_editor/grid_color",Color(0,1,0,0.2)); + hints["3d_editor/grid_color"]=PropertyInfo(Variant::COLOR,"3d_editor/grid_color", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); set("3d_editor/default_fov",45.0); set("3d_editor/default_z_near",0.1); @@ -622,6 +625,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("file_dialog/thumbnail_size", 64); hints["file_dialog/thumbnail_size"]=PropertyInfo(Variant::INT,"file_dialog/thumbnail_size",PROPERTY_HINT_RANGE,"32,128,16"); + set("filesystem_dock/display_mode", 0); + hints["filesystem_dock/display_mode"]=PropertyInfo(Variant::INT,"filesystem_dock/display_mode",PROPERTY_HINT_ENUM,"Thumbnails,List"); + set("filesystem_dock/thumbnail_size", 64); + hints["filesystem_dock/thumbnail_size"]=PropertyInfo(Variant::INT,"filesystem_dock/thumbnail_size",PROPERTY_HINT_RANGE,"32,128,16"); + set("animation/autorename_animation_tracks",true); set("animation/confirm_insert_track",true); @@ -731,6 +739,25 @@ void EditorSettings::notify_changes() { } +void EditorSettings::_add_property_info_bind(const Dictionary& p_info) { + + ERR_FAIL_COND(!p_info.has("name")); + ERR_FAIL_COND(!p_info.has("type")); + + PropertyInfo pinfo; + pinfo.name = p_info["name"]; + ERR_FAIL_COND(!props.has(pinfo.name)); + pinfo.type = Variant::Type(p_info["type"].operator int()); + ERR_FAIL_INDEX(pinfo.type, Variant::VARIANT_MAX); + + if (p_info.has("hint")) + pinfo.hint = PropertyHint(p_info["hint"].operator int()); + if (p_info.has("hint_string")) + pinfo.hint_string = p_info["hint_string"]; + + add_property_hint(pinfo); +} + void EditorSettings::add_property_hint(const PropertyInfo& p_hint) { _THREAD_SAFE_METHOD_ @@ -1001,6 +1028,8 @@ void EditorSettings::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_settings_path"),&EditorSettings::get_settings_path); ObjectTypeDB::bind_method(_MD("get_project_settings_path"),&EditorSettings::get_project_settings_path); + ObjectTypeDB::bind_method(_MD("add_property_info", "info"),&EditorSettings::_add_property_info_bind); + ObjectTypeDB::bind_method(_MD("set_favorite_dirs","dirs"),&EditorSettings::set_favorite_dirs); ObjectTypeDB::bind_method(_MD("get_favorite_dirs"),&EditorSettings::get_favorite_dirs); diff --git a/tools/editor/editor_settings.h b/tools/editor/editor_settings.h index 937956a366..2a7d3bb4f0 100644 --- a/tools/editor/editor_settings.h +++ b/tools/editor/editor_settings.h @@ -104,6 +104,8 @@ private: Map<String,Ref<ShortCut> > shortcuts; + void _add_property_info_bind(const Dictionary& p_info); + protected: static void _bind_methods(); diff --git a/tools/editor/filesystem_dock.cpp b/tools/editor/filesystem_dock.cpp index 378edd6667..8a94c6e340 100644 --- a/tools/editor/filesystem_dock.cpp +++ b/tools/editor/filesystem_dock.cpp @@ -146,8 +146,12 @@ void FileSystemDock::_notification(int p_what) { //button_instance->set_icon( get_icon("Add","EditorIcons")); //button_open->set_icon( get_icon("Folder","EditorIcons")); button_back->set_icon( get_icon("Filesystem","EditorIcons")); - display_mode->set_icon( get_icon("FileList","EditorIcons")); - display_mode->connect("pressed",this,"_change_file_display"); + if (display_mode == DISPLAY_THUMBNAILS) { + button_display_mode->set_icon(get_icon("FileList","EditorIcons")); + } else { + button_display_mode->set_icon(get_icon("FileThumbnail","EditorIcons")); + } + button_display_mode->connect("pressed",this,"_change_file_display"); //file_options->set_icon( get_icon("Tools","EditorIcons")); files->connect("item_activated",this,"_select_file"); button_hist_next->connect("pressed",this,"_fw_history"); @@ -197,9 +201,13 @@ void FileSystemDock::_notification(int p_what) { } break; case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - display_mode->set_pressed(int(EditorSettings::get_singleton()->get("file_dialog/display_mode"))==EditorFileDialog::DISPLAY_LIST); + int new_mode = int(EditorSettings::get_singleton()->get("filesystem_dock/display_mode")); - _change_file_display(); + if (new_mode != display_mode) { + set_display_mode(new_mode); + } else { + _update_files(true); + } } break; } @@ -314,13 +322,16 @@ void FileSystemDock::_thumbnail_done(const String& p_path,const Ref<Texture>& p_ void FileSystemDock::_change_file_display() { - if (display_mode->is_pressed()) { - display_mode->set_icon( get_icon("FileThumbnail","EditorIcons")); - + if (button_display_mode->is_pressed()) { + display_mode = DISPLAY_LIST; + button_display_mode->set_icon( get_icon("FileThumbnail","EditorIcons")); } else { - display_mode->set_icon( get_icon("FileList","EditorIcons")); + display_mode = DISPLAY_THUMBNAILS; + button_display_mode->set_icon( get_icon("FileList","EditorIcons")); } + EditorSettings::get_singleton()->set("filesystem_dock/display_mode", display_mode); + _update_files(true); } @@ -393,12 +404,12 @@ void FileSystemDock::_update_files(bool p_keep_selection) { if (!efd) return; - int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + int thumbnail_size = EditorSettings::get_singleton()->get("filesystem_dock/thumbnail_size"); thumbnail_size*=EDSCALE; Ref<Texture> folder_thumbnail; Ref<Texture> file_thumbnail; - bool use_thumbnails=!display_mode->is_pressed(); + bool use_thumbnails = (display_mode == DISPLAY_THUMBNAILS); bool use_folders = search_box->get_text().length()==0 && split_mode; if (use_thumbnails) { //thumbnails @@ -1147,9 +1158,13 @@ void FileSystemDock::focus_on_filter() { } -void FileSystemDock::set_use_thumbnails(bool p_use) { +void FileSystemDock::set_display_mode(int p_mode) { + + if (p_mode == display_mode) + return; - display_mode->set_pressed(!p_use); + button_display_mode->set_pressed(p_mode == DISPLAY_LIST); + _change_file_display(); } @@ -1721,9 +1736,9 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) { search_icon->set_stretch_mode(TextureFrame::STRETCH_KEEP_CENTERED); path_hb->add_child(search_icon); - display_mode = memnew( ToolButton ); - path_hb->add_child(display_mode); - display_mode->set_toggle_mode(true); + button_display_mode = memnew( ToolButton ); + path_hb->add_child(button_display_mode); + button_display_mode->set_toggle_mode(true); file_list_vb->add_child(files); @@ -1766,6 +1781,7 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) { history_pos=0; split_mode=false; + display_mode = DISPLAY_THUMBNAILS; path="res://"; diff --git a/tools/editor/filesystem_dock.h b/tools/editor/filesystem_dock.h index 171dbd16e9..f5b96760fc 100644 --- a/tools/editor/filesystem_dock.h +++ b/tools/editor/filesystem_dock.h @@ -54,6 +54,12 @@ class EditorNode; class FileSystemDock : public VBoxContainer { OBJ_TYPE( FileSystemDock, VBoxContainer ); +public: + enum DisplayMode { + DISPLAY_THUMBNAILS, + DISPLAY_LIST + }; +private: enum FileMenu { FILE_OPEN, FILE_INSTANCE, @@ -79,7 +85,7 @@ class FileSystemDock : public VBoxContainer { Button *button_reload; Button *button_favorite; Button *button_back; - Button *display_mode; + Button *button_display_mode; Button *button_hist_next; Button *button_hist_prev; LineEdit *current_path; @@ -88,6 +94,7 @@ class FileSystemDock : public VBoxContainer { HBoxContainer *path_hb; bool split_mode; + DisplayMode display_mode; PopupMenu *file_options; @@ -182,7 +189,7 @@ public: void fix_dependencies(const String& p_for_file); - void set_use_thumbnails(bool p_use); + void set_display_mode(int p_mode); FileSystemDock(EditorNode *p_editor); ~FileSystemDock(); diff --git a/tools/editor/icons/2x/icon_mini_aabb.png b/tools/editor/icons/2x/icon_mini_aabb.png Binary files differnew file mode 100644 index 0000000000..f0fd5620e9 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_aabb.png diff --git a/tools/editor/icons/2x/icon_mini_array.png b/tools/editor/icons/2x/icon_mini_array.png Binary files differnew file mode 100644 index 0000000000..5c7bde2639 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_array.png diff --git a/tools/editor/icons/2x/icon_mini_boolean.png b/tools/editor/icons/2x/icon_mini_boolean.png Binary files differnew file mode 100644 index 0000000000..a7d00056bb --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_boolean.png diff --git a/tools/editor/icons/2x/icon_mini_color.png b/tools/editor/icons/2x/icon_mini_color.png Binary files differnew file mode 100644 index 0000000000..f4059bfb91 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_color.png diff --git a/tools/editor/icons/2x/icon_mini_color_array.png b/tools/editor/icons/2x/icon_mini_color_array.png Binary files differnew file mode 100644 index 0000000000..26f1d9fce4 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_color_array.png diff --git a/tools/editor/icons/2x/icon_mini_dictionary.png b/tools/editor/icons/2x/icon_mini_dictionary.png Binary files differnew file mode 100644 index 0000000000..241e0587b4 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_dictionary.png diff --git a/tools/editor/icons/2x/icon_mini_float.png b/tools/editor/icons/2x/icon_mini_float.png Binary files differnew file mode 100644 index 0000000000..6edf76ece1 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_float.png diff --git a/tools/editor/icons/2x/icon_mini_float_array.png b/tools/editor/icons/2x/icon_mini_float_array.png Binary files differnew file mode 100644 index 0000000000..5a79fab721 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_float_array.png diff --git a/tools/editor/icons/2x/icon_mini_image.png b/tools/editor/icons/2x/icon_mini_image.png Binary files differnew file mode 100644 index 0000000000..98faebeef2 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_image.png diff --git a/tools/editor/icons/2x/icon_mini_input.png b/tools/editor/icons/2x/icon_mini_input.png Binary files differnew file mode 100644 index 0000000000..48536e156c --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_input.png diff --git a/tools/editor/icons/2x/icon_mini_int_array.png b/tools/editor/icons/2x/icon_mini_int_array.png Binary files differnew file mode 100644 index 0000000000..790ed44c30 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_int_array.png diff --git a/tools/editor/icons/2x/icon_mini_integer.png b/tools/editor/icons/2x/icon_mini_integer.png Binary files differnew file mode 100644 index 0000000000..cd9118f024 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_integer.png diff --git a/tools/editor/icons/2x/icon_mini_matrix3.png b/tools/editor/icons/2x/icon_mini_matrix3.png Binary files differnew file mode 100644 index 0000000000..93783177e1 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_matrix3.png diff --git a/tools/editor/icons/2x/icon_mini_matrix32.png b/tools/editor/icons/2x/icon_mini_matrix32.png Binary files differnew file mode 100644 index 0000000000..c2f7ea3817 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_matrix32.png diff --git a/tools/editor/icons/2x/icon_mini_object.png b/tools/editor/icons/2x/icon_mini_object.png Binary files differnew file mode 100644 index 0000000000..7987f750ff --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_object.png diff --git a/tools/editor/icons/2x/icon_mini_path.png b/tools/editor/icons/2x/icon_mini_path.png Binary files differnew file mode 100644 index 0000000000..2e60a46086 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_path.png diff --git a/tools/editor/icons/2x/icon_mini_plane.png b/tools/editor/icons/2x/icon_mini_plane.png Binary files differnew file mode 100644 index 0000000000..12b5cd26cc --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_plane.png diff --git a/tools/editor/icons/2x/icon_mini_quat.png b/tools/editor/icons/2x/icon_mini_quat.png Binary files differnew file mode 100644 index 0000000000..9a33902e59 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_quat.png diff --git a/tools/editor/icons/2x/icon_mini_raw_array.png b/tools/editor/icons/2x/icon_mini_raw_array.png Binary files differnew file mode 100644 index 0000000000..629b01e72a --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_raw_array.png diff --git a/tools/editor/icons/2x/icon_mini_rect2.png b/tools/editor/icons/2x/icon_mini_rect2.png Binary files differnew file mode 100644 index 0000000000..88b12e3a3a --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_rect2.png diff --git a/tools/editor/icons/2x/icon_mini_rid.png b/tools/editor/icons/2x/icon_mini_rid.png Binary files differnew file mode 100644 index 0000000000..5388c19817 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_rid.png diff --git a/tools/editor/icons/2x/icon_mini_string.png b/tools/editor/icons/2x/icon_mini_string.png Binary files differnew file mode 100644 index 0000000000..2264451c73 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_string.png diff --git a/tools/editor/icons/2x/icon_mini_string_array.png b/tools/editor/icons/2x/icon_mini_string_array.png Binary files differnew file mode 100644 index 0000000000..fa8109b88a --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_string_array.png diff --git a/tools/editor/icons/2x/icon_mini_transform.png b/tools/editor/icons/2x/icon_mini_transform.png Binary files differnew file mode 100644 index 0000000000..cb106ba5fa --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_transform.png diff --git a/tools/editor/icons/2x/icon_mini_variant.png b/tools/editor/icons/2x/icon_mini_variant.png Binary files differnew file mode 100644 index 0000000000..ae0aad16cf --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_variant.png diff --git a/tools/editor/icons/2x/icon_mini_vector2.png b/tools/editor/icons/2x/icon_mini_vector2.png Binary files differnew file mode 100644 index 0000000000..9e608e61c1 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_vector2.png diff --git a/tools/editor/icons/2x/icon_mini_vector2_array.png b/tools/editor/icons/2x/icon_mini_vector2_array.png Binary files differnew file mode 100644 index 0000000000..247c0e2592 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_vector2_array.png diff --git a/tools/editor/icons/2x/icon_mini_vector3.png b/tools/editor/icons/2x/icon_mini_vector3.png Binary files differnew file mode 100644 index 0000000000..0b84b4628f --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_vector3.png diff --git a/tools/editor/icons/2x/icon_mini_vector3_array.png b/tools/editor/icons/2x/icon_mini_vector3_array.png Binary files differnew file mode 100644 index 0000000000..68058e4232 --- /dev/null +++ b/tools/editor/icons/2x/icon_mini_vector3_array.png diff --git a/tools/editor/icons/icon_loop_interpolation.png b/tools/editor/icons/icon_loop_interpolation.png Binary files differnew file mode 100644 index 0000000000..488b33316e --- /dev/null +++ b/tools/editor/icons/icon_loop_interpolation.png diff --git a/tools/editor/icons/icon_mini_aabb.png b/tools/editor/icons/icon_mini_aabb.png Binary files differindex a0b11821a9..3a6be5605a 100644 --- a/tools/editor/icons/icon_mini_aabb.png +++ b/tools/editor/icons/icon_mini_aabb.png diff --git a/tools/editor/icons/icon_mini_array.png b/tools/editor/icons/icon_mini_array.png Binary files differindex 2df4a7d516..ade885e4d4 100644 --- a/tools/editor/icons/icon_mini_array.png +++ b/tools/editor/icons/icon_mini_array.png diff --git a/tools/editor/icons/icon_mini_boolean.png b/tools/editor/icons/icon_mini_boolean.png Binary files differindex 8753084a5b..9cb64fc983 100644 --- a/tools/editor/icons/icon_mini_boolean.png +++ b/tools/editor/icons/icon_mini_boolean.png diff --git a/tools/editor/icons/icon_mini_color.png b/tools/editor/icons/icon_mini_color.png Binary files differindex ef4e6b5468..bebf64e262 100644 --- a/tools/editor/icons/icon_mini_color.png +++ b/tools/editor/icons/icon_mini_color.png diff --git a/tools/editor/icons/icon_mini_color_array.png b/tools/editor/icons/icon_mini_color_array.png Binary files differindex fa82c20664..434b2f96f5 100644 --- a/tools/editor/icons/icon_mini_color_array.png +++ b/tools/editor/icons/icon_mini_color_array.png diff --git a/tools/editor/icons/icon_mini_dictionary.png b/tools/editor/icons/icon_mini_dictionary.png Binary files differindex 581a7e4e94..11fd536a83 100644 --- a/tools/editor/icons/icon_mini_dictionary.png +++ b/tools/editor/icons/icon_mini_dictionary.png diff --git a/tools/editor/icons/icon_mini_float.png b/tools/editor/icons/icon_mini_float.png Binary files differindex 240fe7741b..f8c8d9a174 100644 --- a/tools/editor/icons/icon_mini_float.png +++ b/tools/editor/icons/icon_mini_float.png diff --git a/tools/editor/icons/icon_mini_float_array.png b/tools/editor/icons/icon_mini_float_array.png Binary files differindex 205c117522..8b8177e151 100644 --- a/tools/editor/icons/icon_mini_float_array.png +++ b/tools/editor/icons/icon_mini_float_array.png diff --git a/tools/editor/icons/icon_mini_image.png b/tools/editor/icons/icon_mini_image.png Binary files differindex 8433f57b33..2ad359bdbe 100644 --- a/tools/editor/icons/icon_mini_image.png +++ b/tools/editor/icons/icon_mini_image.png diff --git a/tools/editor/icons/icon_mini_input.png b/tools/editor/icons/icon_mini_input.png Binary files differindex 5d52ed70f8..fec26dd68e 100644 --- a/tools/editor/icons/icon_mini_input.png +++ b/tools/editor/icons/icon_mini_input.png diff --git a/tools/editor/icons/icon_mini_int_array.png b/tools/editor/icons/icon_mini_int_array.png Binary files differindex 3b7bf7dc62..d1bd2e82a7 100644 --- a/tools/editor/icons/icon_mini_int_array.png +++ b/tools/editor/icons/icon_mini_int_array.png diff --git a/tools/editor/icons/icon_mini_integer.png b/tools/editor/icons/icon_mini_integer.png Binary files differindex 17f3762a46..dad1bb160b 100644 --- a/tools/editor/icons/icon_mini_integer.png +++ b/tools/editor/icons/icon_mini_integer.png diff --git a/tools/editor/icons/icon_mini_matrix3.png b/tools/editor/icons/icon_mini_matrix3.png Binary files differindex be97f2014a..dd59d093cc 100644 --- a/tools/editor/icons/icon_mini_matrix3.png +++ b/tools/editor/icons/icon_mini_matrix3.png diff --git a/tools/editor/icons/icon_mini_matrix32.png b/tools/editor/icons/icon_mini_matrix32.png Binary files differindex 33963066b0..6018a00747 100644 --- a/tools/editor/icons/icon_mini_matrix32.png +++ b/tools/editor/icons/icon_mini_matrix32.png diff --git a/tools/editor/icons/icon_mini_object.png b/tools/editor/icons/icon_mini_object.png Binary files differindex ba38ad06b1..4afe7cfca1 100644 --- a/tools/editor/icons/icon_mini_object.png +++ b/tools/editor/icons/icon_mini_object.png diff --git a/tools/editor/icons/icon_mini_path.png b/tools/editor/icons/icon_mini_path.png Binary files differindex 7645ba6257..9eb0632571 100644 --- a/tools/editor/icons/icon_mini_path.png +++ b/tools/editor/icons/icon_mini_path.png diff --git a/tools/editor/icons/icon_mini_plane.png b/tools/editor/icons/icon_mini_plane.png Binary files differindex d4f2bda241..45676236bd 100644 --- a/tools/editor/icons/icon_mini_plane.png +++ b/tools/editor/icons/icon_mini_plane.png diff --git a/tools/editor/icons/icon_mini_quat.png b/tools/editor/icons/icon_mini_quat.png Binary files differindex 991b684fcb..4ed2f5695c 100644 --- a/tools/editor/icons/icon_mini_quat.png +++ b/tools/editor/icons/icon_mini_quat.png diff --git a/tools/editor/icons/icon_mini_raw_array.png b/tools/editor/icons/icon_mini_raw_array.png Binary files differindex a655edde01..66bcf7c740 100644 --- a/tools/editor/icons/icon_mini_raw_array.png +++ b/tools/editor/icons/icon_mini_raw_array.png diff --git a/tools/editor/icons/icon_mini_rect2.png b/tools/editor/icons/icon_mini_rect2.png Binary files differindex 9d5d48f78c..db13e1a48e 100644 --- a/tools/editor/icons/icon_mini_rect2.png +++ b/tools/editor/icons/icon_mini_rect2.png diff --git a/tools/editor/icons/icon_mini_rid.png b/tools/editor/icons/icon_mini_rid.png Binary files differindex c85e40f315..278a9d1ee6 100644 --- a/tools/editor/icons/icon_mini_rid.png +++ b/tools/editor/icons/icon_mini_rid.png diff --git a/tools/editor/icons/icon_mini_string.png b/tools/editor/icons/icon_mini_string.png Binary files differindex 0e1198eac0..504556dd74 100644 --- a/tools/editor/icons/icon_mini_string.png +++ b/tools/editor/icons/icon_mini_string.png diff --git a/tools/editor/icons/icon_mini_string_array.png b/tools/editor/icons/icon_mini_string_array.png Binary files differindex 2d8e4ff0aa..5177014185 100644 --- a/tools/editor/icons/icon_mini_string_array.png +++ b/tools/editor/icons/icon_mini_string_array.png diff --git a/tools/editor/icons/icon_mini_transform.png b/tools/editor/icons/icon_mini_transform.png Binary files differindex b90ee1cef8..0107107a96 100644 --- a/tools/editor/icons/icon_mini_transform.png +++ b/tools/editor/icons/icon_mini_transform.png diff --git a/tools/editor/icons/icon_mini_variant.png b/tools/editor/icons/icon_mini_variant.png Binary files differindex 84b1e04264..285f0bcd16 100644 --- a/tools/editor/icons/icon_mini_variant.png +++ b/tools/editor/icons/icon_mini_variant.png diff --git a/tools/editor/icons/icon_mini_vector2.png b/tools/editor/icons/icon_mini_vector2.png Binary files differindex 56b7726137..a7caa1797f 100644 --- a/tools/editor/icons/icon_mini_vector2.png +++ b/tools/editor/icons/icon_mini_vector2.png diff --git a/tools/editor/icons/icon_mini_vector2_array.png b/tools/editor/icons/icon_mini_vector2_array.png Binary files differindex a8dd5e89a0..de546de16c 100644 --- a/tools/editor/icons/icon_mini_vector2_array.png +++ b/tools/editor/icons/icon_mini_vector2_array.png diff --git a/tools/editor/icons/icon_mini_vector3.png b/tools/editor/icons/icon_mini_vector3.png Binary files differindex b8999c9c22..69baeb229b 100644 --- a/tools/editor/icons/icon_mini_vector3.png +++ b/tools/editor/icons/icon_mini_vector3.png diff --git a/tools/editor/icons/icon_mini_vector3_array.png b/tools/editor/icons/icon_mini_vector3_array.png Binary files differindex 94a6f64043..6bddbaf627 100644 --- a/tools/editor/icons/icon_mini_vector3_array.png +++ b/tools/editor/icons/icon_mini_vector3_array.png diff --git a/tools/editor/icons/source/icon_mini_aabb.svg b/tools/editor/icons/source/icon_mini_aabb.svg new file mode 100644 index 0000000000..f6cc3feda1 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_aabb.svg @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_aabb.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254835" + inkscape:cx="3.148993" + inkscape:cy="6.4579802" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="false" + inkscape:snap-smooth-nodes="false"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 5,1041.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 l 2,0 0,-6 -2,0 z m 0,2 0,2 a 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z" + id="path4893" + inkscape:connector-curvature="0" /> + <path + style="fill:#f5acbb;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1046.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 l 2,0 0,-6 -2,0 z m 0,2 0,2 a 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z" + id="path4234" + inkscape:connector-curvature="0" /> + <path + id="path4145" + d="m 12.999983,1043.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 12.999983,1049.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + id="path4147" /> + <rect + transform="matrix(0,1,1,0,0,0)" + y="11" + x="1041.3622" + height="2.0000002" + width="8.0000172" + id="rect4149" + style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#f5acbb;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8,1044.3622 0,8 2,0 a 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 l 0,-2 -2,0 z m 2,4 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 l 0,-2 z" + id="path4151" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_array.svg b/tools/editor/icons/source/icon_mini_array.svg new file mode 100644 index 0000000000..a0a2014fbb --- /dev/null +++ b/tools/editor/icons/source/icon_mini_array.svg @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_array.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254835" + inkscape:cx="9.4953495" + inkscape:cy="4.8350599" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4245" + width="2" + height="2.999984" + x="11" + y="1047.3622" /> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 14,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4253" + inkscape:connector-curvature="0" /> + <rect + y="1047.3622" + x="7" + height="2.999984" + width="2" + id="rect4150" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4152" + d="m 10,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path4849" + d="m 4,1050.3625 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 4,1044.3625 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4851" /> + <rect + transform="scale(1,-1)" + y="-1050.3622" + x="4" + height="6.0000014" + width="2" + id="rect4853" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4141" + width="1" + height="2.0000174" + x="10" + y="1044.3622" /> + <rect + y="1044.3622" + x="14" + height="2.0000174" + width="1" + id="rect4143" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_boolean.svg b/tools/editor/icons/source/icon_mini_boolean.svg new file mode 100644 index 0000000000..eb17279a62 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_boolean.svg @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_boolean.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000002" + inkscape:cx="3.4941399" + inkscape:cy="6.2480463" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4364" + width="2" + height="5.9999666" + x="-2" + y="1044.3622" + transform="scale(-1,1)" /> + <rect + y="1044.3622" + x="-2" + height="2.0000174" + width="1" + id="rect4368" + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <path + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 2,1044.3623 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4370" + inkscape:connector-curvature="0" /> + <rect + transform="scale(1,-1)" + y="-1047.3622" + x="13" + height="5" + width="2" + id="rect4374" + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4378" + d="m 2,1050.3623 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(-1,1)" + y="1042.3622" + x="-2" + height="3.9999492" + width="2" + id="rect4384" + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16,1050.3623 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4392" + inkscape:connector-curvature="0" /> + <path + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 7,1044.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z" + id="path4148" + inkscape:connector-curvature="0" /> + <path + style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 11,1044.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z" + id="path4174" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_color.svg b/tools/editor/icons/source/icon_mini_color.svg new file mode 100644 index 0000000000..cdc176e00c --- /dev/null +++ b/tools/editor/icons/source/icon_mini_color.svg @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_color.svg"> + <defs + id="defs4"> + <clipPath + id="clipPath4253" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4255" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4199" + clipPathUnits="userSpaceOnUse"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + id="path4201" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4392"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + id="path4394" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath4196" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4198" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254835" + inkscape:cx="5.4869016" + inkscape:cy="6.8192689" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 4 4 A 3 3 0 0 0 1 7 A 3 3 0 0 0 4 10 L 5 10 L 5 8 L 4 8 A 1.0000174 1.0000174 0 0 1 3 7 A 1.0000174 1.0000174 0 0 1 4 6 L 5 6 L 5 4 L 4 4 z " + transform="translate(0,1040.3622)" + id="rect4667" /> + <path + style="fill:#70bfff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 14 4 A 3 3 0 0 0 11 7 L 11 10 L 13 10 L 13 7 A 1.0000174 1.0000174 0 0 1 14 6 L 15 6 L 15 4 L 14 4 z " + transform="translate(0,1040.3622)" + id="rect4245" /> + <path + style="fill:#7aff70;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 6 2 L 6 7 A 3 3 0 0 0 9 10 L 10 10 L 10 8 L 9 8 A 1.0000174 1.0000174 0 0 1 8 7 L 8 2 L 6 2 z " + transform="translate(0,1040.3622)" + id="rect4815" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_color_array.svg b/tools/editor/icons/source/icon_mini_color_array.svg new file mode 100644 index 0000000000..2ec0e186b5 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_color_array.svg @@ -0,0 +1,250 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_color_array.svg"> + <defs + id="defs4"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199"> + <path + inkscape:connector-curvature="0" + id="path4201" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253-7"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255-5" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199-3"> + <path + inkscape:connector-curvature="0" + id="path4201-5" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392-6" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394-2" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196-9"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198-1" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253-75"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255-3" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199-5"> + <path + inkscape:connector-curvature="0" + id="path4201-6" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392-2" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394-9" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196-1"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198-2" + inkscape:connector-curvature="0" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000002" + inkscape:cx="2.3647109" + inkscape:cy="10.148485" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="1050.3622" + x="0" + height="1.9999826" + width="4" + id="rect4158" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4160" + width="2" + height="12.000017" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4162" + width="4" + height="2.0000174" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4155" + width="4" + height="1.9999826" + x="-16" + y="1050.3622" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="12.000017" + width="2" + id="rect4157" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="2.0000174" + width="4" + id="rect4159" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <path + style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 6 3.5 A 3 3 0 0 0 3 6.5 A 3 3 0 0 0 6 9.5 L 7 9.5 L 7 7.5 L 6 7.5 A 1.0000174 1.0000174 0 0 1 5 6.5 A 1.0000174 1.0000174 0 0 1 6 5.5 L 7 5.5 L 7 3.5 L 6 3.5 z " + transform="translate(0,1040.3622)" + id="rect4667" /> + <rect + style="fill:#70bfff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4245" + width="2" + height="2.999984" + x="10" + y="1046.8622" /> + <path + style="fill:#70bfff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 13,1043.8622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4253" + inkscape:connector-curvature="0" /> + <path + style="fill:#7aff70;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 7 1.5 L 7 6.5 A 3 3 0 0 0 10 9.5 L 10 7.5 A 1.0000174 1.0000174 0 0 1 9 6.5 L 9 1.5 L 7 1.5 z " + transform="translate(0,1040.3622)" + id="rect4815" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_dictionary.svg b/tools/editor/icons/source/icon_mini_dictionary.svg new file mode 100644 index 0000000000..813ba97613 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_dictionary.svg @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_dictionary.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254835" + inkscape:cx="4.4726786" + inkscape:cy="6.5768127" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + transform="scale(1,-1)" + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4607" + width="2" + height="4.9999828" + x="13" + y="-1047.3623" /> + <rect + transform="scale(1,-1)" + y="-1046.3623" + x="15" + height="2.0000174" + width="1" + id="rect4609" + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4611" + inkscape:connector-curvature="0" /> + <path + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 11,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4617" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4621" + d="m 11,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4412" + width="2" + height="3.9999492" + x="6" + y="1046.3623" /> + <rect + y="1042.3623" + x="6" + height="1.9999928" + width="2" + id="rect4432" + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1044.362 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4843" /> + <path + id="path4845" + d="m 3,1050.362 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <rect + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4847" + width="2" + height="7.9999843" + x="3" + y="1042.3622" /> + <rect + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4144" + width="1" + height="1.9999928" + x="11" + y="1044.3622" /> + <rect + y="1048.3622" + x="11" + height="1.9999928" + width="1" + id="rect4146" + style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_float.svg b/tools/editor/icons/source/icon_mini_float.svg new file mode 100644 index 0000000000..1007955ea9 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_float.svg @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_float.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254835" + inkscape:cx="5.8021561" + inkscape:cy="5.7934213" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="1045.3623" + x="0" + height="4.9999828" + width="2" + id="rect4498" + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4500" + width="2" + height="2.0000174" + x="2" + y="1046.3623" /> + <path + inkscape:connector-curvature="0" + id="path4502" + d="m 3,1042.3623 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4504" + width="2" + height="5" + x="6" + y="-1047.3622" + transform="scale(1,-1)" /> + <path + inkscape:connector-curvature="0" + id="path4506" + d="m 9,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="-1047.3623" + x="12" + height="4.9999828" + width="2" + id="rect4508" + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(1,-1)" /> + <path + inkscape:connector-curvature="0" + id="path4512" + d="m 15,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#61daf4;fill-opacity:1;stroke:none" + id="rect4142" + width="1" + height="2" + x="9" + y="1048.3622" /> + <rect + y="1044.3622" + x="14" + height="2" + width="2" + id="rect4144" + style="fill:#61daf4;fill-opacity:1;stroke:none" /> + <rect + style="fill:#61daf4;fill-opacity:1;stroke:none" + id="rect4146" + width="1" + height="2" + x="15" + y="1048.3622" /> + <rect + y="1042.3622" + x="3" + height="2" + width="1" + id="rect4148" + style="fill:#61daf4;fill-opacity:1;stroke:none" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_float_array.svg b/tools/editor/icons/source/icon_mini_float_array.svg new file mode 100644 index 0000000000..86807ca731 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_float_array.svg @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_float_array.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="64.000006" + inkscape:cx="5.0069742" + inkscape:cy="7.9592671" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="1050.3622" + x="0" + height="2.0000174" + width="4" + id="rect4158" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4160" + width="2" + height="12.000017" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4162" + width="4" + height="2.0000174" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4170" + width="4" + height="2.0000174" + x="-16" + y="1050.3622" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="12.000017" + width="2" + id="rect4172" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="2.0000174" + width="4" + id="rect4175" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <path + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 6,1042.3622 a 3,3 0 0 0 -3,3 l 0,5 2,0 0,-2 1,0 0,-2 -1,0 0,-1 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4146" /> + <path + style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 10,1042.3622 0,5 a 3,3 0 0 0 3,3 l 0,-2 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-1 1,0 0,-2 -1,0 0,-2 -2,0 z" + id="rect4498" + inkscape:connector-curvature="0" /> + <path + style="fill:#c6f2fb;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 7,1042.3622 0,5 a 3,3 0 0 0 3,3 l 0,-2 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-5 -2,0 z" + id="rect4504" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_image.svg b/tools/editor/icons/source/icon_mini_image.svg new file mode 100644 index 0000000000..57faded5c8 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_image.svg @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_image.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="3.9410412" + inkscape:cy="6.0438587" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4412" + width="2" + height="3.9999492" + x="0" + y="1045.3622" /> + <rect + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4414" + width="2" + height="5.9999843" + x="3" + y="1043.3622" /> + <path + inkscape:connector-curvature="0" + id="path4428" + d="m 5,1043.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1046.3622" + x="6" + height="3.0000174" + width="2" + id="rect4430" + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1041.3622" + x="0" + height="1.9999928" + width="2" + id="rect4432" + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1043.3622" + x="6" + height="5.9999843" + width="2" + id="rect4175" + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8,1043.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4177" + inkscape:connector-curvature="0" /> + <rect + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4179" + width="2" + height="3.0000174" + x="9" + y="1046.3622" /> + <path + inkscape:connector-curvature="0" + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 14,1049.3624 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4843" /> + <path + id="path4845" + d="m 14,1043.3624 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <rect + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4847" + width="2" + height="6.0000014" + x="14" + y="-1049.3622" + transform="scale(1,-1)" /> + <path + inkscape:connector-curvature="0" + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 13,1052.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + id="path4408" /> + <rect + style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4410" + width="1" + height="2" + x="12" + y="1050.3622" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_input.svg b/tools/editor/icons/source/icon_mini_input.svg new file mode 100644 index 0000000000..9e966f77d1 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_input.svg @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_input.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="2.8417629" + inkscape:cy="8.0681941" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + id="path4809" + d="m 10,1050.3625 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 10,1044.3625 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4811" /> + <rect + transform="scale(-1,-1)" + y="-1052.3622" + x="-10" + height="7.9999843" + width="2" + id="rect4813" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4412" + width="2" + height="3.9999492" + x="0" + y="1046.3625" /> + <rect + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4414" + width="2" + height="5.9999843" + x="3" + y="1044.3624" /> + <path + inkscape:connector-curvature="0" + id="path4428" + d="m 5,1044.3625 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1047.3624" + x="6" + height="3.0000174" + width="2" + id="rect4430" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1042.3625" + x="0" + height="1.9999928" + width="2" + id="rect4432" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(1,-1)" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4455" + width="2" + height="4.9999828" + x="13" + y="-1047.3625" /> + <rect + transform="scale(1,-1)" + y="-1046.3625" + x="15" + height="2.0000174" + width="1" + id="rect4457" + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16,1050.3625 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4459" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_int_array.svg b/tools/editor/icons/source/icon_mini_int_array.svg new file mode 100644 index 0000000000..23b086d5e1 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_int_array.svg @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_int_array.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254835" + inkscape:cx="4.3434649" + inkscape:cy="6.0813959" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 0 0 L 0 2 L 0 10 L 0 12 L 2 12 L 4 12 L 4 10 L 2 10 L 2 2 L 4 2 L 4 0 L 0 0 z M 12 0 L 12 2 L 14 2 L 14 10 L 12 10 L 12 12 L 16 12 L 16 10 L 16 2 L 16 0 L 14 0 L 12 0 z " + transform="translate(0,1040.3622)" + id="rect4158" /> + <path + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 3 2 L 3 4 L 5 4 L 5 2 L 3 2 z M 3 6 L 3 10 L 5 10 L 5 6 L 3 6 z " + id="rect4412" + transform="translate(0,1040.3622)" /> + <path + style="fill:#c8e7f9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 5 4 L 5 10 L 7 10 L 7 6 A 1.0000174 1.0000174 0 0 1 8 7 L 8 10 L 10 10 L 10 7 A 3 3 0 0 0 7 4 L 5 4 z " + transform="translate(0,1040.3622)" + id="rect4414" /> + <path + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 10 2 L 10 7 A 3 3 0 0 0 13 10 L 13 8 A 1.0000174 1.0000174 0 0 1 12 7 L 12 6 L 13 6 L 13 4 L 12 4 L 12 2 L 10 2 z " + id="rect4455" + transform="translate(0,1040.3622)" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_integer.svg b/tools/editor/icons/source/icon_mini_integer.svg new file mode 100644 index 0000000000..c21322adb2 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_integer.svg @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_integer.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254837" + inkscape:cx="7.0145943" + inkscape:cy="6.0949691" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4412" + width="2" + height="3.9999492" + x="1" + y="1046.3622" /> + <rect + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4414" + width="2" + height="5.9999843" + x="4" + y="1044.3622" /> + <path + inkscape:connector-curvature="0" + id="path4428" + d="m 7,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1047.3622" + x="8" + height="3.0000174" + width="2" + id="rect4430" + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1042.3622" + x="1" + height="1.9999928" + width="2" + id="rect4432" + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(1,-1)" + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4455" + width="2" + height="4.9999828" + x="12" + y="-1047.3622" /> + <rect + transform="scale(1,-1)" + y="-1046.3622" + x="14" + height="2.0000174" + width="2" + id="rect4457" + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 15,1050.3621 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4459" + inkscape:connector-curvature="0" /> + <rect + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4142" + width="2" + height="1.9999928" + x="5" + y="1044.3622" /> + <rect + style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4144" + width="1" + height="2.0000174" + x="15" + y="-1050.3622" + transform="scale(1,-1)" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_matrix3.svg b/tools/editor/icons/source/icon_mini_matrix3.svg new file mode 100644 index 0000000000..592230d13c --- /dev/null +++ b/tools/editor/icons/source/icon_mini_matrix3.svg @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_matrix3.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="4.071303" + inkscape:cy="4.582959" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 12.00042,1044.3622 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0.226563,-2.5 l -2.824219,0 z" + id="path4753" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4757" + d="m 12.00042,1046.3622 0,2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597656,-1.5 z" + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4771" + inkscape:connector-curvature="0" /> + <rect + y="-1050.3622" + x="4" + height="3" + width="2" + id="rect4773" + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(1,-1)" /> + <rect + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4775" + width="2" + height="5.9999828" + x="1" + y="-1050.3622" + transform="scale(1,-1)" /> + <rect + transform="scale(1,-1)" + y="-1050.3622" + x="4" + height="5.9999828" + width="2" + id="rect4777" + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4779" + d="m 6,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4781" + width="2" + height="3.0000002" + x="7" + y="-1050.3622" + transform="scale(1,-1)" /> + <rect + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4783" + width="4.0004196" + height="2" + x="11" + y="1043.3622" /> + <rect + y="1050.3622" + x="11" + height="2" + width="1" + id="rect4173" + style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_matrix32.svg b/tools/editor/icons/source/icon_mini_matrix32.svg new file mode 100644 index 0000000000..5159ea0b87 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_matrix32.svg @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_matrix32.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="1.5471383" + inkscape:cy="5.978497" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#ddf4aa;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 8 2 L 8 4 L 9 4 L 10 4 A 1 1 0 0 1 9 5 L 9 7 A 1 1 0 0 1 10 8 A 1 1 0 0 1 9 9 L 8 9 L 8 11 L 9 11 A 3 3 0 0 0 11.597656 9.5 A 3 3 0 0 0 11.597656 6.5 A 3 3 0 0 0 11.232422 5.9980469 A 3 3 0 0 0 11.597656 5.5 A 3 3 0 0 0 11.994141 4 L 12 4 L 12 2 L 9 2 L 8 2 z " + transform="translate(0,1040.3622)" + id="path4753" /> + <rect + y="1048.3622" + x="11" + height="2" + width="5" + id="rect4763" + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + d="m 13,1050.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1" + sodipodi:end="4.712389" + sodipodi:start="1.5707963" + sodipodi:ry="2" + sodipodi:rx="2" + sodipodi:cy="1048.3622" + sodipodi:cx="13" + sodipodi:type="arc" + id="path4765" + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4767" + d="m 13,1042.3622 0,2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597656,-1.5 z" + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 2,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4771" + inkscape:connector-curvature="0" /> + <rect + y="-1050.3622" + x="3" + height="3" + width="2" + id="rect4773" + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(1,-1)" /> + <rect + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4775" + width="2" + height="5.9999828" + x="0" + y="-1050.3622" + transform="scale(1,-1)" /> + <rect + transform="scale(1,-1)" + y="-1050.3622" + x="3" + height="5.9999828" + width="2" + id="rect4777" + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4779" + d="m 5,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4781" + width="2" + height="3.0000002" + x="6" + y="-1050.3622" + transform="scale(1,-1)" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_object.svg b/tools/editor/icons/source/icon_mini_object.svg new file mode 100644 index 0000000000..380be34903 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_object.svg @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_object.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254836" + inkscape:cx="1.4141272" + inkscape:cy="5.8428771" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8,1050.3622 a 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 l 0,-2 -2,0 0,8 2,0 z m 0,-2 0,-2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 z" + id="path4843" + inkscape:connector-curvature="0" /> + <path + id="path4849" + d="m 3,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4851" /> + <path + style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 15,1044.3622 0,5 a 3,3 0 0 1 -3,3 l 0,-2 a 1.0000174,1.0000174 0 0 0 1,-1 l 0,-5 2,0 z" + id="rect4293-6" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1050.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + id="path4174" /> + <path + id="path4176" + d="m 3,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <rect + style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4140" + width="1" + height="2" + x="11" + y="1050.3622" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_path.svg b/tools/editor/icons/source/icon_mini_path.svg new file mode 100644 index 0000000000..ef247b8b8c --- /dev/null +++ b/tools/editor/icons/source/icon_mini_path.svg @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_path.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254835" + inkscape:cx="8.9618505" + inkscape:cy="5.9123718" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="-1047.3622" + x="6" + height="4.9999828" + width="2" + id="rect4293" + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(1,-1)" /> + <rect + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4295" + width="2" + height="2.0000174" + x="8" + y="-1046.3622" + transform="scale(1,-1)" /> + <path + inkscape:connector-curvature="0" + id="path4297" + d="m 9,1050.3621 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(1,-1)" + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4299" + width="2" + height="7.9999828" + x="11" + y="-1050.3622" /> + <path + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 13,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4301" + inkscape:connector-curvature="0" /> + <rect + transform="scale(1,-1)" + y="-1050.3622" + x="14" + height="3.0000348" + width="2" + id="rect4303" + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 2,1048.3625 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + id="path4461" /> + <path + id="path4463" + d="m 2,1042.3625 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <rect + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4465" + width="2" + height="7.9999843" + x="-2" + y="-1050.3622" + transform="scale(-1,-1)" /> + <rect + transform="scale(1,-1)" + y="-1050.3622" + x="9" + height="2.0000174" + width="1" + id="rect4143" + style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_plane.svg b/tools/editor/icons/source/icon_mini_plane.svg new file mode 100644 index 0000000000..bc3992cdd6 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_plane.svg @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_plane.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="5.5391662" + inkscape:cy="7.4683409" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + id="path4809" + d="m 3,1048.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1042.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4811" /> + <rect + transform="scale(-1,-1)" + y="-1050.3619" + x="-3" + height="7.9999843" + width="2" + id="rect4813" + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(1,-1)" + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4815" + width="2" + height="4.9999828" + x="7" + y="-1047.3623" /> + <path + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 10,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4819" + inkscape:connector-curvature="0" /> + <rect + y="1044.3622" + x="11" + height="5.9999843" + width="2" + id="rect4324" + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 13,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4342" + inkscape:connector-curvature="0" /> + <rect + style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4344" + width="2" + height="3.0000174" + x="14" + y="1047.3622" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_quat.svg b/tools/editor/icons/source/icon_mini_quat.svg new file mode 100644 index 0000000000..27188a3410 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_quat.svg @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_quat.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254836" + inkscape:cx="7.0330887" + inkscape:cy="6.0717303" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + inkscape:connector-curvature="0" + style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1049.3625 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4843" /> + <path + id="path4845" + d="m 3,1043.3625 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <rect + style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4847" + width="2" + height="7.9999843" + x="3" + y="-1051.3622" + transform="scale(1,-1)" /> + <rect + y="-1046.3623" + x="13" + height="4.9999828" + width="2" + id="rect4293-6" + style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(1,-1)" /> + <rect + style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4295-2" + width="1" + height="2.0000174" + x="15" + y="-1045.3623" + transform="scale(1,-1)" /> + <path + inkscape:connector-curvature="0" + id="path4297-9" + d="m 16,1049.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#f298c0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 4,1043.3622 0,3 a 3,3 0 0 0 3,3 l 2,0 0,-6 -2,0 0,4 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-3 -2,0 z" + id="rect4366" + inkscape:connector-curvature="0" /> + <path + style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11 3 A 3 3 0 0 0 8 6 A 3 3 0 0 0 11 9 L 13 9 L 13 3 L 11 3 z M 11 5 L 11 7 A 1.0000174 1.0000174 0 0 1 10 6 A 1.0000174 1.0000174 0 0 1 11 5 z " + transform="translate(0,1040.3622)" + id="path4849" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_raw_array.svg b/tools/editor/icons/source/icon_mini_raw_array.svg new file mode 100644 index 0000000000..cb735b5615 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_raw_array.svg @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_raw_array.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="-2.5947078" + inkscape:cy="7.7867435" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 0 0 L 0 2 L 0 10 L 0 12 L 4 12 L 4 10 L 2 10 L 2 2 L 4 2 L 4 0 L 2 0 L 0 0 z M 12 0 L 12 2 L 14 2 L 14 10 L 12 10 L 12 12 L 16 12 L 16 10 L 16 2 L 16 0 L 14 0 L 12 0 z " + transform="translate(0,1040.3622)" + id="rect4158" /> + <rect + style="fill:#69ec9e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4245" + width="2" + height="2.999984" + x="2" + y="1046.3622" /> + <rect + y="1043.3622" + x="5" + height="2.0000174" + width="1" + id="rect4251" + style="fill:#69ec9e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#69ec9e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 5,1043.3623 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4253" + inkscape:connector-curvature="0" /> + <path + style="fill:#aaf4c8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 6,1049.3622 0,-6 2,0 0,4 a 1.0000174,1.0000174 0 0 0 1,-1 l 0,-3 2,0 0,3 0,1 a 1.0000174,1.0000174 0 0 0 1,-1 l 0,-3 2,0 0,3 a 3,3 0 0 1 -3,3 l -2,0 0,-0.1758 a 3,3 0 0 1 -1,0.1758 l -2,0 z" + id="path4771" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_rect2.svg b/tools/editor/icons/source/icon_mini_rect2.svg new file mode 100644 index 0000000000..ded27f049f --- /dev/null +++ b/tools/editor/icons/source/icon_mini_rect2.svg @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_rect2.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000002" + inkscape:cx="2.7000496" + inkscape:cy="5.1067461" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="1047.3622" + x="0" + height="2.999984" + width="2" + id="rect4601" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path4605" + d="m 3,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(1,-1)" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4607" + width="2" + height="4.9999828" + x="13" + y="-1047.3622" /> + <rect + transform="scale(1,-1)" + y="-1046.3622" + x="15" + height="2.0000174" + width="1" + id="rect4609" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16,1050.3621 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4611" + inkscape:connector-curvature="0" /> + <path + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 7,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4617" + inkscape:connector-curvature="0" /> + <rect + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4619" + width="1" + height="2.0000174" + x="7" + y="-1050.3622" + transform="scale(1,-1)" /> + <path + inkscape:connector-curvature="0" + id="path4621" + d="m 7,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4144" + width="1" + height="2.0000174" + x="12" + y="1044.3622" /> + <path + inkscape:connector-curvature="0" + id="path4146" + d="m 12,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(1,-1)" + y="-1050.3622" + x="12" + height="2.0000174" + width="1" + id="rect4148" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 12,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4150" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4152" + d="m 7,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4154" + width="2" + height="1" + x="6" + y="1046.3622" /> + <rect + style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4156" + width="1" + height="2.0000174" + x="3" + y="-1046.3622" + transform="scale(1,-1)" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_rid.svg b/tools/editor/icons/source/icon_mini_rid.svg new file mode 100644 index 0000000000..6df13ae43d --- /dev/null +++ b/tools/editor/icons/source/icon_mini_rid.svg @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_rid.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254836" + inkscape:cx="8.577775" + inkscape:cy="6.6679205" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="false" + inkscape:snap-smooth-nodes="false" + inkscape:snap-nodes="true" + inkscape:snap-midpoints="false"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4245" + width="2" + height="2.999984" + x="1" + y="1047.3622" /> + <rect + y="1042.3623" + x="7" + height="1.9998953" + width="2" + id="rect4247" + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4249" + width="2" + height="4.0000014" + x="7" + y="1046.3622" /> + <rect + y="1044.3622" + x="4" + height="2.0000174" + width="1" + id="rect4251" + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 4,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4253" + inkscape:connector-curvature="0" /> + <path + id="path4260" + d="m 13,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 13,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4262" /> + <rect + y="1042.3622" + x="14" + height="7.9999843" + width="2" + id="rect4264" + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4142" + width="1" + height="2.0000174" + x="13" + y="1044.3622" /> + <rect + y="1048.3622" + x="13" + height="2.0000174" + width="1" + id="rect4144" + style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_string.svg b/tools/editor/icons/source/icon_mini_string.svg new file mode 100644 index 0000000000..a655f70d33 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_string.svg @@ -0,0 +1,236 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_string.svg"> + <defs + id="defs4"> + <clipPath + id="clipPath4253" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4255" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4199" + clipPathUnits="userSpaceOnUse"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + id="path4201" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4392"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + id="path4394" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath4196" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4198" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4253-75" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4255-3" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4199-5" + clipPathUnits="userSpaceOnUse"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + id="path4201-6" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4392-2"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + id="path4394-9" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath4196-1" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4198-2" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4253-7" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4255-5" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4199-3" + clipPathUnits="userSpaceOnUse"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + id="path4201-5" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4392-6"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + id="path4394-2" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath4196-9" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4198-1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32" + inkscape:cx="10.223117" + inkscape:cy="7.0200789" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 5,1042.3622 a 3,3 0 0 0 -3,3 l 0,2 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 3,-3 l 0,-2 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4534" + inkscape:connector-curvature="0" /> + <rect + transform="scale(1,-1)" + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4540" + width="2" + height="4.9999828" + x="7" + y="-1047.3623" /> + <rect + transform="scale(1,-1)" + y="-1046.3623" + x="9" + height="2.0000174" + width="2" + id="rect4542" + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 10,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4544" + inkscape:connector-curvature="0" /> + <path + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 15 4 A 3 3 0 0 0 12 7 L 12 10 L 14 10 L 14 7 A 1.0000174 1.0000174 0 0 1 15 6 L 16 6 L 16 4 L 15 4 z " + transform="translate(0,1040.3622)" + id="rect4245-5" /> + <rect + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4208" + width="1" + height="2" + x="0" + y="1048.3622" /> + <rect + y="1042.3622" + x="5" + height="2" + width="1" + id="rect4210" + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4165" + width="1" + height="2.0000174" + x="10" + y="-1050.3622" + transform="scale(1,-1)" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_string_array.svg b/tools/editor/icons/source/icon_mini_string_array.svg new file mode 100644 index 0000000000..cd2e850c49 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_string_array.svg @@ -0,0 +1,289 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_string_array.svg"> + <defs + id="defs4"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199"> + <path + inkscape:connector-curvature="0" + id="path4201" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253-7"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255-5" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199-3"> + <path + inkscape:connector-curvature="0" + id="path4201-5" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392-6" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394-2" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196-9"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198-1" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253-753"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255-56" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199-2"> + <path + inkscape:connector-curvature="0" + id="path4201-9" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392-1" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394-27" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196-0"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198-9" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253-75"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255-3" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199-5"> + <path + inkscape:connector-curvature="0" + id="path4201-6" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392-2" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394-9" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196-1"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198-2" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4253-7-3"> + <path + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z" + id="path4255-5-6" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4199-3-0"> + <path + inkscape:connector-curvature="0" + id="path4201-5-6" + d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </clipPath> + <clipPath + id="clipPath4392-6-2" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path4394-2-6" + d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4196-9-1"> + <path + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z" + id="path4198-1-8" + inkscape:connector-curvature="0" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="45.254838" + inkscape:cx="8.8695857" + inkscape:cy="6.6197" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 0 0 L 0 2 L 0 10 L 0 12 L 2 12 L 4 12 L 4 10 L 2 10 L 2 2 L 4 2 L 4 0 L 2 0 L 0 0 z M 12 0 L 12 2 L 14 2 L 14 10 L 12 10 L 12 12 L 16 12 L 16 10 L 16 0 L 12 0 z " + transform="translate(0,1040.3622)" + id="rect4158" /> + <path + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 7,1042.3622 a 3,3 0 0 0 -3,3 l 0,2 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 3,-3 l 0,-2 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4184" + inkscape:connector-curvature="0" /> + <path + style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 14,1044.3622 a 3,3 0 0 0 -3,3 l 0,3 2,0 0,-3 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4534" + inkscape:connector-curvature="0" /> + <path + style="fill:#b5d3f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8,1042.3622 0,5 a 3,3 0 0 0 3,3 l 0,-2 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-1 1,0 0,-2 -1,0 0,-2 -2,0 z" + id="rect4540" + inkscape:connector-curvature="0" /> + <rect + style="fill:#6ba7ec;fill-opacity:1;stroke:none" + id="rect4184" + width="1" + height="2" + x="7" + y="1042.3622" /> + <rect + y="1048.3622" + x="2" + height="2" + width="1" + id="rect4186" + style="fill:#6ba7ec;fill-opacity:1;stroke:none" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_transform.svg b/tools/editor/icons/source/icon_mini_transform.svg new file mode 100644 index 0000000000..a844171dd4 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_transform.svg @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_transform.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32" + inkscape:cx="5.8969613" + inkscape:cy="6.372864" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#f3e49c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1042.3622 a 3,3 0 0 0 -3,3 l 0,5 2,0 0,-2 1,0 0,-2 -1,0 0,-1 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="rect4455" + inkscape:connector-curvature="0" /> + <path + style="fill:#ecd669;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8,1044.3622 0,6 2,0 0,-4 a 1.0000174,1.0000174 0 0 1 1,1 l 0,3 2,0 0,-3 0,-1 a 1.0000174,1.0000174 0 0 1 1,1 l 0,3 2,0 0,-3 a 3,3 0 0 0 -3,-3 l -2,0 0,0.1758 a 3,3 0 0 0 -1,-0.1758 l -2,0 z" + id="path4771" + inkscape:connector-curvature="0" /> + <path + style="fill:#ecd669;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 7,1044.3622 a 3,3 0 0 0 -3,3 l 0,3 2,0 0,-3 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="rect4601" + inkscape:connector-curvature="0" /> + <rect + style="fill:#f3e49c;fill-opacity:1;stroke:none" + id="rect4139" + width="1" + height="2" + x="3" + y="1042.3622" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_variant.svg b/tools/editor/icons/source/icon_mini_variant.svg new file mode 100644 index 0000000000..6883baa584 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_variant.svg @@ -0,0 +1,138 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_variant.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="5.8864792" + inkscape:cy="6.2518921" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="1044.3622" + x="3" + height="5.9999666" + width="2" + id="rect4320" + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1044.3622" + x="6" + height="5.9999843" + width="2" + id="rect4324" + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4326" + width="1" + height="2.0000174" + x="3" + y="1044.3622" /> + <path + inkscape:connector-curvature="0" + id="path4328" + d="m 3,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 14,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4330" /> + <rect + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4334" + width="2" + height="7.9999843" + x="14" + y="-1052.3622" + transform="scale(1,-1)" /> + <rect + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4338" + width="2" + height="2.9999826" + x="11" + y="-1047.3622" + transform="scale(1,-1)" /> + <path + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4340" + inkscape:connector-curvature="0" /> + <path + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z" + id="path4342" + inkscape:connector-curvature="0" /> + <rect + style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4344" + width="2" + height="3.0000174" + x="9" + y="1047.3622" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_vector2.svg b/tools/editor/icons/source/icon_mini_vector2.svg new file mode 100644 index 0000000000..5c9aaeccff --- /dev/null +++ b/tools/editor/icons/source/icon_mini_vector2.svg @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_vector2.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="-0.61809703" + inkscape:cy="8.3891446" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 3,1050.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + id="path4301" + inkscape:connector-curvature="0" /> + <rect + y="1044.3622" + x="4" + height="3" + width="2" + id="rect4303" + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4159" + width="5" + height="2" + x="11" + y="1048.3622" /> + <rect + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4661" + width="2" + height="5.9999828" + x="1" + y="1044.3622" /> + <rect + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4667" + width="1" + height="2.0000174" + x="9" + y="1044.3622" /> + <path + inkscape:connector-curvature="0" + id="path4669" + d="m 9,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + transform="scale(1,-1)" + y="-1050.3622" + x="9" + height="2.0000174" + width="1" + id="rect4671" + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 9,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + id="path4673" + inkscape:connector-curvature="0" /> + <path + style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4677" + sodipodi:type="arc" + sodipodi:cx="13" + sodipodi:cy="1048.3622" + sodipodi:rx="2" + sodipodi:ry="2" + sodipodi:start="1.5707963" + sodipodi:end="4.712389" + d="m 13,1050.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1" + sodipodi:open="true" /> + <path + style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 13,1042.3622 0,2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597656,-1.5 z" + id="path4679" + inkscape:connector-curvature="0" /> + <rect + y="1042.3622" + x="12" + height="2" + width="1" + id="rect4684" + style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_vector2_array.svg b/tools/editor/icons/source/icon_mini_vector2_array.svg new file mode 100644 index 0000000000..03850f7c86 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_vector2_array.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_vector2_array.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="7.5779741" + inkscape:cy="8.910903" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="1050.3622" + x="0" + height="2.0000174" + width="4" + id="rect4158" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4160" + width="2" + height="12.000017" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4162" + width="4" + height="2.0000174" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4170" + width="4" + height="2.0000174" + x="-16" + y="1050.3622" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="12.000017" + width="2" + id="rect4172" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="2.0000174" + width="4" + id="rect4175" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <path + style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 3 3 L 3 9 L 5 9 A 3 3 0 0 0 8 6 L 8 3 L 6 3 L 6 6 A 1.0000174 1.0000174 0 0 1 5 7 L 5 3 L 3 3 z " + transform="translate(0,1040.3622)" + id="path4301" /> + <path + style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8.9999969,1042.3622 0,2 1.0000001,0 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 2,2 0 0 0 -1.732422,1 2,2 0 0 0 -0.265625,1 l -0.00195,0 0,0.047 0,1.9531 2,0 3,0 0,-2 -3,0 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597659,-1.5001 l -1.0000001,0 z" + id="rect4159" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_vector3.svg b/tools/editor/icons/source/icon_mini_vector3.svg new file mode 100644 index 0000000000..e99a211ae0 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_vector3.svg @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_vector3.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000002" + inkscape:cx="5.3282118" + inkscape:cy="6.0229362" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <path + inkscape:connector-curvature="0" + id="path4705" + d="m 3.0004202,1050.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z" + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4707" + width="2" + height="3" + x="4.0004206" + y="1044.3622" /> + <rect + y="1044.3622" + x="1.0004202" + height="5.9999828" + width="2" + id="rect4711" + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="1044.3622" + x="9.0004196" + height="2.0000174" + width="1" + id="rect4713" + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 9.0004202,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z" + id="path4715" + inkscape:connector-curvature="0" /> + <rect + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4717" + width="1" + height="2.0000174" + x="9.0004196" + y="-1050.3622" + transform="scale(1,-1)" /> + <path + inkscape:connector-curvature="0" + id="path4719" + d="m 9.0004202,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z" + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 13 2 L 13 3 A 1 1 0 0 1 14 4 A 1 1 0 0 1 13 5 L 13 7 A 3 3 0 0 0 15.597656 5.5 A 3 3 0 0 0 15.597656 2.5 A 3 3 0 0 0 15.234375 2 L 13 2 z " + transform="translate(0,1040.3622)" + id="path4723" /> + <rect + style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4725" + width="3.9995804" + height="2" + x="12.00042" + y="1042.3622" /> + <path + style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 13.00042,1045.3622 0,2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597656,-1.5 z" + id="path4727" + inkscape:connector-curvature="0" /> + <rect + y="1049.3622" + x="12.00042" + height="2" + width="1" + id="rect4729" + style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_vector3_array.svg b/tools/editor/icons/source/icon_mini_vector3_array.svg new file mode 100644 index 0000000000..bbac554614 --- /dev/null +++ b/tools/editor/icons/source/icon_mini_vector3_array.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="12" + viewBox="0 0 16 12" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" + sodipodi:docname="icon_mini_vector3_array.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32.000001" + inkscape:cx="4.9242706" + inkscape:cy="8.3355467" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1040.3622)"> + <rect + y="1050.3622" + x="0" + height="2.0000174" + width="4" + id="rect4158" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4160" + width="2" + height="12.000017" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4162" + width="4" + height="2.0000174" + x="0" + y="1040.3622" /> + <rect + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4170" + width="4" + height="2.0000174" + x="-16" + y="1050.3622" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="12.000017" + width="2" + id="rect4172" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <rect + y="1040.3622" + x="-16" + height="2.0000174" + width="4" + id="rect4175" + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="scale(-1,1)" /> + <path + style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 3 3 L 3 9 L 5 9 A 3 3 0 0 0 8 6 L 8 3 L 6 3 L 6 6 A 1.0000174 1.0000174 0 0 1 5 7 L 5 3 L 3 3 z " + transform="translate(0,1040.3622)" + id="path4705" /> + <path + style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 8 1 L 8 3 L 9 3 L 10 3 A 1 1 0 0 1 9 4 L 9 6 A 1 1 0 0 1 10 7 A 1 1 0 0 1 9 8 L 8 8 L 8 10 L 9 10 A 3 3 0 0 0 11.597656 8.5 A 3 3 0 0 0 11.597656 5.5 A 3 3 0 0 0 11.232422 4.9980469 A 3 3 0 0 0 11.597656 4.5 A 3 3 0 0 0 11.996094 3 L 12 3 L 12 1 L 11.234375 1 L 9 1 L 8 1 z " + transform="translate(0,1040.3622)" + id="path4723" /> + </g> +</svg> diff --git a/tools/editor/io_plugins/editor_font_import_plugin.cpp b/tools/editor/io_plugins/editor_font_import_plugin.cpp index 70bc44ba7d..df3741f0d4 100644 --- a/tools/editor/io_plugins/editor_font_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -100,7 +100,7 @@ public: bool color_use_monochrome; String gradient_image; - bool disable_filter; + bool enable_filter; bool round_advance; bool premultiply_alpha; @@ -166,8 +166,8 @@ public: color_use_monochrome=p_value; else if (n=="advanced/round_advance") round_advance=p_value; - else if (n=="advanced/disable_filter") - disable_filter=p_value; + else if (n=="advanced/enable_filter") + enable_filter=p_value; else if (n=="advanced/premultiply_alpha") premultiply_alpha=p_value; else @@ -236,8 +236,8 @@ public: r_ret=color_use_monochrome; else if (n=="advanced/round_advance") r_ret=round_advance; - else if (n=="advanced/disable_filter") - r_ret=disable_filter; + else if (n=="advanced/enable_filter") + r_ret=enable_filter; else if (n=="advanced/premultiply_alpha") r_ret=premultiply_alpha; else @@ -301,7 +301,7 @@ public: } p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/round_advance")); - p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/disable_filter")); + p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/enable_filter")); p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/premultiply_alpha")); } @@ -341,7 +341,7 @@ public: font_mode=FONT_BITMAP; round_advance=true; - disable_filter=false; + enable_filter=true; premultiply_alpha=false; } @@ -374,7 +374,7 @@ public: color_use_monochrome=false; round_advance=true; - disable_filter=false; + enable_filter=true; premultiply_alpha=false; } @@ -1591,7 +1591,10 @@ Ref<BitmapFont> EditorFontImportPlugin::generate_font(const Ref<ResourceImportMe int space_space = from->get_option("extra_space/space"); int top_space = from->get_option("extra_space/top"); int bottom_space = from->get_option("extra_space/bottom"); - bool disable_filter = from->get_option("advanced/disable_filter"); + bool enable_filter = from->get_option("advanced/enable_filter"); + if (from->has_option("advanced/disable_filter")){ // this is a compatibility check for a deprecated option + enable_filter = !from->get_option("advanced/disable_filter"); + } Ref<BitmapFont> font; @@ -1613,7 +1616,7 @@ Ref<BitmapFont> EditorFontImportPlugin::generate_font(const Ref<ResourceImportMe { Ref<ImageTexture> t = memnew(ImageTexture); int flags; - if (disable_filter) + if (!enable_filter) flags=0; else flags=Texture::FLAG_FILTER; diff --git a/tools/editor/plugins/canvas_item_editor_plugin.cpp b/tools/editor/plugins/canvas_item_editor_plugin.cpp index 02a24f8ddb..3468f42a6c 100644 --- a/tools/editor/plugins/canvas_item_editor_plugin.cpp +++ b/tools/editor/plugins/canvas_item_editor_plugin.cpp @@ -290,6 +290,7 @@ Dictionary CanvasItemEditor::get_state() const { state["snap_rotation"]=snap_rotation; state["snap_relative"]=snap_relative; state["snap_pixel"]=snap_pixel; + state["skeleton_show_bones"]=skeleton_show_bones; return state; } void CanvasItemEditor::set_state(const Dictionary& p_state){ @@ -351,6 +352,12 @@ void CanvasItemEditor::set_state(const Dictionary& p_state){ int idx = edit_menu->get_popup()->get_item_index(SNAP_USE_PIXEL); edit_menu->get_popup()->set_item_checked(idx,snap_pixel); } + + if (state.has("skeleton_show_bones")) { + skeleton_show_bones=state["skeleton_show_bones"]; + int idx = skeleton_menu->get_item_index(SKELETON_SHOW_BONES); + skeleton_menu->set_item_checked(idx,skeleton_show_bones); + } } @@ -648,7 +655,7 @@ void CanvasItemEditor::_key_move(const Vector2& p_dir, bool p_snap, KeyMoveMODE if (editor_selection->get_selected_node_list().empty()) return; - undo_redo->create_action(TTR("Move Action"),true); + undo_redo->create_action(TTR("Move Action"),UndoRedo::MERGE_ENDS); List<Node*> &selection = editor_selection->get_selected_node_list(); @@ -2083,76 +2090,78 @@ void CanvasItemEditor::_viewport_draw() { } - int bone_width = EditorSettings::get_singleton()->get("2d_editor/bone_width"); - Color bone_color1 = EditorSettings::get_singleton()->get("2d_editor/bone_color1"); - Color bone_color2 = EditorSettings::get_singleton()->get("2d_editor/bone_color2"); - Color bone_ik_color = EditorSettings::get_singleton()->get("2d_editor/bone_ik_color"); - Color bone_selected_color = EditorSettings::get_singleton()->get("2d_editor/bone_selected_color"); + if (skeleton_show_bones) { + int bone_width = EditorSettings::get_singleton()->get("2d_editor/bone_width"); + Color bone_color1 = EditorSettings::get_singleton()->get("2d_editor/bone_color1"); + Color bone_color2 = EditorSettings::get_singleton()->get("2d_editor/bone_color2"); + Color bone_ik_color = EditorSettings::get_singleton()->get("2d_editor/bone_ik_color"); + Color bone_selected_color = EditorSettings::get_singleton()->get("2d_editor/bone_selected_color"); - for(Map<ObjectID,BoneList>::Element*E=bone_list.front();E;E=E->next()) { + for(Map<ObjectID,BoneList>::Element*E=bone_list.front();E;E=E->next()) { - E->get().from=Vector2(); - E->get().to=Vector2(); + E->get().from=Vector2(); + E->get().to=Vector2(); - Object *obj = ObjectDB::get_instance(E->get().bone); - if (!obj) - continue; + Object *obj = ObjectDB::get_instance(E->get().bone); + if (!obj) + continue; - Node2D* n2d = obj->cast_to<Node2D>(); - if (!n2d) - continue; + Node2D* n2d = obj->cast_to<Node2D>(); + if (!n2d) + continue; - if (!n2d->get_parent()) - continue; + if (!n2d->get_parent()) + continue; - CanvasItem *pi = n2d->get_parent_item(); + CanvasItem *pi = n2d->get_parent_item(); - Node2D* pn2d=n2d->get_parent()->cast_to<Node2D>(); + Node2D* pn2d=n2d->get_parent()->cast_to<Node2D>(); - if (!pn2d) - continue; + if (!pn2d) + continue; - Vector2 from = transform.xform(pn2d->get_global_pos()); - Vector2 to = transform.xform(n2d->get_global_pos()); + Vector2 from = transform.xform(pn2d->get_global_pos()); + Vector2 to = transform.xform(n2d->get_global_pos()); - E->get().from=from; - E->get().to=to; + E->get().from=from; + E->get().to=to; - Vector2 rel = to-from; - Vector2 relt = rel.tangent().normalized()*bone_width; + Vector2 rel = to-from; + Vector2 relt = rel.tangent().normalized()*bone_width; - Vector<Vector2> bone_shape; - bone_shape.push_back(from); - bone_shape.push_back(from+rel*0.2+relt); - bone_shape.push_back(to); - bone_shape.push_back(from+rel*0.2-relt); - Vector<Color> colors; - if (pi->has_meta("_edit_ik_")) { + Vector<Vector2> bone_shape; + bone_shape.push_back(from); + bone_shape.push_back(from+rel*0.2+relt); + bone_shape.push_back(to); + bone_shape.push_back(from+rel*0.2-relt); + Vector<Color> colors; + if (pi->has_meta("_edit_ik_")) { - colors.push_back(bone_ik_color); - colors.push_back(bone_ik_color); - colors.push_back(bone_ik_color); - colors.push_back(bone_ik_color); - } else { - colors.push_back(bone_color1); - colors.push_back(bone_color2); - colors.push_back(bone_color1); - colors.push_back(bone_color2); - } + colors.push_back(bone_ik_color); + colors.push_back(bone_ik_color); + colors.push_back(bone_ik_color); + colors.push_back(bone_ik_color); + } else { + colors.push_back(bone_color1); + colors.push_back(bone_color2); + colors.push_back(bone_color1); + colors.push_back(bone_color2); + } - VisualServer::get_singleton()->canvas_item_add_primitive(ci,bone_shape,colors,Vector<Vector2>(),RID()); + VisualServer::get_singleton()->canvas_item_add_primitive(ci,bone_shape,colors,Vector<Vector2>(),RID()); - if (editor_selection->is_selected(pi)) { - for(int i=0;i<bone_shape.size();i++) { + if (editor_selection->is_selected(pi)) { + for(int i=0;i<bone_shape.size();i++) { - VisualServer::get_singleton()->canvas_item_add_line(ci,bone_shape[i],bone_shape[(i+1)%bone_shape.size()],bone_selected_color,2); + VisualServer::get_singleton()->canvas_item_add_line(ci,bone_shape[i],bone_shape[(i+1)%bone_shape.size()],bone_selected_color,2); + } } - } + } } } @@ -2536,6 +2545,12 @@ void CanvasItemEditor::_popup_callback(int p_op) { ((SnapDialog *)snap_dialog)->set_fields(snap_offset, snap_step, snap_rotation_offset, snap_rotation_step); snap_dialog->popup_centered(Size2(220,160)); } break; + case SKELETON_SHOW_BONES: { + skeleton_show_bones = !skeleton_show_bones; + int idx = skeleton_menu->get_item_index(SKELETON_SHOW_BONES); + skeleton_menu->set_item_checked(idx,skeleton_show_bones); + viewport->update(); + } break; case ZOOM_IN: { if (zoom>MAX_ZOOM) return; @@ -2979,57 +2994,7 @@ void CanvasItemEditor::_popup_callback(int p_op) { case VIEW_CENTER_TO_SELECTION: case VIEW_FRAME_TO_SELECTION: { - Vector2 center(0.f, 0.f); - Rect2 rect; - int count = 0; - - Map<Node*,Object*> &selection = editor_selection->get_selection(); - for(Map<Node*,Object*>::Element *E=selection.front();E;E=E->next()) { - CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>(); - if (!canvas_item) continue; - if (canvas_item->get_viewport()!=EditorNode::get_singleton()->get_scene_root()) - continue; - - - // counting invisible items, for now - //if (!canvas_item->is_visible()) continue; - ++count; - - Rect2 item_rect = canvas_item->get_item_rect(); - - Vector2 pos = canvas_item->get_global_transform().get_origin(); - Vector2 scale = canvas_item->get_global_transform().get_scale(); - real_t angle = canvas_item->get_global_transform().get_rotation(); - - Matrix32 t(angle, Vector2(0.f,0.f)); - item_rect = t.xform(item_rect); - Rect2 canvas_item_rect(pos + scale*item_rect.pos, scale*item_rect.size); - if (count == 1) { - rect = canvas_item_rect; - } else { - rect = rect.merge(canvas_item_rect); - } - }; - if (count==0) break; - - if (p_op == VIEW_CENTER_TO_SELECTION) { - - center = rect.pos + rect.size/2; - Vector2 offset = viewport->get_size()/2 - editor->get_scene_root()->get_global_canvas_transform().xform(center); - h_scroll->set_val(h_scroll->get_val() - offset.x/zoom); - v_scroll->set_val(v_scroll->get_val() - offset.y/zoom); - - } else { // VIEW_FRAME_TO_SELECTION - - if (rect.size.x > CMP_EPSILON && rect.size.y > CMP_EPSILON) { - float scale_x = viewport->get_size().x/rect.size.x; - float scale_y = viewport->get_size().y/rect.size.y; - zoom = scale_x < scale_y? scale_x:scale_y; - zoom *= 0.90; - _update_scroll(0); - call_deferred("_popup_callback", VIEW_CENTER_TO_SELECTION); - } - } + _focus_selection(p_op); } break; case SKELETON_MAKE_BONES: { @@ -3049,6 +3014,8 @@ void CanvasItemEditor::_popup_callback(int p_op) { continue; n2d->set_meta("_edit_bone_",true); + if (!skeleton_show_bones) + skeleton_menu->activate_item(skeleton_menu->get_item_index(SKELETON_SHOW_BONES)); } viewport->update(); @@ -3067,6 +3034,8 @@ void CanvasItemEditor::_popup_callback(int p_op) { continue; n2d->set_meta("_edit_bone_",Variant()); + if (!skeleton_show_bones) + skeleton_menu->activate_item(skeleton_menu->get_item_index(SKELETON_SHOW_BONES)); } viewport->update(); @@ -3086,6 +3055,8 @@ void CanvasItemEditor::_popup_callback(int p_op) { continue; canvas_item->set_meta("_edit_ik_",true); + if (!skeleton_show_bones) + skeleton_menu->activate_item(skeleton_menu->get_item_index(SKELETON_SHOW_BONES)); } @@ -3105,6 +3076,8 @@ void CanvasItemEditor::_popup_callback(int p_op) { continue; n2d->set_meta("_edit_ik_",Variant()); + if (!skeleton_show_bones) + skeleton_menu->activate_item(skeleton_menu->get_item_index(SKELETON_SHOW_BONES)); } viewport->update(); @@ -3142,6 +3115,62 @@ template< class P, class C > void CanvasItemEditor::space_selected_items() { } #endif + +void CanvasItemEditor::_focus_selection(int p_op) { + Vector2 center(0.f, 0.f); + Rect2 rect; + int count = 0; + + Map<Node*,Object*> &selection = editor_selection->get_selection(); + for(Map<Node*,Object*>::Element *E=selection.front();E;E=E->next()) { + CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>(); + if (!canvas_item) continue; + if (canvas_item->get_viewport()!=EditorNode::get_singleton()->get_scene_root()) + continue; + + + // counting invisible items, for now + //if (!canvas_item->is_visible()) continue; + ++count; + + Rect2 item_rect = canvas_item->get_item_rect(); + + Vector2 pos = canvas_item->get_global_transform().get_origin(); + Vector2 scale = canvas_item->get_global_transform().get_scale(); + real_t angle = canvas_item->get_global_transform().get_rotation(); + + Matrix32 t(angle, Vector2(0.f,0.f)); + item_rect = t.xform(item_rect); + Rect2 canvas_item_rect(pos + scale*item_rect.pos, scale*item_rect.size); + if (count == 1) { + rect = canvas_item_rect; + } else { + rect = rect.merge(canvas_item_rect); + } + }; + if (count==0) return; + + if (p_op == VIEW_CENTER_TO_SELECTION) { + + center = rect.pos + rect.size/2; + Vector2 offset = viewport->get_size()/2 - editor->get_scene_root()->get_global_canvas_transform().xform(center); + h_scroll->set_val(h_scroll->get_val() - offset.x/zoom); + v_scroll->set_val(v_scroll->get_val() - offset.y/zoom); + + } else { // VIEW_FRAME_TO_SELECTION + + if (rect.size.x > CMP_EPSILON && rect.size.y > CMP_EPSILON) { + float scale_x = viewport->get_size().x/rect.size.x; + float scale_y = viewport->get_size().y/rect.size.y; + zoom = scale_x < scale_y? scale_x:scale_y; + zoom *= 0.90; + _update_scroll(0); + call_deferred("_popup_callback", VIEW_CENTER_TO_SELECTION); + } + } +} + + void CanvasItemEditor::_bind_methods() { ObjectTypeDB::bind_method("_node_removed",&CanvasItemEditor::_node_removed); @@ -3247,6 +3276,12 @@ VSplitContainer *CanvasItemEditor::get_bottom_split() { return bottom_split; } + +void CanvasItemEditor::focus_selection() { + _focus_selection(VIEW_CENTER_TO_SELECTION); +} + + CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { tool = TOOL_SELECT; @@ -3389,15 +3424,17 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { p->add_shortcut(ED_SHORTCUT("canvas_item_editor/expand_to_parent", TTR("Expand to Parent"), KEY_MASK_CMD | KEY_P), EXPAND_TO_PARENT); p->add_separator(); p->add_submenu_item(TTR("Skeleton.."),"skeleton"); - PopupMenu *p2 = memnew(PopupMenu); - p->add_child(p2); - p2->set_name("skeleton"); - p2->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_make_bones", TTR("Make Bones"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_B ),SKELETON_MAKE_BONES); - p2->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_clear_bones", TTR("Clear Bones")), SKELETON_CLEAR_BONES); - p2->add_separator(); - p2->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_set_ik_chain", TTR("Make IK Chain")), SKELETON_SET_IK_CHAIN); - p2->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_clear_ik_chain", TTR("Clear IK Chain")), SKELETON_CLEAR_IK_CHAIN); - p2->connect("item_pressed", this,"_popup_callback"); + skeleton_menu = memnew(PopupMenu); + p->add_child(skeleton_menu); + skeleton_menu->set_name("skeleton"); + skeleton_menu->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_make_bones", TTR("Make Bones"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_B ),SKELETON_MAKE_BONES); + skeleton_menu->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_clear_bones", TTR("Clear Bones")), SKELETON_CLEAR_BONES); + skeleton_menu->add_separator(); + skeleton_menu->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_show_bones", TTR("Show Bones")), SKELETON_SHOW_BONES); + skeleton_menu->add_separator(); + skeleton_menu->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_set_ik_chain", TTR("Make IK Chain")), SKELETON_SET_IK_CHAIN); + skeleton_menu->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_clear_ik_chain", TTR("Clear IK Chain")), SKELETON_CLEAR_IK_CHAIN); + skeleton_menu->connect("item_pressed", this,"_popup_callback"); /* @@ -3523,6 +3560,8 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { snap_show_grid=false; snap_rotation=false; snap_pixel=false; + skeleton_show_bones=true; + skeleton_menu->set_item_checked(skeleton_menu->get_item_index(SKELETON_SHOW_BONES),true); updating_value_dialog=false; box_selecting=false; //zoom=0.5; diff --git a/tools/editor/plugins/canvas_item_editor_plugin.h b/tools/editor/plugins/canvas_item_editor_plugin.h index 22acfceed0..9f4bc46eb4 100644 --- a/tools/editor/plugins/canvas_item_editor_plugin.h +++ b/tools/editor/plugins/canvas_item_editor_plugin.h @@ -124,6 +124,7 @@ class CanvasItemEditor : public VBoxContainer { VIEW_FRAME_TO_SELECTION, SKELETON_MAKE_BONES, SKELETON_CLEAR_BONES, + SKELETON_SHOW_BONES, SKELETON_SET_IK_CHAIN, SKELETON_CLEAR_IK_CHAIN @@ -175,6 +176,7 @@ class CanvasItemEditor : public VBoxContainer { bool snap_rotation; bool snap_relative; bool snap_pixel; + bool skeleton_show_bones; bool box_selecting; Point2 box_selecting_to; bool key_pos; @@ -256,6 +258,7 @@ class CanvasItemEditor : public VBoxContainer { ToolButton *ungroup_button; MenuButton *edit_menu; + PopupMenu *skeleton_menu; MenuButton *view_menu; HBoxContainer *animation_hb; MenuButton *animation_menu; @@ -352,6 +355,8 @@ class CanvasItemEditor : public VBoxContainer { void _viewport_input_event(const InputEvent& p_event); void _viewport_draw(); + void _focus_selection(int p_op); + void _set_anchor(Control::AnchorType p_left,Control::AnchorType p_top,Control::AnchorType p_right,Control::AnchorType p_bottom); HSplitContainer *palette_split; @@ -414,10 +419,12 @@ public: Control *get_viewport_control() { return viewport; } - bool get_remove_list(List<Node*> *p_list); void set_undo_redo(UndoRedo *p_undo_redo) {undo_redo=p_undo_redo; } void edit(CanvasItem *p_canvas_item); + + void focus_selection(); + CanvasItemEditor(EditorNode *p_editor); }; diff --git a/tools/editor/plugins/color_ramp_editor_plugin.cpp b/tools/editor/plugins/color_ramp_editor_plugin.cpp index cb7f6a1809..4e2045edc6 100644 --- a/tools/editor/plugins/color_ramp_editor_plugin.cpp +++ b/tools/editor/plugins/color_ramp_editor_plugin.cpp @@ -84,7 +84,7 @@ void ColorRampEditorPlugin::_ramp_changed() { if (old_offsets.size()!=new_offsets.size()) ur->create_action(TTR("Add/Remove Color Ramp Point")); else - ur->create_action(TTR("Modify Color Ramp"),true); + ur->create_action(TTR("Modify Color Ramp"),UndoRedo::MERGE_ENDS); ur->add_do_method(this,"undo_redo_color_ramp",new_offsets,new_colors); ur->add_undo_method(this,"undo_redo_color_ramp",old_offsets,old_colors); ur->commit_action(); diff --git a/tools/editor/plugins/material_editor_plugin.cpp b/tools/editor/plugins/material_editor_plugin.cpp index f4258836e5..876fab0d6e 100644 --- a/tools/editor/plugins/material_editor_plugin.cpp +++ b/tools/editor/plugins/material_editor_plugin.cpp @@ -103,7 +103,7 @@ MaterialEditor::MaterialEditor() { world.instance(); viewport->set_world(world); //use own world add_child(viewport); - viewport->set_process_input(false); + viewport->set_disable_input(true); camera = memnew( Camera ); camera->set_transform(Transform(Matrix3(),Vector3(0,0,3))); diff --git a/tools/editor/plugins/mesh_editor_plugin.cpp b/tools/editor/plugins/mesh_editor_plugin.cpp index 71cf33ba1b..b70cbad25f 100644 --- a/tools/editor/plugins/mesh_editor_plugin.cpp +++ b/tools/editor/plugins/mesh_editor_plugin.cpp @@ -147,7 +147,7 @@ MeshEditor::MeshEditor() { world.instance(); viewport->set_world(world); //use own world add_child(viewport); - viewport->set_process_input(false); + viewport->set_disable_input(true); camera = memnew( Camera ); camera->set_transform(Transform(Matrix3(),Vector3(0,0,3))); diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp index 74c8ac9766..1f931fb492 100644 --- a/tools/editor/plugins/script_editor_plugin.cpp +++ b/tools/editor/plugins/script_editor_plugin.cpp @@ -987,6 +987,20 @@ void ScriptEditor::_notification(int p_what) { } +bool ScriptEditor::can_take_away_focus() const { + + int selected = tab_container->get_current_tab(); + if (selected<0 || selected>=tab_container->get_child_count()) + return true; + + ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>(); + if (!current) + return true; + + + return current->can_lose_focus_on_node_selection(); + +} void ScriptEditor::close_builtin_scripts_from_scene(const String& p_scene) { @@ -1278,6 +1292,7 @@ struct _ScriptEditorItemData { void ScriptEditor::_update_script_colors() { bool enabled = EditorSettings::get_singleton()->get("text_editor/script_temperature_enabled"); + bool highlight_current = EditorSettings::get_singleton()->get("text_editor/highlight_current_script"); if (!enabled) return; @@ -1305,8 +1320,12 @@ void ScriptEditor::_update_script_colors() { int non_zero_hist_size = ( hist_size == 0 ) ? 1 : hist_size; float v = Math::ease((edit_pass-pass)/float(non_zero_hist_size),0.4); - - script_list->set_item_custom_bg_color(i,hot_color.linear_interpolate(cold_color,v)); + bool current = tab_container->get_current_tab() == c; + if (current && highlight_current) { + script_list->set_item_custom_bg_color(i, EditorSettings::get_singleton()->get("text_editor/current_script_background_color")); + } else { + script_list->set_item_custom_bg_color(i,hot_color.linear_interpolate(cold_color,v)); + } } } @@ -1397,7 +1416,7 @@ void ScriptEditor::_update_script_names() { -void ScriptEditor::edit(const Ref<Script>& p_script) { +void ScriptEditor::edit(const Ref<Script>& p_script, bool p_grab_focus) { if (p_script.is_null()) return; @@ -1471,7 +1490,9 @@ void ScriptEditor::edit(const Ref<Script>& p_script) { } - _go_to_tab(tab_container->get_tab_count()-1); + if (p_grab_focus) { + _go_to_tab(tab_container->get_tab_count()-1); + } @@ -1932,6 +1953,13 @@ void ScriptEditor::_help_search(String p_text) { help_search_dialog->popup(p_text); } +void ScriptEditor::_open_script_request(const String& p_path) { + + Ref<Script> script = ResourceLoader::load(p_path); + if (script.is_valid()) { + script_editor->edit(script,false); + } +} int ScriptEditor::script_editor_func_count=0; CreateScriptEditorFunc ScriptEditor::script_editor_funcs[ScriptEditor::SCRIPT_EDITOR_FUNC_MAX]; @@ -2208,6 +2236,8 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { edit_pass=0; trim_trailing_whitespace_on_save = false; + + ScriptServer::edit_request_func=_open_script_request; } @@ -2331,9 +2361,11 @@ ScriptEditorPlugin::ScriptEditorPlugin(EditorNode *p_node) { EDITOR_DEF("external_editor/use_external_editor",false); EDITOR_DEF("external_editor/exec_path",""); EDITOR_DEF("text_editor/script_temperature_enabled",true); + EDITOR_DEF("text_editor/highlight_current_script", true); EDITOR_DEF("text_editor/script_temperature_history_size",15); EDITOR_DEF("text_editor/script_temperature_hot_color",Color(1,0,0,0.3)); EDITOR_DEF("text_editor/script_temperature_cold_color",Color(0,0,1,0.3)); + EDITOR_DEF("text_editor/current_script_background_color",Color(0.81,0.81,0.14,0.63)); EDITOR_DEF("text_editor/group_help_pages",true); EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,"external_editor/exec_path",PROPERTY_HINT_GLOBAL_FILE)); EDITOR_DEF("external_editor/exec_flags",""); diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h index 5cb70e13d7..1a23ffed72 100644 --- a/tools/editor/plugins/script_editor_plugin.h +++ b/tools/editor/plugins/script_editor_plugin.h @@ -101,6 +101,7 @@ public: virtual void add_callback(const String& p_function,StringArray p_args)=0; virtual void update_settings()=0; virtual void set_debugger_active(bool p_active)=0; + virtual bool can_lose_focus_on_node_selection() { return true; } virtual void set_tooltip_request_func(String p_method,Object* p_obj)=0; virtual Control *get_edit_menu()=0; @@ -285,6 +286,8 @@ class ScriptEditor : public VBoxContainer { int file_dialog_option; void _file_dialog_action(String p_file); + static void _open_script_request(const String& p_path); + static ScriptEditor *script_editor; protected: void _notification(int p_what); @@ -297,7 +300,7 @@ public: void apply_scripts() const; void ensure_select_current(); - void edit(const Ref<Script>& p_script); + void edit(const Ref<Script>& p_script,bool p_grab_focus=true); Dictionary get_state() const; void set_state(const Dictionary& p_state); @@ -320,6 +323,10 @@ public: void close_builtin_scripts_from_scene(const String& p_scene); + void goto_help(const String& p_desc) { _help_class_goto(p_desc); } + + bool can_take_away_focus() const; + ScriptEditorDebugger *get_debugger() { return debugger; } void set_live_auto_reload_running_scripts(bool p_enabled); diff --git a/tools/editor/plugins/shader_graph_editor_plugin.cpp b/tools/editor/plugins/shader_graph_editor_plugin.cpp index 375220051c..815da48e96 100644 --- a/tools/editor/plugins/shader_graph_editor_plugin.cpp +++ b/tools/editor/plugins/shader_graph_editor_plugin.cpp @@ -675,7 +675,7 @@ GraphCurveMapEdit::GraphCurveMapEdit(){ void ShaderGraphView::_scalar_const_changed(double p_value,int p_id) { UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("Change Scalar Constant"),true); + ur->create_action(TTR("Change Scalar Constant"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"scalar_const_node_set_value",type,p_id,p_value); ur->add_undo_method(graph.ptr(),"scalar_const_node_set_value",type,p_id,graph->scalar_const_node_get_value(type,p_id)); ur->add_do_method(this,"_update_graph"); @@ -693,7 +693,7 @@ void ShaderGraphView::_vec_const_changed(double p_value, int p_id,Array p_arr){ } UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("Change Vec Constant"),true); + ur->create_action(TTR("Change Vec Constant"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"vec_const_node_set_value",type,p_id,val); ur->add_undo_method(graph.ptr(),"vec_const_node_set_value",type,p_id,graph->vec_const_node_get_value(type,p_id)); ur->add_do_method(this,"_update_graph"); @@ -706,7 +706,7 @@ void ShaderGraphView::_vec_const_changed(double p_value, int p_id,Array p_arr){ void ShaderGraphView::_rgb_const_changed(const Color& p_color, int p_id){ UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("Change RGB Constant"),true); + ur->create_action(TTR("Change RGB Constant"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"rgb_const_node_set_value",type,p_id,p_color); ur->add_undo_method(graph.ptr(),"rgb_const_node_set_value",type,p_id,graph->rgb_const_node_get_value(type,p_id)); ur->add_do_method(this,"_update_graph"); @@ -807,7 +807,7 @@ void ShaderGraphView::_vec_func_changed(int p_func, int p_id){ void ShaderGraphView::_scalar_input_changed(double p_value,int p_id){ UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("Change Scalar Uniform"),true); + ur->create_action(TTR("Change Scalar Uniform"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"scalar_input_node_set_value",type,p_id,p_value); ur->add_undo_method(graph.ptr(),"scalar_input_node_set_value",type,p_id,graph->scalar_input_node_get_value(type,p_id)); ur->add_do_method(this,"_update_graph"); @@ -825,7 +825,7 @@ void ShaderGraphView::_vec_input_changed(double p_value, int p_id,Array p_arr){ } UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("Change Vec Uniform"),true); + ur->create_action(TTR("Change Vec Uniform"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"vec_input_node_set_value",type,p_id,val); ur->add_undo_method(graph.ptr(),"vec_input_node_set_value",type,p_id,graph->vec_input_node_get_value(type,p_id)); ur->add_do_method(this,"_update_graph"); @@ -863,7 +863,7 @@ void ShaderGraphView::_rgb_input_changed(const Color& p_color, int p_id){ UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("Change RGB Uniform"),true); + ur->create_action(TTR("Change RGB Uniform"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"rgb_input_node_set_value",type,p_id,p_color); ur->add_undo_method(graph.ptr(),"rgb_input_node_set_value",type,p_id,graph->rgb_input_node_get_value(type,p_id)); ur->add_do_method(this,"_update_graph"); @@ -963,7 +963,7 @@ void ShaderGraphView::_comment_edited(int p_id,Node* p_button) { UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); TextEdit *te=p_button->cast_to<TextEdit>(); - ur->create_action(TTR("Change Comment"),true); + ur->create_action(TTR("Change Comment"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"comment_node_set_text",type,p_id,te->get_text()); ur->add_undo_method(graph.ptr(),"comment_node_set_text",type,p_id,graph->comment_node_get_text(type,p_id)); ur->add_do_method(this,"_update_graph"); @@ -1005,7 +1005,7 @@ void ShaderGraphView::_color_ramp_changed(int p_id,Node* p_ramp) { if (old_offsets.size()!=new_offsets.size()) ur->create_action(TTR("Add/Remove to Color Ramp")); else - ur->create_action(TTR("Modify Color Ramp"),true); + ur->create_action(TTR("Modify Color Ramp"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"color_ramp_node_set_ramp",type,p_id,new_colors,new_offsets); ur->add_undo_method(graph.ptr(),"color_ramp_node_set_ramp",type,p_id,old_colors,old_offsets); @@ -1041,7 +1041,7 @@ void ShaderGraphView::_curve_changed(int p_id,Node* p_curve) { if (old_points.size()!=new_points.size()) ur->create_action(TTR("Add/Remove to Curve Map")); else - ur->create_action(TTR("Modify Curve Map"),true); + ur->create_action(TTR("Modify Curve Map"),UndoRedo::MERGE_ENDS); ur->add_do_method(graph.ptr(),"curve_map_node_set_points",type,p_id,new_points); ur->add_undo_method(graph.ptr(),"curve_map_node_set_points",type,p_id,old_points); diff --git a/tools/editor/plugins/spatial_editor_plugin.cpp b/tools/editor/plugins/spatial_editor_plugin.cpp index a70df78697..41956747e1 100644 --- a/tools/editor/plugins/spatial_editor_plugin.cpp +++ b/tools/editor/plugins/spatial_editor_plugin.cpp @@ -1980,33 +1980,8 @@ void SpatialEditorViewport::_menu_option(int p_option) { } break; case VIEW_CENTER_TO_SELECTION: { - if (!get_selected_count()) - break; - - Vector3 center; - int count=0; - - List<Node*> &selection = editor_selection->get_selected_node_list(); - - for(List<Node*>::Element *E=selection.front();E;E=E->next()) { - - Spatial *sp = E->get()->cast_to<Spatial>(); - if (!sp) - continue; + focus_selection(); - SpatialEditorSelectedItem *se=editor_selection->get_node_editor_data<SpatialEditorSelectedItem>(sp); - if (!se) - continue; - - center+=sp->get_global_transform().origin; - count++; - } - - if( count != 0 ) { - center/=float(count); - } - - cursor.pos=center; } break; case VIEW_ALIGN_SELECTION_WITH_VIEW: { @@ -2323,6 +2298,38 @@ void SpatialEditorViewport::reset() { _update_name(); } + +void SpatialEditorViewport::focus_selection() { + if (!get_selected_count()) + return; + + Vector3 center; + int count=0; + + List<Node*> &selection = editor_selection->get_selected_node_list(); + + for(List<Node*>::Element *E=selection.front();E;E=E->next()) { + + Spatial *sp = E->get()->cast_to<Spatial>(); + if (!sp) + continue; + + SpatialEditorSelectedItem *se=editor_selection->get_node_editor_data<SpatialEditorSelectedItem>(sp); + if (!se) + continue; + + center+=sp->get_global_transform().origin; + count++; + } + + if( count != 0 ) { + center/=float(count); + } + + cursor.pos=center; +} + + SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, EditorNode *p_editor, int p_index) { _edit.mode=TRANSFORM_NONE; @@ -3144,6 +3151,8 @@ void SpatialEditor::_init_indicators() { Vector<Color> origin_colors; Vector<Vector3> origin_points; + Color grid_color = EditorSettings::get_singleton()->get("3d_editor/grid_color"); + for(int i=0;i<3;i++) { Vector3 axis; axis[i]=1; @@ -3161,10 +3170,10 @@ void SpatialEditor::_init_indicators() { for(int j=-ORIGIN_GRID_SIZE;j<=ORIGIN_GRID_SIZE;j++) { - grid_colors[i].push_back(Color(axis.x,axis.y,axis.z,0.2)); - grid_colors[i].push_back(Color(axis.x,axis.y,axis.z,0.2)); - grid_colors[i].push_back(Color(axis.x,axis.y,axis.z,0.2)); - grid_colors[i].push_back(Color(axis.x,axis.y,axis.z,0.2)); + grid_colors[i].push_back(grid_color); + grid_colors[i].push_back(grid_color); + grid_colors[i].push_back(grid_color); + grid_colors[i].push_back(grid_color); grid_points[i].push_back(axis_n1*ORIGIN_GRID_SIZE+axis_n2*j); grid_points[i].push_back(-axis_n1*ORIGIN_GRID_SIZE+axis_n2*j); grid_points[i].push_back(axis_n2*ORIGIN_GRID_SIZE+axis_n1*j); diff --git a/tools/editor/plugins/spatial_editor_plugin.h b/tools/editor/plugins/spatial_editor_plugin.h index 54086b0031..975092a01d 100644 --- a/tools/editor/plugins/spatial_editor_plugin.h +++ b/tools/editor/plugins/spatial_editor_plugin.h @@ -253,6 +253,9 @@ public: void set_state(const Dictionary& p_state); Dictionary get_state() const; void reset(); + + void focus_selection(); + Viewport *get_viewport_node() { return viewport; } diff --git a/tools/editor/plugins/sprite_frames_editor_plugin.cpp b/tools/editor/plugins/sprite_frames_editor_plugin.cpp index e29a0c8d52..41beaa96a1 100644 --- a/tools/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/tools/editor/plugins/sprite_frames_editor_plugin.cpp @@ -524,7 +524,7 @@ void SpriteFramesEditor::_animation_fps_changed(double p_value) { if (updating) return; - undo_redo->create_action(TTR("Change Animation FPS"),true); + undo_redo->create_action(TTR("Change Animation FPS"),UndoRedo::MERGE_ENDS); undo_redo->add_do_method(frames,"set_animation_speed",edited_anim,p_value); undo_redo->add_undo_method(frames,"set_animation_speed",edited_anim,frames->get_animation_speed(edited_anim)); undo_redo->add_do_method(this,"_update_library",true); diff --git a/tools/editor/plugins/texture_region_editor_plugin.cpp b/tools/editor/plugins/texture_region_editor_plugin.cpp index 3d220b8474..43086fb208 100644 --- a/tools/editor/plugins/texture_region_editor_plugin.cpp +++ b/tools/editor/plugins/texture_region_editor_plugin.cpp @@ -388,6 +388,10 @@ void TextureRegionEditor::_region_input(const InputEvent& p_input) drag_index = -1; } } + } else if (mb.button_index == BUTTON_WHEEL_UP) { + _zoom_in(); + } else if (mb.button_index == BUTTON_WHEEL_DOWN) { + _zoom_out(); } } else if (p_input.type==InputEvent::MOUSE_MOTION) { diff --git a/tools/editor/plugins/tile_map_editor_plugin.cpp b/tools/editor/plugins/tile_map_editor_plugin.cpp index 316077c5d5..43fe7d7ea9 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.cpp +++ b/tools/editor/plugins/tile_map_editor_plugin.cpp @@ -289,15 +289,16 @@ void TileMapEditor::_pick_tile(const Point2& p_pos) { canvas_item_editor->update(); } -DVector<Vector2> TileMapEditor::_bucket_fill(const Point2i& p_start) { +DVector<Vector2> TileMapEditor::_bucket_fill(const Point2i& p_start, bool erase) { - if (node->get_cell(p_start.x, p_start.y) != TileMap::INVALID_CELL) - return DVector<Vector2>(); + int prev_id = node->get_cell(p_start.x, p_start.y); + int id = TileMap::INVALID_CELL; + if (!erase) { + id = get_selected_tile(); - int id = get_selected_tile(); - - if (id == TileMap::INVALID_CELL) - return DVector<Vector2>(); + if (id == TileMap::INVALID_CELL) + return DVector<Vector2>(); + } Rect2 r = node->get_item_rect(); r.pos = r.pos/node->get_cell_size(); @@ -316,7 +317,7 @@ DVector<Vector2> TileMapEditor::_bucket_fill(const Point2i& p_start) { if (!r.has_point(n)) continue; - if (node->get_cell(n.x, n.y) == TileMap::INVALID_CELL) { + if (node->get_cell(n.x, n.y) == prev_id) { node->set_cellv(n, id, flip_h, flip_v, transpose); @@ -685,6 +686,12 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { } else if (tool==TOOL_BUCKET) { + Dictionary pop; + pop["id"] = node->get_cell(over_tile.x, over_tile.y); + pop["flip_h"] = node->is_cell_x_flipped(over_tile.x, over_tile.y); + pop["flip_v"] = node->is_cell_y_flipped(over_tile.x, over_tile.y); + pop["transpose"] = node->is_cell_transposed(over_tile.x, over_tile.y); + DVector<Vector2> points = _bucket_fill(over_tile); if (points.size() == 0) @@ -699,7 +706,7 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { undo_redo->create_action("Bucket Fill"); undo_redo->add_do_method(this, "_fill_points", points, op); - undo_redo->add_undo_method(this, "_erase_points", points); + undo_redo->add_undo_method(this, "_fill_points", points, pop); undo_redo->commit_action(); } @@ -782,6 +789,26 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { tool=TOOL_NONE; return true; + + } else if (tool==TOOL_BUCKET) { + + Dictionary pop; + pop["id"] = node->get_cell(over_tile.x, over_tile.y); + pop["flip_h"] = node->is_cell_x_flipped(over_tile.x, over_tile.y); + pop["flip_v"] = node->is_cell_y_flipped(over_tile.x, over_tile.y); + pop["transpose"] = node->is_cell_transposed(over_tile.x, over_tile.y); + + DVector<Vector2> points = _bucket_fill(over_tile, true); + + if (points.size() == 0) + return false; + + undo_redo->create_action("Bucket Fill"); + + undo_redo->add_do_method(this, "_erase_points", points); + undo_redo->add_undo_method(this, "_fill_points", points, pop); + + undo_redo->commit_action(); } } } @@ -798,6 +825,13 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { canvas_item_editor->update(); } + int tile_under = node->get_cell(over_tile.x, over_tile.y); + String tile_name = "none"; + + if (node->get_tileset()->has_tile(tile_under)) + tile_name = node->get_tileset()->tile_get_name(tile_under); + tile_info->set_text(String::num(over_tile.x)+", "+String::num(over_tile.y)+" ["+tile_name+"]"); + if (tool==TOOL_PAINTING) { int id = get_selected_tile(); @@ -1370,6 +1404,10 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { toolbar->set_alignment(BoxContainer::ALIGN_END); CanvasItemEditor::get_singleton()->add_control_to_menu_panel(toolbar); + // Tile position + tile_info = memnew( Label ); + toolbar->add_child(tile_info); + options = memnew( MenuButton ); options->set_text("Tile Map"); options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("TileMap", "EditorIcons")); diff --git a/tools/editor/plugins/tile_map_editor_plugin.h b/tools/editor/plugins/tile_map_editor_plugin.h index f586c5bf13..4b47dccd15 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.h +++ b/tools/editor/plugins/tile_map_editor_plugin.h @@ -36,6 +36,7 @@ #include "scene/gui/line_edit.h" #include "scene/gui/tool_button.h" #include "scene/gui/menu_button.h" +#include "scene/gui/label.h" /** @author Juan Linietsky <reduzio@gmail.com> @@ -81,6 +82,7 @@ class TileMapEditor : public VBoxContainer { HBoxContainer *toolbar; + Label *tile_info; MenuButton *options; ToolButton *transp; ToolButton *mirror_x; @@ -127,7 +129,7 @@ class TileMapEditor : public VBoxContainer { void _pick_tile(const Point2& p_pos); - DVector<Vector2> _bucket_fill(const Point2i& p_start); + DVector<Vector2> _bucket_fill(const Point2i& p_start, bool erase=false); void _fill_points(const DVector<Vector2> p_points, const Dictionary& p_op); void _erase_points(const DVector<Vector2> p_points); diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index dc1d6ec0f9..0c734436cd 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -1196,15 +1196,12 @@ ProjectManager::ProjectManager() { FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("file_dialog/show_hidden_files")); set_area_as_parent_rect(); + set_theme(create_default_theme()); gui_base = memnew( Control ); add_child(gui_base); gui_base->set_area_as_parent_rect(); - set_theme(create_default_theme()); - Ref<Theme> theme = create_editor_theme(); - gui_base->set_theme(theme); - Panel *panel = memnew( Panel ); gui_base->add_child(panel); panel->set_area_as_parent_rect(); @@ -1391,6 +1388,8 @@ ProjectManager::ProjectManager() { last_clicked = ""; SceneTree::get_singleton()->connect("files_dropped", this, "_files_dropped"); + + gui_base->set_theme(create_editor_theme()); } diff --git a/tools/editor/project_settings.cpp b/tools/editor/project_settings.cpp index e8d22143ee..02d95abfa2 100644 --- a/tools/editor/project_settings.cpp +++ b/tools/editor/project_settings.cpp @@ -245,7 +245,7 @@ void ProjectSettings::_device_input_add() { undo_redo->add_undo_method(this,"_settings_changed"); undo_redo->commit_action(); - + _show_last_added(ie); } @@ -283,7 +283,34 @@ void ProjectSettings::_press_a_key_confirm() { undo_redo->add_undo_method(this,"_settings_changed"); undo_redo->commit_action(); + _show_last_added(ie); +} + +void ProjectSettings::_show_last_added(const InputEvent& p_event) { + TreeItem *r = input_editor->get_root(); + + if (!r) + return; + r=r->get_children(); + if (!r) + return; + bool found = false; + while(r){ + TreeItem *child = r->get_children(); + while(child){ + Variant input = child->get_meta("__input"); + if (p_event==input){ + child->select(0); + found = true; + break; + } + child=child->get_next(); + } + if (found) break; + r=r->get_next(); + } + if (found) input_editor->ensure_cursor_is_visible(); } void ProjectSettings::_wait_for_key(const InputEvent& p_event) { @@ -337,7 +364,7 @@ void ProjectSettings::_add_item(int p_item){ device_index->add_item(TTR("Button 7")); device_index->add_item(TTR("Button 8")); device_index->add_item(TTR("Button 9")); - device_input->popup_centered(Size2(350,95)); + device_input->popup_centered_minsize(Size2(350,95)); } break; case InputEvent::JOYSTICK_MOTION: { @@ -349,12 +376,12 @@ void ProjectSettings::_add_item(int p_item){ String desc = _axis_names[i]; device_index->add_item(TTR("Axis")+" "+itos(i/2)+" "+(i&1?"+":"-")+desc); } - device_input->popup_centered(Size2(350,95)); + device_input->popup_centered_minsize(Size2(350,95)); } break; case InputEvent::JOYSTICK_BUTTON: { - device_id->set_val(0); + device_id->set_val(3); device_index_label->set_text(TTR("Joystick Button Index:")); device_index->clear(); @@ -362,7 +389,7 @@ void ProjectSettings::_add_item(int p_item){ device_index->add_item(itos(i)+": "+String(_button_names[i])); } - device_input->popup_centered(Size2(350,95)); + device_input->popup_centered_minsize(Size2(350,95)); } break; default:{} @@ -543,6 +570,7 @@ void ProjectSettings::_update_actions() { } action->add_button(0,get_icon("Remove","EditorIcons"),2); action->set_metadata(0,i); + action->set_meta("__input", ie); } } } @@ -1432,30 +1460,32 @@ ProjectSettings::ProjectSettings(EditorData *p_data) { device_input->get_ok()->set_text(TTR("Add")); device_input->connect("confirmed",this,"_device_input_add"); - l = memnew( Label ); - l->set_text(TTR("Device:")); - l->set_pos(Point2(15,10)); - device_input->add_child(l); + hbc = memnew( HBoxContainer ); + device_input->add_child(hbc); + device_input->set_child_rect(hbc); + + VBoxContainer *vbc_left = memnew( VBoxContainer ); + hbc->add_child(vbc_left); l = memnew( Label ); - l->set_text(TTR("Index:")); - l->set_pos(Point2(90,10)); - device_input->add_child(l); - device_index_label=l; + l->set_text(TTR("Device:")); + vbc_left->add_child(l); device_id = memnew( SpinBox ); - device_id->set_pos(Point2(20,30)); - device_id->set_size(Size2(70,10)); device_id->set_val(0); + vbc_left->add_child(device_id); - device_input->add_child(device_id); + VBoxContainer *vbc_right = memnew( VBoxContainer ); + hbc->add_child(vbc_right); + vbc_right->set_h_size_flags(SIZE_EXPAND_FILL); - device_index = memnew( OptionButton ); - device_index->set_pos(Point2(95,30)); - device_index->set_size(Size2(300,10)); - device_index->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,10); + l = memnew( Label ); + l->set_text(TTR("Index:")); + vbc_right->add_child(l); + device_index_label=l; - device_input->add_child(device_index); + device_index = memnew( OptionButton ); + vbc_right->add_child(device_index); /* save = memnew( Button ); diff --git a/tools/editor/project_settings.h b/tools/editor/project_settings.h index 46e98f69ad..61ad094d00 100644 --- a/tools/editor/project_settings.h +++ b/tools/editor/project_settings.h @@ -111,7 +111,7 @@ class ProjectSettings : public AcceptDialog { void _action_button_pressed(Object* p_obj, int p_column,int p_id); void _wait_for_key(const InputEvent& p_event); void _press_a_key_confirm(); - + void _show_last_added(const InputEvent& p_event); void _settings_prop_edited(const String& p_name); void _settings_changed(); diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp index 0518018e5a..de10e68f33 100644 --- a/tools/editor/property_editor.cpp +++ b/tools/editor/property_editor.cpp @@ -46,6 +46,7 @@ #include "scene/main/viewport.h" #include "editor_file_system.h" #include "create_dialog.h" +#include "property_selector.h" void CustomPropertyEditor::_notification(int p_what) { @@ -83,6 +84,20 @@ void CustomPropertyEditor::_menu_option(int p_which) { v=val; emit_signal("variant_changed"); + } else if (hint==PROPERTY_HINT_ENUM) { + + v=p_which; + emit_signal("variant_changed"); + + } + } break; + case Variant::STRING: { + + if (hint==PROPERTY_HINT_ENUM) { + + v=hint_text.get_slice(",",p_which); + emit_signal("variant_changed"); + } } break; case Variant::OBJECT: { @@ -282,6 +297,16 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty switch(type) { + case Variant::BOOL: { + + CheckBox *c=checks20[0]; + c->set_text("True"); + c->set_pos(Vector2(4,4)); + c->set_pressed(v); + c->show(); + set_size(checks20[0]->get_pos()+checks20[0]->get_size()+Vector2(4,4)*EDSCALE); + + } break; case Variant::INT: case Variant::REAL: { @@ -322,9 +347,24 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty set_size(Size2(70,35)*EDSCALE); } + } else if (hint==PROPERTY_HINT_ENUM) { + + menu->clear(); + Vector<String> options = hint_text.split(","); + for(int i=0;i<options.size();i++) { + menu->add_item(options[i],i); + } + menu->set_pos(get_pos()); + menu->popup(); + hide(); + updating=false; + return false; + } else if (hint==PROPERTY_HINT_ALL_FLAGS) { + checks20[0]->set_text(""); + uint32_t flgs = v; for(int i=0;i<2;i++) { @@ -415,7 +455,16 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty config_action_buttons(names); } else if (hint==PROPERTY_HINT_ENUM) { - + menu->clear(); + Vector<String> options = hint_text.split(","); + for(int i=0;i<options.size();i++) { + menu->add_item(options[i],i); + } + menu->set_pos(get_pos()); + menu->popup(); + hide(); + updating=false; + return false; } else if (hint==PROPERTY_HINT_MULTILINE_TEXT) { @@ -438,6 +487,7 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty } else if (hint==PROPERTY_HINT_TYPE_STRING) { + if (!create_dialog) { create_dialog = memnew( CreateDialog ); create_dialog->connect("create",this,"_create_dialog_callback"); @@ -452,6 +502,112 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty create_dialog->popup(false); hide(); + updating=false; + return false; + + + } else if (hint==PROPERTY_HINT_METHOD_OF_VARIANT_TYPE) { +#define MAKE_PROPSELECT if (!property_select) { property_select = memnew(PropertySelector); property_select->connect("selected",this,"_create_selected_property"); add_child(property_select); } hide(); + + MAKE_PROPSELECT; + + Variant::Type type=Variant::NIL; + for(int i=0;i<Variant::VARIANT_MAX;i++) { + if (hint_text==Variant::get_type_name(Variant::Type(i))) { + type=Variant::Type(i); + } + } + if (type) + property_select->select_method_from_basic_type(type,v); + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_METHOD_OF_BASE_TYPE) { + MAKE_PROPSELECT + + property_select->select_method_from_base_type(hint_text,v); + + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_METHOD_OF_INSTANCE) { + + MAKE_PROPSELECT + + Object *instance = ObjectDB::get_instance(hint_text.to_int64()); + if (instance) + property_select->select_method_from_instance(instance,v); + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_METHOD_OF_SCRIPT) { + MAKE_PROPSELECT + + Object *obj = ObjectDB::get_instance(hint_text.to_int64()); + if (obj && obj->cast_to<Script>()) { + property_select->select_method_from_script(obj->cast_to<Script>(),v); + } + + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE) { + + MAKE_PROPSELECT + Variant::Type type=Variant::NIL; + String tname=hint_text; + if (tname.find(".")!=-1) + tname=tname.get_slice(".",0); + for(int i=0;i<Variant::VARIANT_MAX;i++) { + if (tname==Variant::get_type_name(Variant::Type(i))) { + type=Variant::Type(Variant::Type(i)); + } + } + InputEvent::Type iet = InputEvent::NONE; + if (hint_text.find(".")!=-1) { + iet=InputEvent::Type(int(hint_text.get_slice(".",1).to_int())); + } + if (type) + property_select->select_property_from_basic_type(type,iet,v); + + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_PROPERTY_OF_BASE_TYPE) { + + MAKE_PROPSELECT + + property_select->select_property_from_base_type(hint_text,v); + + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_PROPERTY_OF_INSTANCE) { + + Object *instance = ObjectDB::get_instance(hint_text.to_int64()); + if (instance) + property_select->select_property_from_instance(instance,v); + + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_PROPERTY_OF_SCRIPT) { + MAKE_PROPSELECT + + Object *obj = ObjectDB::get_instance(hint_text.to_int64()); + if (obj && obj->cast_to<Script>()) { + property_select->select_property_from_script(obj->cast_to<Script>(),v); + } + + updating=false; + return false; + + } else if (hint==PROPERTY_HINT_TYPE_STRING) { + if (!create_dialog) { + create_dialog = memnew( CreateDialog ); + create_dialog->connect("create",this,"_create_dialog_callback"); + add_child(create_dialog); + } } else { List<String> names; @@ -1009,6 +1165,10 @@ void CustomPropertyEditor::_action_pressed(int p_which) { return; switch(type) { + case Variant::BOOL: { + v=checks20[0]->is_pressed(); + emit_signal("variant_changed"); + } break; case Variant::INT: { if (hint==PROPERTY_HINT_ALL_FLAGS) { @@ -1043,6 +1203,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) { file->clear_filters(); + if (hint_text!="") { Vector<String> extensions=hint_text.split(","); for(int i=0;i<extensions.size();i++) { @@ -1360,6 +1521,13 @@ void CustomPropertyEditor::_create_dialog_callback() { emit_signal("variant_changed"); } +void CustomPropertyEditor::_create_selected_property(const String& p_prop) { + + + v=p_prop; + emit_signal("variant_changed"); +} + void CustomPropertyEditor::_modified(String p_string) { if (updating) @@ -1753,6 +1921,7 @@ void CustomPropertyEditor::_bind_methods() { ObjectTypeDB::bind_method( "_text_edit_changed",&CustomPropertyEditor::_text_edit_changed); ObjectTypeDB::bind_method( "_menu_option",&CustomPropertyEditor::_menu_option); ObjectTypeDB::bind_method( "_create_dialog_callback",&CustomPropertyEditor::_create_dialog_callback); + ObjectTypeDB::bind_method( "_create_selected_property",&CustomPropertyEditor::_create_selected_property); @@ -1877,6 +2046,7 @@ CustomPropertyEditor::CustomPropertyEditor() { slider->connect("value_changed",this,"_range_modified"); create_dialog = NULL; + property_select = NULL; } bool PropertyEditor::_might_be_in_instance() { @@ -2150,6 +2320,19 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String& p p_item->set_text(1,obj->get(p_name)); } + if ( p_hint==PROPERTY_HINT_METHOD_OF_VARIANT_TYPE || + p_hint==PROPERTY_HINT_METHOD_OF_BASE_TYPE || + p_hint==PROPERTY_HINT_METHOD_OF_INSTANCE || + p_hint==PROPERTY_HINT_METHOD_OF_SCRIPT || + p_hint==PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE || + p_hint==PROPERTY_HINT_PROPERTY_OF_BASE_TYPE || + p_hint==PROPERTY_HINT_PROPERTY_OF_INSTANCE || + p_hint==PROPERTY_HINT_PROPERTY_OF_SCRIPT ) { + + p_item->set_text(1,obj->get(p_name)); + } + + if (p_hint==PROPERTY_HINT_ENUM) { Vector<String> strings = p_hint_text.split(","); @@ -3172,6 +3355,14 @@ void PropertyEditor::update_tree() { } break; + case PROPERTY_HINT_METHOD_OF_VARIANT_TYPE: ///< a property of a type + case PROPERTY_HINT_METHOD_OF_BASE_TYPE: ///< a method of a base type + case PROPERTY_HINT_METHOD_OF_INSTANCE: ///< a method of an instance + case PROPERTY_HINT_METHOD_OF_SCRIPT: ///< a method of a script & base + case PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE: ///< a property of a type + case PROPERTY_HINT_PROPERTY_OF_BASE_TYPE: ///< a property of a base type + case PROPERTY_HINT_PROPERTY_OF_INSTANCE: ///< a property of an instance + case PROPERTY_HINT_PROPERTY_OF_SCRIPT: ///< a property of a script & base case PROPERTY_HINT_TYPE_STRING: { item->set_cell_mode( 1, TreeItem::CELL_MODE_CUSTOM); @@ -3181,6 +3372,7 @@ void PropertyEditor::update_tree() { item->set_text(1,obj->get(p.name)); } break; + default: { item->set_cell_mode( 1, TreeItem::CELL_MODE_STRING ); @@ -3564,7 +3756,7 @@ void PropertyEditor::_edit_set(const String& p_name, const Variant& p_value) { } else { - undo_redo->create_action(TTR("Set")+" "+p_name,true); + undo_redo->create_action(TTR("Set")+" "+p_name,UndoRedo::MERGE_ENDS); undo_redo->add_do_property(obj,p_name,p_value); undo_redo->add_undo_property(obj,p_name,obj->get(p_name)); undo_redo->add_do_method(this,"_changed_callback",obj,p_name); @@ -4365,7 +4557,7 @@ void SectionedPropertyEditor::update_category_list() { else if ( !(pi.usage&PROPERTY_USAGE_EDITOR) ) continue; - if (pi.name.find(":")!=-1 || pi.name=="script/script") + if (pi.name.find(":")!=-1 || pi.name=="script/script" || pi.name.begins_with("resource/")) continue; int sp = pi.name.find("/"); if (sp!=-1) { diff --git a/tools/editor/property_editor.h b/tools/editor/property_editor.h index d911aae883..6c6c309d32 100644 --- a/tools/editor/property_editor.h +++ b/tools/editor/property_editor.h @@ -49,6 +49,8 @@ class PropertyValueEvaluator; class CreateDialog; +class PropertySelector; + class CustomPropertyEditor : public Popup { OBJ_TYPE( CustomPropertyEditor, Popup ); @@ -103,6 +105,7 @@ class CustomPropertyEditor : public Popup { Control *easing_draw; CreateDialog *create_dialog; + PropertySelector *property_select; Object* owner; @@ -120,6 +123,7 @@ class CustomPropertyEditor : public Popup { void _action_pressed(int p_which); void _type_create_selected(int p_idx); void _create_dialog_callback(); + void _create_selected_property(const String &p_prop); void _color_changed(const Color& p_color); diff --git a/tools/editor/property_selector.cpp b/tools/editor/property_selector.cpp new file mode 100644 index 0000000000..20b72240d9 --- /dev/null +++ b/tools/editor/property_selector.cpp @@ -0,0 +1,598 @@ +#include "property_selector.h" +#include "editor_scale.h" + +#include "os/keyboard.h" + +void PropertySelector::_text_changed(const String& p_newtext) { + + _update_search(); +} + +void PropertySelector::_sbox_input(const InputEvent& p_ie) { + + if (p_ie.type==InputEvent::KEY) { + + switch(p_ie.key.scancode) { + case KEY_UP: + case KEY_DOWN: + case KEY_PAGEUP: + case KEY_PAGEDOWN: { + + search_options->call("_input_event", p_ie); + search_box->accept_event(); + + TreeItem *root = search_options->get_root(); + if (!root->get_children()) + break; + + TreeItem *current = search_options->get_selected(); + + TreeItem *item = search_options->get_next_selected(root); + while (item) { + item->deselect(0); + item = search_options->get_next_selected(item); + } + + current->select(0); + + } break; + } + } +} + + +void PropertySelector::_update_search() { + + + if (properties) + set_title(TTR("Select Property")); + else + set_title(TTR("Select Method")); + + search_options->clear(); + help_bit->set_text(""); + + + TreeItem *root = search_options->create_item(); + + + if (properties) { + + List<PropertyInfo> props; + + if (instance) { + instance->get_property_list(&props,true); + } else if (type!=Variant::NIL) { + Variant v; + if (type==Variant::INPUT_EVENT) { + InputEvent ie; + ie.type=event_type; + v=ie; + } else { + Variant::CallError ce; + v=Variant::construct(type,NULL,0,ce); + } + + v.get_property_list(&props); + } else { + + + Object *obj = ObjectDB::get_instance(script); + if (obj && obj->cast_to<Script>()) { + + props.push_back(PropertyInfo(Variant::NIL,"Script Variables",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_CATEGORY)); + obj->cast_to<Script>()->get_script_property_list(&props); + } + + StringName base=base_type; + while(base) { + props.push_back(PropertyInfo(Variant::NIL,base,PROPERTY_HINT_NONE,"",PROPERTY_USAGE_CATEGORY)); + ObjectTypeDB::get_property_list(base,&props,true); + base=ObjectTypeDB::type_inherits_from(base); + } + + } + + TreeItem *category=NULL; + + bool found=false; + + Ref<Texture> type_icons[Variant::VARIANT_MAX]={ + Control::get_icon("MiniVariant","EditorIcons"), + Control::get_icon("MiniBoolean","EditorIcons"), + Control::get_icon("MiniInteger","EditorIcons"), + Control::get_icon("MiniFloat","EditorIcons"), + Control::get_icon("MiniString","EditorIcons"), + Control::get_icon("MiniVector2","EditorIcons"), + Control::get_icon("MiniRect2","EditorIcons"), + Control::get_icon("MiniVector3","EditorIcons"), + Control::get_icon("MiniMatrix2","EditorIcons"), + Control::get_icon("MiniPlane","EditorIcons"), + Control::get_icon("MiniQuat","EditorIcons"), + Control::get_icon("MiniAabb","EditorIcons"), + Control::get_icon("MiniMatrix3","EditorIcons"), + Control::get_icon("MiniTransform","EditorIcons"), + Control::get_icon("MiniColor","EditorIcons"), + Control::get_icon("MiniImage","EditorIcons"), + Control::get_icon("MiniPath","EditorIcons"), + Control::get_icon("MiniRid","EditorIcons"), + Control::get_icon("MiniObject","EditorIcons"), + Control::get_icon("MiniInput","EditorIcons"), + Control::get_icon("MiniDictionary","EditorIcons"), + Control::get_icon("MiniArray","EditorIcons"), + Control::get_icon("MiniRawArray","EditorIcons"), + Control::get_icon("MiniIntArray","EditorIcons"), + Control::get_icon("MiniFloatArray","EditorIcons"), + Control::get_icon("MiniStringArray","EditorIcons"), + Control::get_icon("MiniVector2Array","EditorIcons"), + Control::get_icon("MiniVector3Array","EditorIcons"), + Control::get_icon("MiniColorArray","EditorIcons") + }; + + + for (List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { + if (E->get().usage==PROPERTY_USAGE_CATEGORY) { + if (category && category->get_children()==NULL) { + memdelete(category); //old category was unused + } + category = search_options->create_item(root); + category->set_text(0,E->get().name); + category->set_selectable(0,false); + + Ref<Texture> icon; + if (E->get().name=="Script Variables") { + icon=get_icon("Script","EditorIcons"); + } else if (has_icon(E->get().name,"EditorIcons")) { + icon=get_icon(E->get().name,"EditorIcons"); + } else { + icon=get_icon("Object","EditorIcons"); + } + category->set_icon(0,icon); + continue; + } + + if (!(E->get().usage&PROPERTY_USAGE_EDITOR)) + continue; + + if (search_box->get_text()!=String() && E->get().name.find(search_box->get_text())==-1) + continue; + TreeItem *item = search_options->create_item(category?category:root); + item->set_text(0,E->get().name); + item->set_metadata(0,E->get().name); + item->set_icon(0,type_icons[E->get().type]); + + if (!found && search_box->get_text()!=String() && E->get().name.find(search_box->get_text())!=-1) { + item->select(0); + found=true; + } + + item->set_selectable(0,true); + } + + if (category && category->get_children()==NULL) { + memdelete(category); //old category was unused + } + } else { + + List<MethodInfo> methods; + + if (type!=Variant::NIL) { + Variant v; + Variant::CallError ce; + v=Variant::construct(type,NULL,0,ce); + v.get_method_list(&methods); + } else { + + + Object *obj = ObjectDB::get_instance(script); + if (obj && obj->cast_to<Script>()) { + + methods.push_back(MethodInfo("*Script Methods")); + obj->cast_to<Script>()->get_script_method_list(&methods); + } + + StringName base=base_type; + while(base) { + methods.push_back(MethodInfo("*"+String(base))); + ObjectTypeDB::get_method_list(base,&methods,true); + base=ObjectTypeDB::type_inherits_from(base); + } + + } + + TreeItem *category=NULL; + + bool found=false; + bool script_methods=false; + + for (List<MethodInfo>::Element *E=methods.front();E;E=E->next()) { + if (E->get().name.begins_with("*")) { + if (category && category->get_children()==NULL) { + memdelete(category); //old category was unused + } + category = search_options->create_item(root); + category->set_text(0,E->get().name.replace_first("*","")); + category->set_selectable(0,false); + + Ref<Texture> icon; + script_methods=false; + if (E->get().name=="*Script Methods") { + icon=get_icon("Script","EditorIcons"); + script_methods=true; + } else if (has_icon(E->get().name,"EditorIcons")) { + icon=get_icon(E->get().name,"EditorIcons"); + } else { + icon=get_icon("Object","EditorIcons"); + } + category->set_icon(0,icon); + + continue; + } + + String name = E->get().name.get_slice(":",0); + if (!script_methods && name.begins_with("_") && !(E->get().flags&METHOD_FLAG_VIRTUAL)) + continue; + + if (search_box->get_text()!=String() && name.find(search_box->get_text())==-1) + continue; + + TreeItem *item = search_options->create_item(category?category:root); + + MethodInfo mi=E->get(); + + String desc; + if (mi.name.find(":")!=-1) { + desc=mi.name.get_slice(":",1)+" "; + mi.name=mi.name.get_slice(":",0); + } else if (mi.return_val.type!=Variant::NIL) + desc=Variant::get_type_name(mi.return_val.type); + else + desc="void "; + + + + desc+=" "+mi.name+" ( "; + + for(int i=0;i<mi.arguments.size();i++) { + + if (i>0) + desc+=", "; + + if (mi.arguments[i].type==Variant::NIL) + desc+="var "; + else if (mi.arguments[i].name.find(":")!=-1) { + desc+=mi.arguments[i].name.get_slice(":",1)+" "; + mi.arguments[i].name=mi.arguments[i].name.get_slice(":",0); + } else + desc+=Variant::get_type_name(mi.arguments[i].type)+" "; + + desc+=mi.arguments[i].name; + + } + + desc+=" )"; + + item->set_text(0,desc); + item->set_metadata(0,name); + item->set_selectable(0,true); + + if (!found && search_box->get_text()!=String() && name.find(search_box->get_text())!=-1) { + item->select(0); + found=true; + } + + } + + if (category && category->get_children()==NULL) { + memdelete(category); //old category was unused + } + + } + + get_ok()->set_disabled(root->get_children()==NULL); + +} + + + +void PropertySelector::_confirmed() { + + TreeItem *ti = search_options->get_selected(); + if (!ti) + return; + emit_signal("selected",ti->get_metadata(0)); + hide(); +} + +void PropertySelector::_item_selected() { + + help_bit->set_text(""); + + TreeItem *item=search_options->get_selected(); + if (!item) + return; + String name = item->get_metadata(0); + + String class_type; + if (properties && type==Variant::INPUT_EVENT) { + + switch(event_type) { + case InputEvent::NONE: class_type="InputEvent"; break; + case InputEvent::KEY: class_type="InputEventKey"; break; + case InputEvent::MOUSE_MOTION: class_type="InputEventMouseMotion"; break; + case InputEvent::MOUSE_BUTTON: class_type="InputEventMouseButton"; break; + case InputEvent::JOYSTICK_MOTION: class_type="InputEventJoystickMotion"; break; + case InputEvent::JOYSTICK_BUTTON: class_type="InputEventJoystickButton"; break; + case InputEvent::SCREEN_TOUCH: class_type="InputEventScreenTouch"; break; + case InputEvent::SCREEN_DRAG: class_type="InputEventScreenDrag"; break; + case InputEvent::ACTION: class_type="InputEventAction"; break; + default: {} + } + + } else if (type) { + class_type=Variant::get_type_name(type); + + } else { + class_type=base_type; + } + + DocData *dd=EditorHelp::get_doc_data(); + String text; + + + if (properties) { + + String at_class=class_type; + + + + while(at_class!=String()) { + + + Map<String,DocData::ClassDoc>::Element *E=dd->class_list.find(at_class); + if (E) { + for(int i=0;i<E->get().properties.size();i++) { + if (E->get().properties[i].name==name) { + text=E->get().properties[i].description; + } + } + } + + at_class=ObjectTypeDB::type_inherits_from(at_class); + } + + if (text==String()) { + + StringName setter; + StringName type; + if (ObjectTypeDB::get_setter_and_type_for_property(class_type,name,type,setter)) { + Map<String,DocData::ClassDoc>::Element *E=dd->class_list.find(type); + if (E) { + for(int i=0;i<E->get().methods.size();i++) { + if (E->get().methods[i].name==setter.operator String()) { + text=E->get().methods[i].description; + } + } + } + + + } + } + + } else { + + + String at_class=class_type; + + while(at_class!=String()) { + + Map<String,DocData::ClassDoc>::Element *E=dd->class_list.find(at_class); + if (E) { + for(int i=0;i<E->get().methods.size();i++) { + if (E->get().methods[i].name==name) { + text=E->get().methods[i].description; + } + } + } + + at_class=ObjectTypeDB::type_inherits_from(at_class); + } + } + + + if (text==String()) + return; + + help_bit->set_text(text); + +} + + +void PropertySelector::_notification(int p_what) { + + if (p_what==NOTIFICATION_ENTER_TREE) { + + connect("confirmed",this,"_confirmed"); + + } +} + + + +void PropertySelector::select_method_from_base_type(const String& p_base,const String& p_current) { + + base_type=p_base; + selected=p_current; + type=Variant::NIL; + script=0; + properties=false; + instance=NULL; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); +} + +void PropertySelector::select_method_from_script(const Ref<Script>& p_script,const String& p_current){ + + ERR_FAIL_COND( p_script.is_null() ); + base_type=p_script->get_instance_base_type(); + selected=p_current; + type=Variant::NIL; + script=p_script->get_instance_ID(); + properties=false; + instance=NULL; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); + +} +void PropertySelector::select_method_from_basic_type(Variant::Type p_type, const String &p_current){ + + ERR_FAIL_COND(p_type==Variant::NIL); + base_type=""; + selected=p_current; + type=p_type; + script=0; + properties=false; + instance=NULL; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); + +} + +void PropertySelector::select_method_from_instance(Object* p_instance, const String &p_current){ + + + base_type=p_instance->get_type(); + selected=p_current; + type=Variant::NIL; + script=0; + { + Ref<Script> scr = p_instance->get_script(); + if (scr.is_valid()) + script=scr->get_instance_ID(); + } + properties=false; + instance=NULL; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); + +} + + +void PropertySelector::select_property_from_base_type(const String& p_base,const String& p_current) { + + base_type=p_base; + selected=p_current; + type=Variant::NIL; + script=0; + properties=true; + instance=NULL; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); +} + +void PropertySelector::select_property_from_script(const Ref<Script>& p_script,const String& p_current){ + + ERR_FAIL_COND( p_script.is_null() ); + + base_type=p_script->get_instance_base_type(); + selected=p_current; + type=Variant::NIL; + script=p_script->get_instance_ID(); + properties=true; + instance=NULL; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); + +} +void PropertySelector::select_property_from_basic_type(Variant::Type p_type, InputEvent::Type p_event_type, const String &p_current){ + + ERR_FAIL_COND(p_type==Variant::NIL); + base_type=""; + selected=p_current; + type=p_type; + event_type=p_event_type; + script=0; + properties=true; + instance=NULL; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); + +} + +void PropertySelector::select_property_from_instance(Object* p_instance, const String &p_current){ + + + base_type=""; + selected=p_current; + type=Variant::NIL; + script=0; + properties=true; + instance=p_instance; + + popup_centered_ratio(0.6); + search_box->set_text(""); + search_box->grab_focus(); + _update_search(); + +} + +void PropertySelector::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("_text_changed"),&PropertySelector::_text_changed); + ObjectTypeDB::bind_method(_MD("_confirmed"),&PropertySelector::_confirmed); + ObjectTypeDB::bind_method(_MD("_sbox_input"),&PropertySelector::_sbox_input); + ObjectTypeDB::bind_method(_MD("_item_selected"),&PropertySelector::_item_selected); + + ADD_SIGNAL(MethodInfo("selected",PropertyInfo(Variant::STRING,"name"))); + +} + + +PropertySelector::PropertySelector() { + + + VBoxContainer *vbc = memnew( VBoxContainer ); + add_child(vbc); + set_child_rect(vbc); + search_box = memnew( LineEdit ); + vbc->add_margin_child(TTR("Search:"),search_box); + search_box->connect("text_changed",this,"_text_changed"); + search_box->connect("input_event",this,"_sbox_input"); + search_options = memnew( Tree ); + vbc->add_margin_child(TTR("Matches:"),search_options,true); + get_ok()->set_text(TTR("Open")); + get_ok()->set_disabled(true); + register_text_enter(search_box); + set_hide_on_ok(false); + search_options->connect("item_activated",this,"_confirmed"); + search_options->connect("cell_selected",this,"_item_selected"); + search_options->set_hide_root(true); + search_options->set_hide_folding(true); + + help_bit = memnew( EditorHelpBit ); + vbc->add_margin_child(TTR("Description:"),help_bit); + help_bit->connect("request_hide",this,"_closed"); + + +} diff --git a/tools/editor/property_selector.h b/tools/editor/property_selector.h new file mode 100644 index 0000000000..f7f0e7e167 --- /dev/null +++ b/tools/editor/property_selector.h @@ -0,0 +1,55 @@ +#ifndef PROPERTYSELECTOR_H +#define PROPERTYSELECTOR_H + +#include "tools/editor/property_editor.h" +#include "scene/gui/rich_text_label.h" +#include "editor_help.h" + +class PropertySelector : public ConfirmationDialog { + OBJ_TYPE(PropertySelector,ConfirmationDialog ) + + + LineEdit *search_box; + Tree *search_options; + + void _update_search(); + + void _sbox_input(const InputEvent& p_ie); + + void _confirmed(); + void _text_changed(const String& p_newtext); + + EditorHelpBit *help_bit; + + bool properties; + String selected; + Variant::Type type; + InputEvent::Type event_type; + String base_type; + ObjectID script; + Object *instance; + + void _item_selected(); +protected: + void _notification(int p_what); + static void _bind_methods(); + + + +public: + + + void select_method_from_base_type(const String& p_base,const String& p_current=""); + void select_method_from_script(const Ref<Script>& p_script,const String& p_current=""); + void select_method_from_basic_type(Variant::Type p_type,const String& p_current=""); + void select_method_from_instance(Object* p_instance, const String &p_current=""); + + void select_property_from_base_type(const String& p_base,const String& p_current=""); + void select_property_from_script(const Ref<Script>& p_script,const String& p_current=""); + void select_property_from_basic_type(Variant::Type p_type,InputEvent::Type p_event_type,const String& p_current=""); + void select_property_from_instance(Object* p_instance, const String &p_current=""); + + PropertySelector(); +}; + +#endif // PROPERTYSELECTOR_H diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index 94587456f1..506dfd3889 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -33,6 +33,7 @@ #include "scene/resources/packed_scene.h" #include "editor_settings.h" #include "tools/editor/plugins/canvas_item_editor_plugin.h" +#include "tools/editor/plugins/spatial_editor_plugin.h" #include "script_editor_debugger.h" #include "tools/editor/plugins/script_editor_plugin.h" #include "core/io/resource_saver.h" @@ -1825,6 +1826,21 @@ void SceneTreeDock::set_filter(const String& p_filter){ scene_tree->set_filter(p_filter); } + +void SceneTreeDock::_focus_node() { + + Node *node = scene_tree->get_selected(); + ERR_FAIL_COND(!node); + + if (node->is_type("CanvasItem")) { + CanvasItemEditorPlugin *editor = editor_data->get_editor("2D")->cast_to<CanvasItemEditorPlugin>(); + editor->get_canvas_item_editor()->focus_selection(); + } else { + SpatialEditorPlugin *editor = editor_data->get_editor("3D")->cast_to<SpatialEditorPlugin>(); + editor->get_spatial_editor()->get_editor_viewport(0)->focus_selection(); + } +} + void SceneTreeDock::_bind_methods() { ObjectTypeDB::bind_method(_MD("_tool_selected"),&SceneTreeDock::_tool_selected,DEFVAL(false)); @@ -1849,6 +1865,7 @@ void SceneTreeDock::_bind_methods() { ObjectTypeDB::bind_method(_MD("_files_dropped"),&SceneTreeDock::_files_dropped); ObjectTypeDB::bind_method(_MD("_tree_rmb"),&SceneTreeDock::_tree_rmb); ObjectTypeDB::bind_method(_MD("_filter_changed"),&SceneTreeDock::_filter_changed); + ObjectTypeDB::bind_method(_MD("_focus_node"),&SceneTreeDock::_focus_node); ObjectTypeDB::bind_method(_MD("instance"),&SceneTreeDock::instance); @@ -1930,6 +1947,9 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor,Node *p_scene_root,EditorSelec scene_tree->connect("files_dropped",this,"_files_dropped"); scene_tree->connect("nodes_dragged",this,"_nodes_drag_begin"); + scene_tree->get_scene_tree()->connect("item_double_clicked", this, "_focus_node"); + scene_tree->get_scene_tree()->set_delayed_text_editor(true); + scene_tree->set_undo_redo(&editor_data->get_undo_redo()); scene_tree->set_editor_selection(editor_selection); diff --git a/tools/editor/scene_tree_dock.h b/tools/editor/scene_tree_dock.h index af612cbc77..d92f12c34b 100644 --- a/tools/editor/scene_tree_dock.h +++ b/tools/editor/scene_tree_dock.h @@ -163,6 +163,8 @@ public: String get_filter(); void set_filter(const String& p_filter); + void _focus_node(); + void import_subscene(); void set_edited_scene(Node* p_scene); void instance(const String& p_path); diff --git a/tools/editor/script_editor_debugger.cpp b/tools/editor/script_editor_debugger.cpp index da42f54095..7fba73ca08 100644 --- a/tools/editor/script_editor_debugger.cpp +++ b/tools/editor/script_editor_debugger.cpp @@ -1087,6 +1087,9 @@ void ScriptEditorDebugger::start() { stop(); + if (!EditorNode::get_log()->is_visible()) { + EditorNode::get_singleton()->make_bottom_panel_item_visible(EditorNode::get_log()); + } uint16_t port = GLOBAL_DEF("debug/remote_port",6007); perf_history.clear(); diff --git a/tools/ios_xcode_template/data.pck b/tools/ios_xcode_template/data.pck deleted file mode 100644 index e69de29bb2..0000000000 --- a/tools/ios_xcode_template/data.pck +++ /dev/null diff --git a/tools/ios_xcode_template/godot_ios.xcodeproj/project.pbxproj b/tools/ios_xcode_template/godot_ios.xcodeproj/project.pbxproj deleted file mode 100644 index 4ae1ec8a53..0000000000 --- a/tools/ios_xcode_template/godot_ios.xcodeproj/project.pbxproj +++ /dev/null @@ -1,469 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */; }; - D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */; }; - D0BCFE3C18AEBDA2004A7AAE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */; }; - D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */; }; - D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */; }; - D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */; }; - D0BCFE6218AEBDA3004A7AAE /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */; }; - D0BCFE6318AEBDA3004A7AAE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */; }; - D0BCFE6418AEBDA3004A7AAE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */; }; - D0BCFE6C18AEBDA3004A7AAE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE6A18AEBDA3004A7AAE /* InfoPlist.strings */; }; - D0BCFE6E18AEBDA3004A7AAE /* godot_iosTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D0BCFE6D18AEBDA3004A7AAE /* godot_iosTests.m */; }; - D0BCFE7818AEBFEB004A7AAE /* data.pck in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7718AEBFEB004A7AAE /* data.pck */; }; - D0BCFE7A18AEC06A004A7AAE /* godot_opt.iphone in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - D0BCFE6518AEBDA3004A7AAE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D0BCFE2C18AEBDA2004A7AAE /* Project object */; - proxyType = 1; - remoteGlobalIDString = D0BCFE3318AEBDA2004A7AAE; - remoteInfo = godot_ios; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = godot_ios.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; - D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; - D0BCFE4318AEBDA2004A7AAE /* godot_ios-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "godot_ios-Info.plist"; sourceTree = "<group>"; }; - D0BCFE4518AEBDA2004A7AAE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - D0BCFE4918AEBDA2004A7AAE /* godot_ios-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "godot_ios-Prefix.pch"; sourceTree = "<group>"; }; - D0BCFE6018AEBDA3004A7AAE /* godot_iosTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = godot_iosTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - D0BCFE6918AEBDA3004A7AAE /* godot_iosTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "godot_iosTests-Info.plist"; sourceTree = "<group>"; }; - D0BCFE6B18AEBDA3004A7AAE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - D0BCFE6D18AEBDA3004A7AAE /* godot_iosTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = godot_iosTests.m; sourceTree = "<group>"; }; - D0BCFE7718AEBFEB004A7AAE /* data.pck */ = {isa = PBXFileReference; lastKnownFileType = file; path = data.pck; sourceTree = "<group>"; }; - D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = godot_opt.iphone; sourceTree = "<group>"; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - D0BCFE3118AEBDA2004A7AAE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */, - D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */, - D0BCFE3C18AEBDA2004A7AAE /* UIKit.framework in Frameworks */, - D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */, - D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D0BCFE5D18AEBDA3004A7AAE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D0BCFE6218AEBDA3004A7AAE /* XCTest.framework in Frameworks */, - D0BCFE6418AEBDA3004A7AAE /* UIKit.framework in Frameworks */, - D0BCFE6318AEBDA3004A7AAE /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - D0BCFE2B18AEBDA2004A7AAE = { - isa = PBXGroup; - children = ( - D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */, - D0BCFE7718AEBFEB004A7AAE /* data.pck */, - D0BCFE4118AEBDA2004A7AAE /* godot_ios */, - D0BCFE6718AEBDA3004A7AAE /* godot_iosTests */, - D0BCFE3618AEBDA2004A7AAE /* Frameworks */, - D0BCFE3518AEBDA2004A7AAE /* Products */, - ); - sourceTree = "<group>"; - }; - D0BCFE3518AEBDA2004A7AAE /* Products */ = { - isa = PBXGroup; - children = ( - D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */, - D0BCFE6018AEBDA3004A7AAE /* godot_iosTests.xctest */, - ); - name = Products; - sourceTree = "<group>"; - }; - D0BCFE3618AEBDA2004A7AAE /* Frameworks */ = { - isa = PBXGroup; - children = ( - D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */, - D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */, - D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */, - D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */, - D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */, - D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */, - ); - name = Frameworks; - sourceTree = "<group>"; - }; - D0BCFE4118AEBDA2004A7AAE /* godot_ios */ = { - isa = PBXGroup; - children = ( - D0BCFE4218AEBDA2004A7AAE /* Supporting Files */, - ); - path = godot_ios; - sourceTree = "<group>"; - }; - D0BCFE4218AEBDA2004A7AAE /* Supporting Files */ = { - isa = PBXGroup; - children = ( - D0BCFE4318AEBDA2004A7AAE /* godot_ios-Info.plist */, - D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */, - D0BCFE4918AEBDA2004A7AAE /* godot_ios-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = "<group>"; - }; - D0BCFE6718AEBDA3004A7AAE /* godot_iosTests */ = { - isa = PBXGroup; - children = ( - D0BCFE6D18AEBDA3004A7AAE /* godot_iosTests.m */, - D0BCFE6818AEBDA3004A7AAE /* Supporting Files */, - ); - path = godot_iosTests; - sourceTree = "<group>"; - }; - D0BCFE6818AEBDA3004A7AAE /* Supporting Files */ = { - isa = PBXGroup; - children = ( - D0BCFE6918AEBDA3004A7AAE /* godot_iosTests-Info.plist */, - D0BCFE6A18AEBDA3004A7AAE /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = "<group>"; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - D0BCFE3318AEBDA2004A7AAE /* godot_ios */ = { - isa = PBXNativeTarget; - buildConfigurationList = D0BCFE7118AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_ios" */; - buildPhases = ( - D0BCFE3018AEBDA2004A7AAE /* Sources */, - D0BCFE3118AEBDA2004A7AAE /* Frameworks */, - D0BCFE3218AEBDA2004A7AAE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = godot_ios; - productName = godot_ios; - productReference = D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */; - productType = "com.apple.product-type.application"; - }; - D0BCFE5F18AEBDA3004A7AAE /* godot_iosTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D0BCFE7418AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_iosTests" */; - buildPhases = ( - D0BCFE5C18AEBDA3004A7AAE /* Sources */, - D0BCFE5D18AEBDA3004A7AAE /* Frameworks */, - D0BCFE5E18AEBDA3004A7AAE /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - D0BCFE6618AEBDA3004A7AAE /* PBXTargetDependency */, - ); - name = godot_iosTests; - productName = godot_iosTests; - productReference = D0BCFE6018AEBDA3004A7AAE /* godot_iosTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D0BCFE2C18AEBDA2004A7AAE /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0500; - ORGANIZATIONNAME = GodotEngine; - TargetAttributes = { - D0BCFE5F18AEBDA3004A7AAE = { - TestTargetID = D0BCFE3318AEBDA2004A7AAE; - }; - }; - }; - buildConfigurationList = D0BCFE2F18AEBDA2004A7AAE /* Build configuration list for PBXProject "godot_ios" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = D0BCFE2B18AEBDA2004A7AAE; - productRefGroup = D0BCFE3518AEBDA2004A7AAE /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D0BCFE3318AEBDA2004A7AAE /* godot_ios */, - D0BCFE5F18AEBDA3004A7AAE /* godot_iosTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - D0BCFE3218AEBDA2004A7AAE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D0BCFE7818AEBFEB004A7AAE /* data.pck in Resources */, - D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */, - D0BCFE7A18AEC06A004A7AAE /* godot_opt.iphone in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D0BCFE5E18AEBDA3004A7AAE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D0BCFE6C18AEBDA3004A7AAE /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - D0BCFE3018AEBDA2004A7AAE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D0BCFE5C18AEBDA3004A7AAE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D0BCFE6E18AEBDA3004A7AAE /* godot_iosTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - D0BCFE6618AEBDA3004A7AAE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D0BCFE3318AEBDA2004A7AAE /* godot_ios */; - targetProxy = D0BCFE6518AEBDA3004A7AAE /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - D0BCFE4518AEBDA2004A7AAE /* en */, - ); - name = InfoPlist.strings; - sourceTree = "<group>"; - }; - D0BCFE6A18AEBDA3004A7AAE /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - D0BCFE6B18AEBDA3004A7AAE /* en */, - ); - name = InfoPlist.strings; - sourceTree = "<group>"; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - D0BCFE6F18AEBDA3004A7AAE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - D0BCFE7018AEBDA3004A7AAE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - D0BCFE7218AEBDA3004A7AAE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch"; - INFOPLIST_FILE = "godot_ios/godot_ios-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "armv7 armv7s"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - D0BCFE7318AEBDA3004A7AAE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch"; - INFOPLIST_FILE = "godot_ios/godot_ios-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "armv7 armv7s"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - D0BCFE7518AEBDA3004A7AAE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/godot_ios.app/godot_ios"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "godot_iosTests/godot_iosTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - name = Debug; - }; - D0BCFE7618AEBDA3004A7AAE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/godot_ios.app/godot_ios"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch"; - INFOPLIST_FILE = "godot_iosTests/godot_iosTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - D0BCFE2F18AEBDA2004A7AAE /* Build configuration list for PBXProject "godot_ios" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D0BCFE6F18AEBDA3004A7AAE /* Debug */, - D0BCFE7018AEBDA3004A7AAE /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D0BCFE7118AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_ios" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D0BCFE7218AEBDA3004A7AAE /* Debug */, - D0BCFE7318AEBDA3004A7AAE /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; - D0BCFE7418AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_iosTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D0BCFE7518AEBDA3004A7AAE /* Debug */, - D0BCFE7618AEBDA3004A7AAE /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; -/* End XCConfigurationList section */ - }; - rootObject = D0BCFE2C18AEBDA2004A7AAE /* Project object */; -} diff --git a/tools/ios_xcode_template/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/tools/ios_xcode_template/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3c9ba38bbe..0000000000 --- a/tools/ios_xcode_template/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Workspace - version = "1.0"> - <FileRef - location = "self:godot_ios.xcodeproj"> - </FileRef> -</Workspace> diff --git a/tools/ios_xcode_template/godot_ios.xcodeproj/project.xcworkspace/xcuserdata/punto.xcuserdatad/UserInterfaceState.xcuserstate b/tools/ios_xcode_template/godot_ios.xcodeproj/project.xcworkspace/xcuserdata/punto.xcuserdatad/UserInterfaceState.xcuserstate Binary files differdeleted file mode 100644 index 7c338929ed..0000000000 --- a/tools/ios_xcode_template/godot_ios.xcodeproj/project.xcworkspace/xcuserdata/punto.xcuserdatad/UserInterfaceState.xcuserstate +++ /dev/null diff --git a/tools/ios_xcode_template/godot_ios.xcodeproj/xcuserdata/punto.xcuserdatad/xcschemes/godot_ios.xcscheme b/tools/ios_xcode_template/godot_ios.xcodeproj/xcuserdata/punto.xcuserdatad/xcschemes/godot_ios.xcscheme deleted file mode 100644 index 19af55b4a2..0000000000 --- a/tools/ios_xcode_template/godot_ios.xcodeproj/xcuserdata/punto.xcuserdatad/xcschemes/godot_ios.xcscheme +++ /dev/null @@ -1,96 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "0500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE" - BuildableName = "godot_ios.app" - BlueprintName = "godot_ios" - ReferencedContainer = "container:godot_ios.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - buildConfiguration = "Debug"> - <Testables> - <TestableReference - skipped = "NO"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "D0BCFE5F18AEBDA3004A7AAE" - BuildableName = "godot_iosTests.xctest" - BlueprintName = "godot_iosTests" - ReferencedContainer = "container:godot_ios.xcodeproj"> - </BuildableReference> - </TestableReference> - </Testables> - <MacroExpansion> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE" - BuildableName = "godot_ios.app" - BlueprintName = "godot_ios" - ReferencedContainer = "container:godot_ios.xcodeproj"> - </BuildableReference> - </MacroExpansion> - </TestAction> - <LaunchAction - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Debug" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - allowLocationSimulation = "YES"> - <BuildableProductRunnable> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE" - BuildableName = "godot_ios.app" - BlueprintName = "godot_ios" - ReferencedContainer = "container:godot_ios.xcodeproj"> - </BuildableReference> - </BuildableProductRunnable> - <AdditionalOptions> - </AdditionalOptions> - </LaunchAction> - <ProfileAction - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - buildConfiguration = "Release" - debugDocumentVersioning = "YES"> - <BuildableProductRunnable> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE" - BuildableName = "godot_ios.app" - BlueprintName = "godot_ios" - ReferencedContainer = "container:godot_ios.xcodeproj"> - </BuildableReference> - </BuildableProductRunnable> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/tools/ios_xcode_template/godot_ios.xcodeproj/xcuserdata/punto.xcuserdatad/xcschemes/xcschememanagement.plist b/tools/ios_xcode_template/godot_ios.xcodeproj/xcuserdata/punto.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 4a3a16cbdb..0000000000 --- a/tools/ios_xcode_template/godot_ios.xcodeproj/xcuserdata/punto.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>SchemeUserState</key> - <dict> - <key>godot_ios.xcscheme</key> - <dict> - <key>orderHint</key> - <integer>0</integer> - </dict> - </dict> - <key>SuppressBuildableAutocreation</key> - <dict> - <key>D0BCFE3318AEBDA2004A7AAE</key> - <dict> - <key>primary</key> - <true/> - </dict> - <key>D0BCFE5F18AEBDA3004A7AAE</key> - <dict> - <key>primary</key> - <true/> - </dict> - </dict> -</dict> -</plist> diff --git a/tools/ios_xcode_template/godot_ios/en.lproj/InfoPlist.strings b/tools/ios_xcode_template/godot_ios/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff8f..0000000000 --- a/tools/ios_xcode_template/godot_ios/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/tools/ios_xcode_template/godot_ios/godot_ios-Info.plist b/tools/ios_xcode_template/godot_ios/godot_ios-Info.plist deleted file mode 100644 index 357970920a..0000000000 --- a/tools/ios_xcode_template/godot_ios/godot_ios-Info.plist +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleDisplayName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundleExecutable</key> - <string>godot_opt.iphone</string> - <key>CFBundleIdentifier</key> - <string>org.godotengine.${PRODUCT_NAME:rfc1034identifier}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1.0</string> - <key>LSRequiresIPhoneOS</key> - <true/> - <key>UIRequiredDeviceCapabilities</key> - <array> - <string>armv7</string> - </array> - <key>UIStatusBarHidden</key> - <true/> - <key>UISupportedInterfaceOrientations</key> - <array> - <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationLandscapeLeft</string> - <string>UIInterfaceOrientationLandscapeRight</string> - </array> - <key>UISupportedInterfaceOrientations~ipad</key> - <array> - <string>UIInterfaceOrientationPortrait</string> - <string>UIInterfaceOrientationPortraitUpsideDown</string> - <string>UIInterfaceOrientationLandscapeLeft</string> - <string>UIInterfaceOrientationLandscapeRight</string> - </array> -</dict> -</plist> diff --git a/tools/ios_xcode_template/godot_ios/godot_ios-Prefix.pch b/tools/ios_xcode_template/godot_ios/godot_ios-Prefix.pch deleted file mode 100644 index 82a2bb4507..0000000000 --- a/tools/ios_xcode_template/godot_ios/godot_ios-Prefix.pch +++ /dev/null @@ -1,16 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - -#import <Availability.h> - -#ifndef __IPHONE_5_0 -#warning "This project uses features only available in iOS SDK 5.0 and later." -#endif - -#ifdef __OBJC__ - #import <UIKit/UIKit.h> - #import <Foundation/Foundation.h> -#endif diff --git a/tools/ios_xcode_template/godot_iosTests/en.lproj/InfoPlist.strings b/tools/ios_xcode_template/godot_iosTests/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff8f..0000000000 --- a/tools/ios_xcode_template/godot_iosTests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/tools/ios_xcode_template/godot_iosTests/godot_iosTests-Info.plist b/tools/ios_xcode_template/godot_iosTests/godot_iosTests-Info.plist deleted file mode 100644 index 0f69aa80eb..0000000000 --- a/tools/ios_xcode_template/godot_iosTests/godot_iosTests-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>org.godotengine.${PRODUCT_NAME:rfc1034identifier}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>BNDL</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1</string> -</dict> -</plist> diff --git a/tools/ios_xcode_template/godot_iosTests/godot_iosTests.m b/tools/ios_xcode_template/godot_iosTests/godot_iosTests.m deleted file mode 100644 index d9fac0a250..0000000000 --- a/tools/ios_xcode_template/godot_iosTests/godot_iosTests.m +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************************************/ -/* godot_iosTests.m */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#import <XCTest/XCTest.h> - -@interface godot_iosTests : XCTestCase - -@end - -@implementation godot_iosTests - -- (void)setUp -{ - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. -} - -- (void)tearDown -{ - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void)testExample -{ - XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); -} - -@end diff --git a/tools/script_plugins/terrain/plugin.cfg b/tools/script_plugins/terrain/plugin.cfg deleted file mode 100644 index d2f2917420..0000000000 --- a/tools/script_plugins/terrain/plugin.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[plugin] - -name="Terrain" -description="Simple plugin for generating and editing grid-based terrains. This type of terrains were all the rage in the early 2000's, but lost popularity to hand crafted geometry towards the end of the decade." -author="Juan Linietsky" -version="1.0" -installs=true -script="terrain.gd" -install_files=["terrain.gd","terrain_node.gd","icon_terrain.png"] - - - - - - - diff --git a/tools/script_plugins/terrain/terrain.gd b/tools/script_plugins/terrain/terrain.gd deleted file mode 100644 index b3e3121e7a..0000000000 --- a/tools/script_plugins/terrain/terrain.gd +++ /dev/null @@ -1,17 +0,0 @@ -tool # Always declare as Tool, if it's meant to run in the editor. -extends EditorPlugin - - -func get_name(): - return "Terrain" - - -func _init(): - print("PLUGIN INIT") - - -func _enter_scene(): - add_custom_type("Terrain","Spatial",preload("terrain_node.gd"),preload("terrain.png")) - -func _exit_scene(): - remove_custom_type("Terrain") diff --git a/tools/script_plugins/terrain/terrain.png b/tools/script_plugins/terrain/terrain.png Binary files differdeleted file mode 100644 index 7c1c3d70d6..0000000000 --- a/tools/script_plugins/terrain/terrain.png +++ /dev/null diff --git a/tools/script_plugins/terrain/terrain_node.gd b/tools/script_plugins/terrain/terrain_node.gd deleted file mode 100644 index 91cf3fcb2b..0000000000 --- a/tools/script_plugins/terrain/terrain_node.gd +++ /dev/null @@ -1,3 +0,0 @@ -extends Spatial - - diff --git a/tools/script_plugins/time/plugin.cfg b/tools/script_plugins/time/plugin.cfg deleted file mode 100644 index 5430306a79..0000000000 --- a/tools/script_plugins/time/plugin.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[plugin] - -name="The Time" -description="This plugin displays the current local time, with great accuracy, by harvesting the power of quartz crystals inside your computer.\nIt may also serve as simple example on how to write a non-installable editor plugin, or just remind you that it's time to go back home." -author="Juan Linietsky" -version="1.0" -installs=false -script="time.gd" - - - - - - diff --git a/tools/script_plugins/time/time.gd b/tools/script_plugins/time/time.gd deleted file mode 100644 index 2e56d89d4f..0000000000 --- a/tools/script_plugins/time/time.gd +++ /dev/null @@ -1,32 +0,0 @@ -tool # Always declare as Tool, if it's meant to run in the editor. -extends EditorPlugin - -var timer = null -var label = null - -func _timeout(): - if (label): - var time = OS.get_time() - label.set_text(str(time.hour).pad_zeros(2)+":"+str(time.minute).pad_zeros(2)+":"+str(time.second).pad_zeros(2)) - -func get_name(): - return "The Time" - - -func _init(): - print("PLUGIN INIT") - timer = Timer.new() - add_child(timer) - timer.set_wait_time(0.5) - timer.set_one_shot(false) - timer.connect("timeout",self,"_timeout") - -func _enter_tree(): - label = Label.new() - add_custom_control(CONTAINER_TOOLBAR,label) - timer.start() - -func _exit_tree(): - timer.stop() - label.free() - label=null diff --git a/tools/addheader/addheader.py b/tools/scripts/addheader.py index d040d8b5d6..d040d8b5d6 100644 --- a/tools/addheader/addheader.py +++ b/tools/scripts/addheader.py diff --git a/tools/bmfhdr/makehdr.py b/tools/scripts/make_bmfhdr.py index 0f6f453004..0f6f453004 100644 --- a/tools/bmfhdr/makehdr.py +++ b/tools/scripts/make_bmfhdr.py diff --git a/tools/glwrapper/makewrapper.py b/tools/scripts/make_glwrapper.py index 2e5f06be12..f3f8d39837 100644 --- a/tools/glwrapper/makewrapper.py +++ b/tools/scripts/make_glwrapper.py @@ -2,7 +2,7 @@ import sys if (len(sys.argv)<2): - print("usage: makewrapper.py <headers>") + print("usage: make_glwrapper.py <headers>") sys.exit(255) diff --git a/tools/steam/make_icons.sh b/tools/scripts/make_icons.sh index 71037cd1c3..71037cd1c3 100644 --- a/tools/steam/make_icons.sh +++ b/tools/scripts/make_icons.sh diff --git a/tools/memsort.py b/tools/scripts/memsort.py index d2e4fe0226..d2e4fe0226 100644 --- a/tools/memsort.py +++ b/tools/scripts/memsort.py diff --git a/tools/translations/ar.po b/tools/translations/ar.po index 8bb1201f72..74393ad4f4 100644 --- a/tools/translations/ar.po +++ b/tools/translations/ar.po @@ -160,11 +160,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -172,6 +196,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -231,7 +259,19 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp @@ -279,12 +319,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -488,7 +522,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1024,7 +1059,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1273,10 +1309,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1592,10 +1634,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5956,6 +5994,14 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/bg.po b/tools/translations/bg.po index 41002cf7ad..9117731250 100644 --- a/tools/translations/bg.po +++ b/tools/translations/bg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-08-10 14:02+0000\n" +"PO-Revision-Date: 2016-08-20 16:42+0000\n" "Last-Translator: Иван Пенев (Адмирал АнимЕ) <aeternus.arcis@gmail.com>\n" "Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/" "godot/bg/>\n" @@ -169,11 +169,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -181,6 +205,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -240,9 +268,23 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Възел" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Поставяне" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -288,12 +330,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -396,7 +432,8 @@ msgstr "ParallaxLayer работи само когато е наследник #: scene/2d/particles_2d.cpp msgid "Path property must point to a valid Particles2D node to work." msgstr "" -"Параметъра 'Path' трябва да сочи към работещ Particles2D нод за да работи." +"Параметърът 'Path' трябва да сочи към действителен възел Particles2D, за да " +"работи." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -404,7 +441,9 @@ msgstr "PathFollow2D работи само когато е наследник н #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." -msgstr "Параметъра 'Path' трябва да сочи към Node2D нод за да работи." +msgstr "" +"Параметърът 'Path' трябва да сочи към действителен възел Node2D, за да " +"работи." #: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp msgid "" @@ -520,7 +559,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1056,7 +1096,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1305,10 +1346,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1379,7 +1426,7 @@ msgstr "" #: tools/editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "" +msgstr "Сцената не успя да се зареди заради липсващи зависимости:" #: tools/editor/dependency_editor.cpp msgid "Open Anyway" @@ -1510,7 +1557,7 @@ msgstr "" #: tools/editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "Обновяване на сцената" #: tools/editor/editor_data.cpp msgid "Storing local changes.." @@ -1518,7 +1565,7 @@ msgstr "" #: tools/editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "Обновяване на сцената.." #: tools/editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1570,7 +1617,7 @@ msgstr "" #: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp msgid "Favorites:" -msgstr "" +msgstr "Любими:" #: tools/editor/editor_file_dialog.cpp msgid "Recent:" @@ -1625,10 +1672,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -1663,7 +1706,7 @@ msgstr "" #: tools/editor/editor_import_export.cpp msgid "Exporting for %s" -msgstr "" +msgstr "Изнасяне за %s" #: tools/editor/editor_import_export.cpp msgid "Setting Up.." @@ -1675,11 +1718,11 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" -msgstr "" +msgstr "Извършва се повторно внасяне" #: tools/editor/editor_node.cpp msgid "Importing:" -msgstr "" +msgstr "Внасяне:" #: tools/editor/editor_node.cpp msgid "Node From Scene" @@ -1715,7 +1758,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "Запазване на сцената" #: tools/editor/editor_node.cpp msgid "Analyzing" @@ -1838,7 +1881,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "Отваряне на сцена" #: tools/editor/editor_node.cpp msgid "Open Base Scene" @@ -1846,7 +1889,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "" +msgstr "Бързо отваряне на сцена.." #: tools/editor/editor_node.cpp msgid "Quick Open Script.." @@ -1858,11 +1901,11 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Close scene? (Unsaved changes will be lost)" -msgstr "" +msgstr "Да се затвори ли сцената? (незаразените промени ще се загубят)" #: tools/editor/editor_node.cpp msgid "Save Scene As.." -msgstr "" +msgstr "Запазване на сцената като.." #: tools/editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" @@ -1870,7 +1913,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Please save the scene first." -msgstr "" +msgstr "Моля, първо запазете сцената." #: tools/editor/editor_node.cpp msgid "Save Translatable Strings" @@ -1886,7 +1929,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "Изход" #: tools/editor/editor_node.cpp msgid "Exit the editor?" @@ -1910,7 +1953,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "" +msgstr "Бързо пускане на сцена.." #: tools/editor/editor_node.cpp msgid "" @@ -1920,7 +1963,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Pick a Main Scene" -msgstr "" +msgstr "Изберете главна сцена" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" @@ -1934,11 +1977,11 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Error loading scene." -msgstr "" +msgstr "Имаше грешка при зареждане на сцената." #: tools/editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "" +msgstr "Сцената '%s' има нарушени зависимости:" #: tools/editor/editor_node.cpp msgid "Save Layout" @@ -1967,7 +2010,7 @@ msgstr "" #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Scene" -msgstr "" +msgstr "Сцена" #: tools/editor/editor_node.cpp msgid "Go to previously opened scene." @@ -1995,7 +2038,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "Нова сцена" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." @@ -2003,19 +2046,19 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "" +msgstr "Отваряне на сцена.." #: tools/editor/editor_node.cpp msgid "Save Scene" -msgstr "" +msgstr "Запазване на сцената" #: tools/editor/editor_node.cpp msgid "Save all Scenes" -msgstr "" +msgstr "Запазване на всички сцени" #: tools/editor/editor_node.cpp msgid "Close Scene" -msgstr "" +msgstr "Затваряне на сцената" #: tools/editor/editor_node.cpp msgid "Close Goto Prev. Scene" @@ -2056,7 +2099,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Project Settings" -msgstr "" +msgstr "Настройки на проекта" #: tools/editor/editor_node.cpp msgid "Revert Scene" @@ -2064,11 +2107,11 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quit to Project List" -msgstr "" +msgstr "Изход до списъка с проекти" #: tools/editor/editor_node.cpp msgid "Import assets to the project." -msgstr "" +msgstr "Внасяне на обекти в проекта." #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp @@ -2080,7 +2123,7 @@ msgstr "" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp #: tools/editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "Внасяне" #: tools/editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." @@ -2092,15 +2135,15 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Export the project to many platforms." -msgstr "" +msgstr "Изнасяне на проекта на много платформи." #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export" -msgstr "" +msgstr "Изнасяне" #: tools/editor/editor_node.cpp msgid "Play the project." -msgstr "" +msgstr "Възпроизвеждане на проекта." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -2109,15 +2152,15 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Pause the scene" -msgstr "" +msgstr "Преустановяване на сцената" #: tools/editor/editor_node.cpp msgid "Pause Scene" -msgstr "" +msgstr "Преустановяване на сцената" #: tools/editor/editor_node.cpp msgid "Stop the scene." -msgstr "" +msgstr "Спиране на сцената." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -2126,23 +2169,23 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Play the edited scene." -msgstr "" +msgstr "Възпроизвеждане на редактирана сцена." #: tools/editor/editor_node.cpp msgid "Play Scene" -msgstr "" +msgstr "Възпроизвеждане на сцената" #: tools/editor/editor_node.cpp msgid "Play custom scene" -msgstr "" +msgstr "Възпроизвеждане на сцена по избор" #: tools/editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "" +msgstr "Възпроизвеждане на сцена по избор" #: tools/editor/editor_node.cpp msgid "Debug options" -msgstr "" +msgstr "Настройки за отстраняване на грешки" #: tools/editor/editor_node.cpp msgid "Deploy with Remote Debug" @@ -2214,11 +2257,11 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" -msgstr "" +msgstr "Настройки" #: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "" +msgstr "Настройки на редактора" #: tools/editor/editor_node.cpp msgid "Editor Layout" @@ -2230,7 +2273,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "Относно" #: tools/editor/editor_node.cpp msgid "Alerts when an external resource has changed." @@ -2294,7 +2337,7 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Import" -msgstr "" +msgstr "Повторно внасяне" #: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp msgid "Update" @@ -2310,15 +2353,15 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "" +msgstr "Внасяне на шаблони от архив във формат ZIP" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export Project" -msgstr "" +msgstr "Изнасяне на проекта" #: tools/editor/editor_node.cpp msgid "Export Library" -msgstr "" +msgstr "Изнасяне на библиотеката" #: tools/editor/editor_node.cpp msgid "Merge With Existing" @@ -2403,10 +2446,11 @@ msgstr "" #: tools/editor/editor_reimport_dialog.cpp msgid "Current scene must be saved to re-import." msgstr "" +"За да се извърши повторното внасяне, текущата сцена трябва да бъде запазена." #: tools/editor/editor_reimport_dialog.cpp msgid "Save & Re-Import" -msgstr "" +msgstr "Запазване и повторно внасяне" #: tools/editor/editor_reimport_dialog.cpp msgid "Re-Import Changed Resources" @@ -2446,7 +2490,7 @@ msgstr "" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "" +msgstr "Път на сцената:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" @@ -2514,7 +2558,7 @@ msgstr "" #: tools/editor/filesystem_dock.cpp msgid "Re-Import.." -msgstr "" +msgstr "Повторно внасяне.." #: tools/editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2661,7 +2705,7 @@ msgstr "" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Font Import" -msgstr "" +msgstr "Внасяне на шрифт" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "" @@ -2786,11 +2830,11 @@ msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error importing scene." -msgstr "" +msgstr "Имаше грешка при внасянето на сцената." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import 3D Scene" -msgstr "" +msgstr "Внасяне на триизмерна сцена" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source Scene:" @@ -2826,11 +2870,11 @@ msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Anyway" -msgstr "" +msgstr "Внасяне въпреки това" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import & Open" -msgstr "" +msgstr "Внасяне и отваряне" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Edited scene has not been saved, open imported scene anyway?" @@ -2839,11 +2883,11 @@ msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import Scene" -msgstr "" +msgstr "Внасяне на сцена" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Importing Scene.." -msgstr "" +msgstr "Внасяне на сцената.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Running Custom Script.." @@ -2863,7 +2907,7 @@ msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Image:" -msgstr "" +msgstr "Внасяне на изображение:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Can't import a file over itself:" @@ -2919,7 +2963,7 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Error importing:" -msgstr "" +msgstr "Имаше грешка при внасянето:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Only one file is required for large texture." @@ -2931,7 +2975,7 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for Atlas (2D)" -msgstr "" +msgstr "Внасяне на текстури за Атлас (двуизмерно)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cell Size:" @@ -2943,7 +2987,7 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Textures (2D)" -msgstr "" +msgstr "Внасяне на големи текстури (двуизмерно)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture" @@ -2967,15 +3011,15 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures" -msgstr "" +msgstr "Внасяне на текстури" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "2D Texture" -msgstr "" +msgstr "Двуизмерна текстура" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "3D Texture" -msgstr "" +msgstr "Триизмерна текстура" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Atlas Texture" @@ -2997,7 +3041,7 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Texture" -msgstr "" +msgstr "Внасяне на голяма текстура" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Load Source Image" @@ -3070,7 +3114,7 @@ msgstr "" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No items to import!" -msgstr "" +msgstr "Няма артикули за внасяне!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No target path!" @@ -3078,15 +3122,15 @@ msgstr "" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translations" -msgstr "" +msgstr "Внасяне на преводи" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Couldn't import!" -msgstr "" +msgstr "Неуспешно внасяне!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translation" -msgstr "" +msgstr "Внасяне на превода" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Source CSV:" @@ -3106,7 +3150,7 @@ msgstr "" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Languages:" -msgstr "" +msgstr "Внасяне на езици:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Translation" @@ -3118,7 +3162,7 @@ msgstr "" #: tools/editor/node_dock.cpp msgid "Node" -msgstr "" +msgstr "Възел" #: tools/editor/node_dock.cpp msgid "Groups" @@ -3436,7 +3480,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." -msgstr "" +msgstr "Внасяне на анимации.." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Edit Node Filters" @@ -3793,11 +3837,11 @@ msgstr "" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import from Scene" -msgstr "" +msgstr "Внасяне от сцена" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "" +msgstr "Обновяване от сцена" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" @@ -4334,15 +4378,15 @@ msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Error importing theme" -msgstr "" +msgstr "Имаше грешка при внасянето на сцената" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Error importing" -msgstr "" +msgstr "Имаше грешка при внасянето" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "" +msgstr "Внасяне на тема" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save Theme As.." @@ -4412,7 +4456,7 @@ msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Debug" -msgstr "" +msgstr "Отстраняване на грешки" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp @@ -4436,7 +4480,7 @@ msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" -msgstr "" +msgstr "Отстранителя на грешки да седи отворен" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Window" @@ -4499,7 +4543,7 @@ msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp msgid "Debugger" -msgstr "" +msgstr "Отстранител на грешки" #: tools/editor/plugins/script_editor_plugin.cpp msgid "" @@ -5063,7 +5107,7 @@ msgstr "" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" -msgstr "" +msgstr "Скорост (кадри в секунда):" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames" @@ -5328,11 +5372,11 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Please export outside the project folder!" -msgstr "" +msgstr "Моля, изнесете извън папката на проекта!" #: tools/editor/project_export.cpp msgid "Error exporting project!" -msgstr "" +msgstr "Имаше грешка при изнасяне на проекта!" #: tools/editor/project_export.cpp msgid "Error writing the project PCK!" @@ -5376,7 +5420,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Project Export Settings" -msgstr "" +msgstr "Настройки за изнасяне на проекта" #: tools/editor/project_export.cpp msgid "Target" @@ -5384,7 +5428,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Export to Platform" -msgstr "" +msgstr "Изнасяне към платформа" #: tools/editor/project_export.cpp msgid "Resources" @@ -5392,23 +5436,23 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Export selected resources (including dependencies)." -msgstr "" +msgstr "Изнасяне на избраните ресурси (включително зависимостите)." #: tools/editor/project_export.cpp msgid "Export all resources in the project." -msgstr "" +msgstr "Изнасяне на всички ресурси в проекта." #: tools/editor/project_export.cpp msgid "Export all files in the project directory." -msgstr "" +msgstr "Изнасяне на всички файлове в папката на проекта." #: tools/editor/project_export.cpp msgid "Export Mode:" -msgstr "" +msgstr "Режим на изнасяне:" #: tools/editor/project_export.cpp msgid "Resources to Export:" -msgstr "" +msgstr "Ресурси за изнасяне:" #: tools/editor/project_export.cpp msgid "Action" @@ -5573,7 +5617,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Export.." -msgstr "" +msgstr "Изнасяне.." #: tools/editor/project_export.cpp msgid "Project Export" @@ -5597,7 +5641,7 @@ msgstr "" #: tools/editor/project_manager.cpp msgid "Imported Project" -msgstr "" +msgstr "Внесен проект" #: tools/editor/project_manager.cpp msgid "Invalid project path (changed anything?)." @@ -5617,7 +5661,7 @@ msgstr "" #: tools/editor/project_manager.cpp msgid "Import Existing Project" -msgstr "" +msgstr "Внасяне на съществуващ проект" #: tools/editor/project_manager.cpp msgid "Project Path (Must Exist):" @@ -5811,7 +5855,7 @@ msgstr "" #: tools/editor/project_settings.cpp msgid "Settings saved OK." -msgstr "" +msgstr "Настройките са запазени." #: tools/editor/project_settings.cpp msgid "Add Translation" @@ -5989,6 +6033,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Избиране на всичко" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Избиране на всичко" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6051,7 +6105,7 @@ msgstr "" #: tools/editor/run_settings_dialog.cpp msgid "Scene Run Settings" -msgstr "" +msgstr "Настройки за пускане на сцена" #: tools/editor/scene_tree_dock.cpp msgid "OK :(" @@ -6368,7 +6422,7 @@ msgstr "" #: tools/editor/script_editor_debugger.cpp msgid "Errors" -msgstr "" +msgstr "Грешки" #: tools/editor/script_editor_debugger.cpp msgid "Child Process Connected" @@ -6392,7 +6446,7 @@ msgstr "" #: tools/editor/script_editor_debugger.cpp msgid "Errors:" -msgstr "" +msgstr "Грешки:" #: tools/editor/script_editor_debugger.cpp msgid "Stack Trace (if applicable):" @@ -6420,7 +6474,7 @@ msgstr "" #: tools/editor/script_editor_debugger.cpp msgid "Value" -msgstr "" +msgstr "Стойност" #: tools/editor/script_editor_debugger.cpp msgid "Monitors" @@ -6452,7 +6506,7 @@ msgstr "" #: tools/editor/script_editor_debugger.cpp msgid "Misc" -msgstr "" +msgstr "Разни" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control:" diff --git a/tools/translations/bn.po b/tools/translations/bn.po index fac96be0bb..d0827bf38f 100644 --- a/tools/translations/bn.po +++ b/tools/translations/bn.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-08-10 17:10+0000\n" +"PO-Revision-Date: 2016-08-12 06:37+0000\n" "Last-Translator: ABU MD. MARUF SARKER <maruf.webdev@gmail.com>\n" "Language-Team: Bengali <https://hosted.weblate.org/projects/godot-engine/" "godot/bn/>\n" @@ -65,34 +65,40 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"একটি নোড কার্যকর মেমোরি ছাড়াই উৎপন্ন হয়েছে, কি করে সঠিকভাবে সরবারহ করতে হয় তা " +"অনুগ্রহ করে ডকুমেন্টেশনে পড়ুন!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"নোড ডাকা হয়েছে, কিন্তু প্রথম কার্যকর মেমোরিতে ফাংশনের কোনো অবস্থা ফেরত পাঠায়নি।" #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"নোডের কার্যকর মেমোরির প্রাথমিক উপাদানে অবশ্যই ফিরতি মান নির্দিষ্ট করতে হবে! অনুগ্রহ " +"করে আপনার নোডটি মেরামত করুন।" #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "নোড অনিয়মিত ক্রমের ফলাফল পাঠিয়েছে: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" +"ক্রম বিট (bit) পাওয়া গিয়েছে কিন্তু নোডটি স্ট্যাক/তাক-এ নেই, সমস্যাটি রিপোর্ট করুন!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "স্ট্যাক/তাক-এর গভীরতায় স্ট্যাক/তাক অধিপ্রবাহিত/প্লাবিত হয়েছে: " #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "ফাংশনগুলি:" #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" @@ -111,9 +117,8 @@ msgid "Name already in use by another func/var/signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "নির্বাচিত সমূহ অপসারণ করুন" +msgstr "ফাংশনের (Function) নতুন নামকরণ করুন" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" @@ -136,9 +141,8 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "নির্বাচিত সমূহ অপসারণ করুন" +msgstr "ফাংশন (Function) অপসারণ করুন" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Variable" @@ -149,9 +153,8 @@ msgid "Editing Variable:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "নির্বাচিত সমূহ অপসারণ করুন" +msgstr "সংকেত (Signal) অপসারণ করুন" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" @@ -162,11 +165,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -174,6 +201,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -224,9 +255,8 @@ msgid "Change" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "নির্বাচিত সমূহ অনুলিপি করুন" +msgstr "নির্বাচিত সমূহ অপসারণ করুন" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -234,9 +264,22 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "প্রতিলেপন/পেস্ট করুন" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -282,12 +325,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -532,7 +569,8 @@ msgstr "সব ফাইল (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "খুলুন" @@ -1075,7 +1113,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1324,10 +1363,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1646,10 +1691,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -3579,9 +3620,8 @@ msgid "Paste Pose" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "সবগুলি বাছাই করুন" +msgstr "মোড (Mode) বাছাই করুন" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3600,9 +3640,8 @@ msgid "Alt+RMB: Depth list selection" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "সংযোগ (অ্যাড) বোতাম সরান" +msgstr "মোড (Mode) সরান" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate Mode" @@ -6011,6 +6050,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "মোড (Mode) বাছাই করুন" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "মোড (Mode) বাছাই করুন" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6216,9 +6265,8 @@ msgid "Save Branch as Scene" msgstr "" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "অনুগ্রহ করে নিশ্চিত করুন..." +msgstr "অপসারণ করুন (নিশ্চয়তাকরণ নেই)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" diff --git a/tools/translations/ca.po b/tools/translations/ca.po new file mode 100644 index 0000000000..14d523b88b --- /dev/null +++ b/tools/translations/ca.po @@ -0,0 +1,6616 @@ +# LANGUAGE translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-09-01 11:46+0000\n" +"Last-Translator: Roger BR <drai_kin@hotmail.com>\n" +"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/" +"godot/ca/>\n" +"Language: ca\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.8\n" + +#: modules/gdscript/gd_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Argument de tipus invàlid per a convert(), utilitzi constants TYPE_*." + +#: modules/gdscript/gd_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" +"Nombre insuficient de bytes per a descodificar els bytes, o el format és " +"invàlid." + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "L'argument pas (step) és zero!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "Script sense instància" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "No basat en un script" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "No basat en un arxiu de recursos" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "Format del diccionari d'instàncies invàlid (manca @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" +"Format del diccionari d'instàncies invàlid (no es pot carregar l'script a " +"@path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "Format del diccionari d'instàncies invàlid (script invàlid a @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "Diccionari d'instàncies invàlid (subclasses invàlides)" + +#: modules/visual_script/visual_script.cpp +msgid "" +"A node yielded without working memory, please read the docs on how to yield " +"properly!" +msgstr "" +"Node cedit sense memòria de treball. Llegiu la documentació per cedir " +"(yield) nodes correctament!" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Node yielded, but did not return a function state in the first working " +"memory." +msgstr "" +"Node cedit, però no ha retornat cap estat de funció en la primera memòria de " +"treball." + +#: modules/visual_script/visual_script.cpp +msgid "" +"Return value must be assigned to first element of node working memory! Fix " +"your node please." +msgstr "" +"El valor de retorn s'ha d'assignar al primer element de la memòria de " +"treball de nodes! Repareu el node." + +#: modules/visual_script/visual_script.cpp +msgid "Node returned an invalid sequence output: " +msgstr "El node ha retornat un seqüencia de sortida invàlida: " + +#: modules/visual_script/visual_script.cpp +msgid "Found sequence bit but not the node in the stack, report bug!" +msgstr "" +"S'ha trobat un bit de seqüencia però cap node en la pila (stack), reporteu " +"el bug!" + +#: modules/visual_script/visual_script.cpp +msgid "Stack overflow with stack depth: " +msgstr "Pila desbordada (stack overflow) amb profunditat de Pila: " + +#: modules/visual_script/visual_script_editor.cpp +msgid "Functions:" +msgstr "Funcions:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Variables:" +msgstr "Variables:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "Senyals:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name is not a valid identifier:" +msgstr "El nom no és un identificador vàlid:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name already in use by another func/var/signal:" +msgstr "Nom usat en un altra funció/variable/senyal:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Function" +msgstr "Reanomena Funció" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Variable" +msgstr "Reanomena Variable" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Signal" +msgstr "Reanomena Senyal" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function" +msgstr "Afegeix Funció" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Variable" +msgstr "Afegeix Variable" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Signal" +msgstr "Afegeix Senyal" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Function" +msgstr "Treu Funció" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Variable" +msgstr "Treu Variable" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "Editant Variable:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "Treu Senyal" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "Editant Senyal:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +msgstr "Afegeix Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Afegeix Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Afegeix Node(s) des d'Arbre" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Afegir Captador de Propietat (Getter)" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Afegeix Col.locador de Proprietat (Setter)" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "Edita" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Base Type:" +msgstr "Tipus Base:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp +msgid "Members:" +msgstr "Membres:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Available Nodes:" +msgstr "Nodes disponibles:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select or create a function to edit graph" +msgstr "Selecciona o crea una funció per editar la corba" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "Tanca" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Signal Arguments:" +msgstr "Edita els Arguments del Senyal:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Variable:" +msgstr "Edita Variable:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Canvia" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete Selected" +msgstr "Elimina Seleccionats" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/plugins/script_text_editor.cpp +msgid "Toggle Breakpoint" +msgstr "Commuta el punt d'Interrupció" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "Troba el Tipus del Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Camí al Node:" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Input type not iterable: " +msgstr "Tipus d'entrada no iterable: " + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid" +msgstr "L'Iterador ha esdevingut invàlid" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid: " +msgstr "L'Iterador ha esdevingut invàlid: " + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name." +msgstr "El Nom de la propietat index és invàlid." + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Base object is not a Node!" +msgstr "L'objecte de Base no és un Node!" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Path does not lead Node!" +msgstr "El camí no condueix a cap Node!" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name '%s' in node %s." +msgstr "El nom de la propietat index '%s' és invàlid en el node %s." + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid argument of type: " +msgstr ": Argument invàlid del tipus: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid arguments: " +msgstr ": Arguments invàlids: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableGet not found in script: " +msgstr "Variable Get no trobada en el script: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableSet not found in script: " +msgstr "Variable Set no trobada en el script: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Custom node has no _step() method, can't process graph." +msgstr "" +"El node personalitzat no té cap mètode _step(), no es pot processar la corba." + +#: modules/visual_script/visual_script_nodes.cpp +msgid "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "" +"Valor de retorn de _step() invàlid. Ha de ser un nombre enter (seq out), o " +"una cadena de text (error)." + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"Un recurs del tipus SpriteFrames s'ha de crear or especificar en la " +"propietat \"Quadres (Frames)\" perquè AnimatedSprite pugui mostrar els " +"quadres." + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"Només es permet un sol CanvasModulate per escena (o conjunt d'escenes " +"instanciades). El primer funcionara, mentre que la resta seran ignorats." + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionPolygon2D només proporciona formes de col·lisió a nodes derivats de " +"CollisionObject2D. Utilitzeu-lo només per donar una forma a nodes com " +"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc." + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "Un CollisionPolygon2D buit no té cap efecte en la col·lisió." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2D només proporciona formes de col·lisió nodes de derivats de " +"CollisionObject2D. Utilitzeu-lo només per donar una forma a nodes com " +"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" +"S'ha de proporcionar una forma perquè *CollisionShape2D pugui funcionar. " +"Creeu-li un recurs de forma (shape)!" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" +"S'ha de proveir la propietat 'textura' amb una textura amb la forma de la " +"llum." + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" +"Cal establir (o dibuixar) un polígon oclusiu perquè aquest oclusor " +"(occluder) faci efecte." + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "El polígon oclusiu és buit. Dibuixeu un polígon!" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" +"Cal especificar un recurs de tipus NavigationPolygon per al correcte " +"funcionament del Node. Si us plau especifiqueu una propietat o dibuixeu un " +"polígon." + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" +"NavigationPolygonInstance ha de ser fill o nét d'un node Navigation2D. Només " +"proporciona dades de navegació." + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" +"Un node ParallaxLayer només funciona quan s'estableix com a fill d'un node " +"ParallaxBackground." + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" +"Cal que la propietat Camí (Path) assenyali cap a un node Particles2D vàlid." + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" +"PathFollow2D només funciona si s'estableix com a fill d'un node Path2D." + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "Cal que la propietat Camí (Path) assenyali un Node2D vàlid." + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" +"Cal crear o especificar un recurs SampleLibrary en la propietat 'samples' " +"perquè SamplePlayer pugui reproduir so." + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" +"Cal que la propietat Camí (Path) assenyali un node de Vista (Viewport) " +"vàlid. Aquest ha de ser especificat en el mode \"destí de renderització" +"\" (render target)." + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" +"L'àrea de Visualització (Viewport) especificada en la propietat \"Camí" +"\" (Path) ha d'utilitzar el mode 'destí de renderització' (render target) " +"perquè l'sprite funcioni." + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" +"VisibilityEnable2D funciona millor quan l'arrel de l'escena editada " +"s'utilitza com a pare." + +#: scene/3d/baked_light_instance.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "BakedLightInstance no conté cap recurs BakedLight." + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionShape només proporciona formes de col·lisió a nodes derivats de " +"CollisionObject. Utilitzeu-lo només per donar una forma a nodes com Area, " +"StaticBody, RigidBody, KinematicBody, etc." + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" +"Cal proveir una forma perquè CollisionShape funcioni. Creeu-li un recurs de " +"forma!" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionPolygon només proporciona formes de col·lisió a nodes derivats de " +"CollisionObject. Utilitzeu-lo només per donar una forma a nodes com Area, " +"StaticBody, RigidBody, KinematicBody, etc." + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "Un CollisionPolygon buit no afecta les col·lisions." + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" +"Cal crear o establir un recurs de tipus NavigationMesh per al correcte " +"funcionament d'aquest node." + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" +"NavigationMeshInstance ha de ser fill o nét d'un node Navigation. Només " +"proporciona dades de navegació." + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" +"Només es permet un sol WorldEnvironment per escena ( o conjunt d'escenes " +"instanciades)." + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" +"Cal crear o establir un recurs SampleLibrary en la propietat 'samples' " +"perquè SpatialSamplePlayer pugui reproduir so." + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" +"Cal crear o establir un recurs SpriteFrames en la propietat 'Frames' perquè " +"AnimatedSprite3D dibuixi els quadres." + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "Cancel·la" + +#: scene/gui/dialogs.cpp tools/editor/scene_tree_dock.cpp +msgid "OK" +msgstr "D'acord" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "Ep!" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "Confirmeu..." + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "Fitxer Existent, Sobreescriure?" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "Tots Reconeguts" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "Tots els Fitxers (*)" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/filesystem_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +msgid "Open" +msgstr "Obre" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "Obre un Fitxer" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "Obre Fitxer(s)" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "Obre un Directori" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "Obre un Fitxer o Directori" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "Desa" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "Desa un Fitxer" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "Crea una Carpeta" + +#: scene/gui/file_dialog.cpp tools/editor/editor_autoload_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "Camí:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "Directoris i Fitxers:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "Fitxer:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "Filtre:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "Nom:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "No s'ha pogut crear la carpeta." + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "Cal utilitzar una extensió vàlida." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "Maj +" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "Alt +" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "Ctrl +" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "Meta +" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "Dispositiu" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "Botó" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "Botó Esquerre." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "Botó Dret." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "Botó del Mig." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "Roda Amunt." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "Roda Avall." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "Eix" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "Talla" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "Copia" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "Enganxa" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "Selecciona-ho Tot" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "Neteja" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "Desfés" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" +"Les finestres emergents s'oculten per defecte tret que s'invoqui popup() o " +"qualsevol de les funcions popup*(). És possible fer-les visibles mentre " +"s'edita, però s'ocultaran durant l'execució." + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" +"L'àrea de Visualització (Viewport) no és el Destí de Renderització (render " +"target). Per mostrar-ne el contingut, especifiqueu-la com a filla d'un " +"Control de forma per tal d'obtenir-ne la mida. Altrament, establiu-la com a " +"Destí de Renderització i assigneu la textura interna a algun node." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "Error inicialitzant FreeType." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "Format de lletra desconegut." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "Error carregant lletra." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "La mida de la lletra no és vàlida." + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "Desactivat" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "Tota la Selecció" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "Mou Afegir Clau" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "Canvia Transició" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "Canvia Transformació" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "Canvia Valor" + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Anim Change Call" +msgstr "Canvia Crida (Call)" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "Afegeix Pista" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "Duplica Claus" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "Mou Pista Amunt" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "Mou Pista Avall" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "Treu Pista" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "Posa les Transicions a:" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "Reanomena Pista" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "Canvia Interpolació de Pista" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "Canvia Valor del Mode de Pista" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "Edita Corba del Node" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "Edita Corba de Selecció" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "Esborra Claus" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "Duplica la Selecció" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "Duplica Transposats" + +#: tools/editor/animation_editor.cpp +msgid "Remove Selection" +msgstr "Treu la Selecció" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "Continu" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "Discret" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "Activador" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "Afegeix Clau" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "Mou Claus" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "Escala la Selecció" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "Escala des del Cursor" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "Vés al Pas Següent" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "Vés al Pas Previ" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "Lineal" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constant" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "Entrada" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "Sortida" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "Entrada-Sortida" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "Sortida-Entrada" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "Transicions" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "Optimitza l'Animació" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "Poleix l'Animació" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "Vol crear una NOVA pista per a %s i inserir-hi una clau?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "Vol crear %d noves pistes i inserir-hi claus?" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "Crea" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "Crea i Insereix" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "Insereix Pista i Clau" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "Insereix Clau" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "Canvia durada" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "Canvia bucle" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "Crea Clau de Valor Tipat" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "Insereix Animació" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "Escala Claus" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "Afegeix Pista de Crida" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "Zoom d'animació." + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "Durada (s):" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "Durada de l'Animació (en segons)." + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "Pas (s):" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "Pas de desplaçament del cursor (s)." + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "Activa/Desactiva el bucle de l'animació." + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "Afegeix noves pistes." + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "Mou amunt la pista actual." + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "Mou avall la pista actual." + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "Treu la pista seleccionada." + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "Eines de Pista" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "Activa l'editatge individual de claus en clicar-hi." + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "Optimitzador d'Animació" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "Error Lineal Max.:" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "Error Angular Max.:" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "Max. Angle Optimitzable:" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "Optimitza" + +#: tools/editor/animation_editor.cpp +msgid "Select an AnimationPlayer from the Scene Tree to edit animations." +msgstr "" +"Selecciona un AnimationPlayer a l'Arbre de l'Escena per editar-ne l'animació." + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "Clau" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "Transició" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "Relació d'Escala:" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "Cridar Funcions en el Node \"Which\"?" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "Treu claus invàlides" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "Treu pistes buides o sense resoldre" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "Poleix totes les animacions" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "Poleix la/les Animació/ns (NO ES POT DESFER!)" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "Poleix" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "Redimensiona Matriu" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "Canvia Tipus de la Matriu" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "Canvia Valor de la Matriu" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "Cerca:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "Ordena:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "Inverteix" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "Categoria:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "Tot" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "Lloc:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "Suport..." + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "Oficial" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "Comunitat" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "Provant" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "Arxiu ZIP d'Actius" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "Llista de mètodes de '%s':" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Crida" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "Llista de mètodes:" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "Arguments:" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "Retorn:" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "Vés a la Línia" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "Línia:" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "Cap Coincidència" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "Substituïdes %d ocurrència/es." + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "Reemplaça" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "Reemplaça-hoTot" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "Distingeix entre majúscules i minúscules" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "Paraules senceres" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "Selecció Només" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "Cerca" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "Troba" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "Següent" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "Reemplaçades %d ocurrència/es." + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "No s'ha trobat!" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "Reemplaça per" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "Majúscules i minúscules" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "Enrere" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "Indica en reemplaçar" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "Omet" + +#: tools/editor/code_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "Apropa" + +#: tools/editor/code_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "Allunya" + +#: tools/editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "Reinicia el Zoom" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "Línia:" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "Col:" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "Cal especificar un mètode per al Node objectiu!" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "Connecta al Node:" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "Afegeix" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "Treu" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "Afegeix Argument de Crida Extra:" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "Arguments de Crida Extra:" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "Camí al Node:" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "Crea Funció" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "Diferit" + +#: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Oneshot" +msgstr "D'un cop" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "Connecta" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "Connecta '%s' amb '%s'" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "Connectant Senyal:" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "Crea Subscripció" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "Connecta.." + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "Desconnecta" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "Senyals" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "Crea Nou" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "Coincidències:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Descripció:" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "Cerca Reemplaçant per a:" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "Dependències per a:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" +"S'està editant l'Escena '%s'.\n" +"Els canvis s'actualitzaran recarregar." + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" +"S'està usant el Recurs '%s'.\n" +"Els canvis s'actualitzaran en recarregar." + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "Dependències" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "Recurs" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_autoload_settings.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Path" +msgstr "Camí" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "Dependències:" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "Arregla Trencats" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "Editor de Dependències" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "Cerca Recurs Reemplaçant:" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "Propietaris de:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" +"Els fitxers eliminats son necessaris per a altres recursos.\n" +"Eliminar de totes formes? (No es pot desfer)" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "Elimina fitxer seleccionats del project? (no es pot desfer)" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "Error en carregar:" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "No s'ha pogut carregar l'escena. Manquen dependències:" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "Obre igualment" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "Amb quina acció s'ha de procedir?" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "Arregla Dependències" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "Errors de càrrega!" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "Eliminar permanentment %d element(s)? (No es pot desfer!)" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "Posseeix" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "Recursos Sense Propietat Explícita:" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "Navegador de Recursos Orfes" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "Esborra fitxers seleccionats?" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/filesystem_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Delete" +msgstr "Esborra" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name." +msgstr "Nom no vàlid." + +#: tools/editor/editor_autoload_settings.cpp +msgid "Valid characters:" +msgstr "Caràcters vàlids:" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" +"Nom no vàlid. No pot coincidir amb noms de classe del motor ja existents." + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" +"Nom no vàlid. No pot coincidir amb noms de tipus integrats ja existents." + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" +"Nom no vàlid. No pot coincidir amb noms de constants globals ja existents." + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid Path." +msgstr "Camí no vàlid." + +#: tools/editor/editor_autoload_settings.cpp +msgid "File does not exist." +msgstr "El Fitxer no existeix." + +#: tools/editor/editor_autoload_settings.cpp +msgid "Not in resource path." +msgstr "Fora del camí dels recursos." + +#: tools/editor/editor_autoload_settings.cpp +msgid "Add AutoLoad" +msgstr "Afegeix AutoCàrrega" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "l'AutoCàrrega '%s' ja existeix!" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Rename Autoload" +msgstr "Reanomena AutoCàrrega" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "Commuta les Globals d'AutoCàrrega" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Move Autoload" +msgstr "Mou AutoCàrrega" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Remove Autoload" +msgstr "Treure Autocàrrega" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Enable" +msgstr "Activa" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Rearrange Autoloads" +msgstr "Reorganitza AutoCàrregues" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Node Name:" +msgstr "Nom del node:" + +#: tools/editor/editor_autoload_settings.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Name" +msgstr "Nom" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Singleton" +msgstr "Singleton" + +#: tools/editor/editor_autoload_settings.cpp +msgid "List:" +msgstr "Llista:" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "Actualitzant Escena" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "Emmagatzemant canvis locals.." + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "Actualitzant escena.." + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "Tria un Directori" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "Tria" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Back" +msgstr "Enrere" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Forward" +msgstr "Endavant" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Up" +msgstr "Puja" + +#: tools/editor/editor_file_dialog.cpp +msgid "Refresh" +msgstr "Refresca" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Hidden Files" +msgstr "Commuta Fitxers Ocults" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Favorite" +msgstr "Commuta Favorit" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Mode" +msgstr "Commuta Mode" + +#: tools/editor/editor_file_dialog.cpp +msgid "Focus Path" +msgstr "Enfoca Camí" + +#: tools/editor/editor_file_dialog.cpp +msgid "Move Favorite Up" +msgstr "Mou Favorit Amunt" + +#: tools/editor/editor_file_dialog.cpp +msgid "Move Favorite Down" +msgstr "Mou Favorit Avall" + +#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favorits:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recents:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "Previsualització:" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "Escaneja Fonts" + +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "Cerca Ajuda" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "Llista de Classes:" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "Cerca Classes" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "Classe:" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "Hereta:" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "Heretat per:" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "Descripció breu:" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "Mètodes públics:" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "Elements del Tema de la GUI:" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "Constants:" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "Descripció del mètode:" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "Cerca Text" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "Afegit:" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "Eliminat:" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "Error en desar atles:" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "No s'ha pogut desar la subtextura de l'atles:" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "Emmagatzemant Fitxer:" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "Compressió" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "Exportació per a %s" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "Instal·lant.." + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr " Sortida:" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "Re-Importació" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "Importació:" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "Node de l'Escena" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "Error en desar recurs!" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "Desar Recurs com..." + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "Vaja..." + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined, select one?\n" +"You can change it later in later in \"Project Settings\" under the " +"'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Selected scene '%s' does not exist, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Selected scene '%s' is not a scene file, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pick a Main Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Next tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Previous tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save all Scenes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Custom Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"Invalid file extension.\n" +"Please use .fnt." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has not surface to create outlines from!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Next script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Previous script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close Docs" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"Built-in scripts can only be edited when the scene they belong to is loaded" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Switch Perspective/Orthogonal view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Insert Animation Key" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Selection" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align Selection With View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "<None>" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Pixel Snap" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Snap" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Auto Slice" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Offset:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Separation:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "The following files failed extraction from package:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Package Installed Successfully!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Install Project:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Install" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one project?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "" +"You are about the scan %s folders for existing Godot projects. Do you " +"confirm?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Select a Folder to Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Afegeix Col.locador de Proprietat (Setter)" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Mètodes públics:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance the scenes at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete (No Confirm)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create a new script for the selected node." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" + +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "El node personalitzat no té _get_output_port_unsequenced(idx,wmem), però " +#~ "s'han especificat ports sense seqüenciar." diff --git a/tools/translations/cs.po b/tools/translations/cs.po index 43c0027d11..bbe2142bcb 100644 --- a/tools/translations/cs.po +++ b/tools/translations/cs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-08-10 14:59+0000\n" +"PO-Revision-Date: 2016-08-11 15:01+0000\n" "Last-Translator: Luděk Novotný <gladosicek@gmail.com>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" @@ -61,139 +61,175 @@ msgid "Invalid instance dictionary (invalid subclasses)" msgstr "Neplatná instance slovníku (neplatné podtřídy)" #: modules/visual_script/visual_script.cpp +#, fuzzy msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Uzel zavolal yield bez pracovní paměti. Přečtěte si prosím v dokumentaci, " +"jak správně používat yield!" #: modules/visual_script/visual_script.cpp +#, fuzzy msgid "" "Node yielded, but did not return a function state in the first working " "memory." -msgstr "" +msgstr "Uzel zavolal yield, ale nevrátil stav funkce v první pracovní paměti." #: modules/visual_script/visual_script.cpp +#, fuzzy msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"Návratová hodnota musí být přiřazena prvnímu prvku uzlu pracovní paměti. " +"Opravte prosím váš uzel." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Uzel vrátil neplatnou posloupnost výstupu: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" -msgstr "" +msgstr "Nalezen bit posloupnosti ale ne uzel v zásobníku. Nahlaste chybu!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Přetečení zásobníku s hloubkou: " #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "Funkce:" #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" -msgstr "" +msgstr "Proměnné:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" -msgstr "" +msgstr "Signály:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Jméno není platný identifikátor:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Jméno už je použito jinou funkcí/proměnnou/signálem:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" -msgstr "" +msgstr "Přejmenovat funkci" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "" +msgstr "Přejmenovat proměnnou" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "Přejmenovat signál" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function" -msgstr "" +msgstr "Přidat funkci" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" -msgstr "" +msgstr "Přidat proměnnou" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "Přidat signál" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" -msgstr "" +msgstr "Odstranit funkci" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Variable" -msgstr "" +msgstr "Odstranit proměnnou" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Variable:" -msgstr "" +msgstr "Úprava proměnné:" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Signal" -msgstr "" +msgstr "Odstranit signál" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "" +msgstr "Úprava signálu:" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" +msgstr "Přidat uzel" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Meta to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Přidat uzel" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Přidat uzel (uzly) ze stromu" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Přidat vlastnost getter" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Přidat vlastnost setter" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Edit" -msgstr "" +msgstr "Upravit" #: modules/visual_script/visual_script_editor.cpp msgid "Base Type:" -msgstr "" +msgstr "Základní typ:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" -msgstr "" +msgstr "Členové:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "Dostupné uzly:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Pro úpravu grafu vyber nebo vytvoř funkci" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -206,33 +242,47 @@ msgstr "" #: tools/editor/project_settings.cpp tools/editor/property_editor.cpp #: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp msgid "Close" -msgstr "" +msgstr "Zavřít" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Signal Arguments:" -msgstr "" +msgstr "Upravit argumenty signálu:" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Variable:" -msgstr "" +msgstr "Upravit proměnnou:" #: modules/visual_script/visual_script_editor.cpp msgid "Change" -msgstr "" +msgstr "Změnit" #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" -msgstr "" +msgstr "Smazat vybraný" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" +msgstr "Přepnout breakpoint" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "Vyhledat typ uzlu" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Cut Nodes" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Cesta k uzlu:" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -247,45 +297,39 @@ msgstr "" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name." -msgstr "" +msgstr "Neplatné jméno vlastnosti." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "Základní objekt není Node!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "" +msgstr "Cesta nevede k uzlu!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Neplatné jméno vlastnosti '%s' v uzlu %s." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "" +msgstr ": Neplatný argument typu: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr "" +msgstr ": Neplatné argumenty: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "Proměnná pro získání nebyla ve skriptu nalezena: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "Proměnná pro nastavení nebyla ve skriptu nalezena: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." -msgstr "" +msgstr "Vlastní uzel nemá metodu _step(), takže nelze postupovat grafem." #: modules/visual_script/visual_script_nodes.cpp msgid "" @@ -422,7 +466,7 @@ msgstr "" #: scene/3d/baked_light_instance.cpp msgid "BakedLightInstance does not contain a BakedLight resource." -msgstr "" +msgstr "BakedLightInstance neobsahuje zdroj BakedLight." #: scene/3d/body_shape.cpp msgid "" @@ -524,7 +568,8 @@ msgstr "Všechny soubory (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Otevřít" @@ -598,16 +643,16 @@ msgstr "Je nutné použít platnou příponu." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Shift+" -msgstr "" +msgstr "Shift+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Alt+" -msgstr "" +msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -732,11 +777,11 @@ msgstr "Neplatná velikost fontu." #: tools/editor/animation_editor.cpp msgid "Disabled" -msgstr "" +msgstr "Vypnuto" #: tools/editor/animation_editor.cpp msgid "All Selection" -msgstr "" +msgstr "Všechny vybrané" #: tools/editor/animation_editor.cpp msgid "Move Add Key" @@ -744,72 +789,72 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "Animace: změna přechodu" #: tools/editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "" +msgstr "Animace: změna transformace" #: tools/editor/animation_editor.cpp msgid "Anim Change Value" -msgstr "" +msgstr "Animace: změna hodnoty" #: tools/editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "Animace: změna volání" #: tools/editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "" +msgstr "Animace: přidat stopu" #: tools/editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "" +msgstr "Animace: duplikovat klíče" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "" +msgstr "Posun stopy animace nahoru" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "" +msgstr "Posun stopy animace dolů" #: tools/editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "" +msgstr "Odstranit stopu animace" #: tools/editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "" +msgstr "Změna přechodů na:" #: tools/editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "" +msgstr "Animace: přejmenování stopy" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "" +msgstr "Animace: změna interpolace stopy" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "" +msgstr "Animace: změna typu hodnot" #: tools/editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "" +msgstr "Úprava křivky uzlu" #: tools/editor/animation_editor.cpp msgid "Edit Selection Curve" -msgstr "" +msgstr "Úprava vybraných křivek" #: tools/editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "" +msgstr "Animace: smazat klíče" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "" +msgstr "Duplikovat výběr" #: tools/editor/animation_editor.cpp msgid "Duplicate Transposed" @@ -817,88 +862,88 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Remove Selection" -msgstr "" +msgstr "Odstranit výběr" #: tools/editor/animation_editor.cpp msgid "Continuous" -msgstr "" +msgstr "Spojité" #: tools/editor/animation_editor.cpp msgid "Discrete" -msgstr "" +msgstr "Diskrétní" #: tools/editor/animation_editor.cpp msgid "Trigger" -msgstr "" +msgstr "Spoušť" #: tools/editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "" +msgstr "Animace: přidat klíč" #: tools/editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "" +msgstr "Animace: přesunout klíče" #: tools/editor/animation_editor.cpp msgid "Scale Selection" -msgstr "" +msgstr "Změnit měřítko výběru" #: tools/editor/animation_editor.cpp msgid "Scale From Cursor" -msgstr "" +msgstr "Změnit měřítko od kurzoru" #: tools/editor/animation_editor.cpp msgid "Goto Next Step" -msgstr "" +msgstr "Jít k dalšímu kroku" #: tools/editor/animation_editor.cpp msgid "Goto Prev Step" -msgstr "" +msgstr "Jít k předchozímu kroku" #: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp msgid "Linear" -msgstr "" +msgstr "Lineární" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Constant" -msgstr "" +msgstr "Konstantní" #: tools/editor/animation_editor.cpp msgid "In" -msgstr "" +msgstr "In" #: tools/editor/animation_editor.cpp msgid "Out" -msgstr "" +msgstr "Out" #: tools/editor/animation_editor.cpp msgid "In-Out" -msgstr "" +msgstr "In-Out" #: tools/editor/animation_editor.cpp msgid "Out-In" -msgstr "" +msgstr "Out-In" #: tools/editor/animation_editor.cpp msgid "Transitions" -msgstr "" +msgstr "Přechody" #: tools/editor/animation_editor.cpp msgid "Optimize Animation" -msgstr "" +msgstr "Optimalizovat animaci" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "" +msgstr "Pročistit animaci" #: tools/editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "" +msgstr "Vytvořit NOVOU stopu pro %s a vložit klíč?" #: tools/editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "" +msgstr "Vytvořit %d NOVÝCH stop a vložit klíče?" #: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -907,27 +952,27 @@ msgstr "" #: tools/editor/plugins/particles_editor_plugin.cpp #: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp msgid "Create" -msgstr "" +msgstr "Vytvořit" #: tools/editor/animation_editor.cpp msgid "Anim Create & Insert" -msgstr "" +msgstr "Animace: Vytvořit a vložit" #: tools/editor/animation_editor.cpp msgid "Anim Insert Track & Key" -msgstr "" +msgstr "Animace: Vložit stopu a klíč" #: tools/editor/animation_editor.cpp msgid "Anim Insert Key" -msgstr "" +msgstr "Animace: vložit klíč" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "" +msgstr "Změnit délku animace" #: tools/editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "" +msgstr "Změnit opakování animace" #: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" @@ -935,95 +980,95 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Anim Insert" -msgstr "" +msgstr "Animace: vložit" #: tools/editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "" +msgstr "Animace: změnit měřítko klíčů" #: tools/editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "" +msgstr "Animace: přidat stopu volání" #: tools/editor/animation_editor.cpp msgid "Animation zoom." -msgstr "" +msgstr "Přiblížení animace." #: tools/editor/animation_editor.cpp msgid "Length (s):" -msgstr "" +msgstr "Délka (s):" #: tools/editor/animation_editor.cpp msgid "Animation length (in seconds)." -msgstr "" +msgstr "Délka animace (v sekundách)." #: tools/editor/animation_editor.cpp msgid "Step (s):" -msgstr "" +msgstr "Krok (s):" #: tools/editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." -msgstr "" +msgstr "Krokování kurzoru (v sekundách)." #: tools/editor/animation_editor.cpp msgid "Enable/Disable looping in animation." -msgstr "" +msgstr "Zapnout/vypnout opakování animace." #: tools/editor/animation_editor.cpp msgid "Add new tracks." -msgstr "" +msgstr "Přidat nové stopy." #: tools/editor/animation_editor.cpp msgid "Move current track up." -msgstr "" +msgstr "Posunout aktuální stopu nahoru." #: tools/editor/animation_editor.cpp msgid "Move current track down." -msgstr "" +msgstr "Posunout aktuální stopu dolů." #: tools/editor/animation_editor.cpp msgid "Remove selected track." -msgstr "" +msgstr "Odstranit vybranou stopu." #: tools/editor/animation_editor.cpp msgid "Track tools" -msgstr "" +msgstr "Nástroje stopy" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "" +msgstr "Kliknutím na klíče zapnete jejich individuální úpravu." #: tools/editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "" +msgstr "Optimalizátor animace" #: tools/editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr "" +msgstr "Maximální lineární chyba:" #: tools/editor/animation_editor.cpp msgid "Max. Angular Error:" -msgstr "" +msgstr "Maximální úhlová chyba:" #: tools/editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "" +msgstr "Maximální optimalizovatelný úhel:" #: tools/editor/animation_editor.cpp msgid "Optimize" -msgstr "" +msgstr "Optimalizuj" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." -msgstr "" +msgstr "Pro úpravu animací vyberte ze stromu scény uzel AnimationPlayer." #: tools/editor/animation_editor.cpp msgid "Key" -msgstr "" +msgstr "Klíč" #: tools/editor/animation_editor.cpp msgid "Transition" -msgstr "" +msgstr "Přechod" #: tools/editor/animation_editor.cpp msgid "Scale Ratio:" @@ -1031,11 +1076,11 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Call Functions in Which Node?" -msgstr "" +msgstr "Ze kterého uzlu volej funkce?" #: tools/editor/animation_editor.cpp msgid "Remove invalid keys" -msgstr "" +msgstr "Odstranit neplatné klíče" #: tools/editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" @@ -1043,131 +1088,132 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Clean-up all animations" -msgstr "" +msgstr "Pročistit všechny animace" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "" +msgstr "Pročistit animaci (NELZE VZÍT ZPĚT!)" #: tools/editor/animation_editor.cpp msgid "Clean-Up" -msgstr "" +msgstr "Pročistit" #: tools/editor/array_property_edit.cpp msgid "Resize Array" -msgstr "" +msgstr "Změnit velikost pole" #: tools/editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "" +msgstr "Změnit typ hodnot pole" #: tools/editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "" +msgstr "Změnit hodnotu pole" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" -msgstr "" +msgstr "Hledat:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Sort:" -msgstr "" +msgstr "Řadit:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Reverse" -msgstr "" +msgstr "Naopak" #: tools/editor/asset_library_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Category:" -msgstr "" +msgstr "Kategorie:" #: tools/editor/asset_library_editor_plugin.cpp msgid "All" -msgstr "" +msgstr "Všechny" #: tools/editor/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "Web:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Support.." -msgstr "" +msgstr "Podpora.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Oficiální" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Z komunity" #: tools/editor/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "" +msgstr "Testované" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "" +msgstr "ZIP soubor asetů" #: tools/editor/call_dialog.cpp msgid "Method List For '%s':" -msgstr "" +msgstr "Seznam metod '%s':" #: tools/editor/call_dialog.cpp msgid "Call" -msgstr "" +msgstr "Volat" #: tools/editor/call_dialog.cpp msgid "Method List:" -msgstr "" +msgstr "Seznam metod:" #: tools/editor/call_dialog.cpp msgid "Arguments:" -msgstr "" +msgstr "Argumenty:" #: tools/editor/call_dialog.cpp msgid "Return:" -msgstr "" +msgstr "Vrátit:" #: tools/editor/code_editor.cpp msgid "Go to Line" -msgstr "" +msgstr "Běž na řádek" #: tools/editor/code_editor.cpp msgid "Line Number:" -msgstr "" +msgstr "Číslo řádku:" #: tools/editor/code_editor.cpp msgid "No Matches" -msgstr "" +msgstr "Žádné shody" #: tools/editor/code_editor.cpp msgid "Replaced %d Ocurrence(s)." -msgstr "" +msgstr "Nahrazeno %d výskytů." #: tools/editor/code_editor.cpp msgid "Replace" -msgstr "" +msgstr "Nahradit" #: tools/editor/code_editor.cpp msgid "Replace All" -msgstr "" +msgstr "Nahradit všechny" #: tools/editor/code_editor.cpp msgid "Match Case" -msgstr "" +msgstr "Rozlišovat malá/velká" #: tools/editor/code_editor.cpp msgid "Whole Words" -msgstr "" +msgstr "Celá slova" #: tools/editor/code_editor.cpp msgid "Selection Only" -msgstr "" +msgstr "Pouze výběr" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -1175,27 +1221,27 @@ msgstr "" #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Search" -msgstr "" +msgstr "Hledat" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp msgid "Find" -msgstr "" +msgstr "Najít" #: tools/editor/code_editor.cpp msgid "Next" -msgstr "" +msgstr "Další" #: tools/editor/code_editor.cpp msgid "Replaced %d ocurrence(s)." -msgstr "" +msgstr "Nahrazeno %d výskytů." #: tools/editor/code_editor.cpp msgid "Not found!" -msgstr "" +msgstr "Nenalezeno!" #: tools/editor/code_editor.cpp msgid "Replace By" -msgstr "" +msgstr "Nahradit" #: tools/editor/code_editor.cpp msgid "Case Sensitive" @@ -1207,41 +1253,41 @@ msgstr "" #: tools/editor/code_editor.cpp msgid "Prompt On Replace" -msgstr "" +msgstr "Potvrzovat nahrazení" #: tools/editor/code_editor.cpp msgid "Skip" -msgstr "" +msgstr "Přeskočit" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom In" -msgstr "" +msgstr "Přiblížit" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Out" -msgstr "" +msgstr "Oddálit" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Obnovit původní přiblížení" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" -msgstr "" +msgstr "Řádek:" #: tools/editor/code_editor.cpp msgid "Col:" -msgstr "" +msgstr "Sloupec:" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "" +msgstr "Je nutné zadat metodu v cílovém uzlu!" #: tools/editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "" +msgstr "Připojit k uzlu:" #: tools/editor/connections_dialog.cpp #: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp @@ -1249,129 +1295,139 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Add" -msgstr "" +msgstr "Přidat" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Remove" -msgstr "" +msgstr "Odebrat" #: tools/editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "" +msgstr "Přidat další argument volání:" #: tools/editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "" +msgstr "Další argumenty volání:" #: tools/editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "" +msgstr "Cesta k uzlu:" #: tools/editor/connections_dialog.cpp msgid "Make Function" -msgstr "" +msgstr "Vytvořit funkci" #: tools/editor/connections_dialog.cpp msgid "Deferred" -msgstr "" +msgstr "Odloženě" #: tools/editor/connections_dialog.cpp msgid "Oneshot" -msgstr "" +msgstr "Jednorázově" #: tools/editor/connections_dialog.cpp msgid "Connect" -msgstr "" +msgstr "Připojit" #: tools/editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "" +msgstr "Připojit '%s' k '%s'" #: tools/editor/connections_dialog.cpp msgid "Connecting Signal:" -msgstr "" +msgstr "Připojuji signál:" #: tools/editor/connections_dialog.cpp msgid "Create Subscription" -msgstr "" +msgstr "Vytvořit odběr" #: tools/editor/connections_dialog.cpp msgid "Connect.." -msgstr "" +msgstr "Připojit.." #: tools/editor/connections_dialog.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Disconnect" -msgstr "" +msgstr "Odpojit" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "Signály" #: tools/editor/create_dialog.cpp msgid "Create New" -msgstr "" +msgstr "Vytvořit nový" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" +msgstr "Shody:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" msgstr "" #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" -msgstr "" +msgstr "Hledat náhradu za:" #: tools/editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "" +msgstr "Závislosti na:" #: tools/editor/dependency_editor.cpp msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" +"Scéna '%s' se právě upravuje.\n" +"Změny se projeví po opětovném načtení." #: tools/editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will take effect when reloaded." msgstr "" +"Zdroj '%s' se právě používá.\n" +"Změny se projeví po opětovném načtení." #: tools/editor/dependency_editor.cpp msgid "Dependencies" -msgstr "" +msgstr "Závislosti" #: tools/editor/dependency_editor.cpp msgid "Resource" -msgstr "" +msgstr "Zdroj" #: tools/editor/dependency_editor.cpp tools/editor/editor_autoload_settings.cpp #: tools/editor/project_manager.cpp tools/editor/project_settings.cpp msgid "Path" -msgstr "" +msgstr "Cesta" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" -msgstr "" +msgstr "Závislosti:" #: tools/editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "" +msgstr "Opravit nefunkční" #: tools/editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "" +msgstr "Editor závislostí" #: tools/editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "" +msgstr "Hledat náhradní zdroj:" #: tools/editor/dependency_editor.cpp msgid "Owners Of:" -msgstr "" +msgstr "Vlastníci:" #: tools/editor/dependency_editor.cpp msgid "" @@ -1379,42 +1435,44 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" +"Soubory ke smazání potřebují jiné zdroje ke své činnosti.\n" +"Přesto je chcete smazat? (nelze vrátit zpět)" #: tools/editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" -msgstr "" +msgstr "Odebrat vybrané soubory z projektu? (nelze vrátit zpět)" #: tools/editor/dependency_editor.cpp msgid "Error loading:" -msgstr "" +msgstr "Chyba při načítání:" #: tools/editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "" +msgstr "Scénu se nepodařilo načíst kvůli chybějícím závislostem:" #: tools/editor/dependency_editor.cpp msgid "Open Anyway" -msgstr "" +msgstr "Přesto otevřít" #: tools/editor/dependency_editor.cpp msgid "Which action should be taken?" -msgstr "" +msgstr "Jaká akce by se měla provést?" #: tools/editor/dependency_editor.cpp msgid "Fix Dependencies" -msgstr "" +msgstr "Opravit závislosti" #: tools/editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "" +msgstr "Chyby při načítání!" #: tools/editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "" +msgstr "Permanentně smazat %d položek? (nelze vrátit zpět!)" #: tools/editor/dependency_editor.cpp msgid "Owns" -msgstr "" +msgstr "Vlastní" #: tools/editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" @@ -1422,62 +1480,64 @@ msgstr "" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "" +msgstr "Průzkumník sirotků zdrojů" #: tools/editor/dependency_editor.cpp msgid "Delete selected files?" -msgstr "" +msgstr "Odstranit vybrané soubory?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/scene_tree_dock.cpp msgid "Delete" -msgstr "" +msgstr "Odstranit" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name." -msgstr "" +msgstr "Neplatný název." #: tools/editor/editor_autoload_settings.cpp msgid "Valid characters:" -msgstr "" +msgstr "Platné znaky:" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing engine class name." -msgstr "" +msgstr "Neplatný název. Nesmí kolidovat s existující názvem třídy enginu." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." msgstr "" +"Neplatný název. Nesmí kolidovat s existujícím jménem zabudovaného typu." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." msgstr "" +"Neplatný název. Nesmí kolidovat s existujícím názvem globální konstanty." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid Path." -msgstr "" +msgstr "Neplatná cesta." #: tools/editor/editor_autoload_settings.cpp msgid "File does not exist." -msgstr "" +msgstr "Soubor neexistuje." #: tools/editor/editor_autoload_settings.cpp msgid "Not in resource path." -msgstr "" +msgstr "Není v cestě ke zdroji." #: tools/editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "" +msgstr "Přidat AutoLoad" #: tools/editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "" +msgstr "Autoload '%s' už existuje!" #: tools/editor/editor_autoload_settings.cpp msgid "Rename Autoload" -msgstr "" +msgstr "Přejmenovat AutoLoad" #: tools/editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" @@ -1635,10 +1695,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5999,6 +6055,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Přidat vlastnost setter" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Vybrat vše" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/da.po b/tools/translations/da.po new file mode 100644 index 0000000000..640babcf07 --- /dev/null +++ b/tools/translations/da.po @@ -0,0 +1,6596 @@ +# Danish translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# David Lamhauge <davidlamhauge@gmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-08-27 07:06+0000\n" +"Last-Translator: David Lamhauge <davidlamhauge@gmail.com>\n" +"Language-Team: Danish <https://hosted.weblate.org/projects/godot-engine/" +"godot/da/>\n" +"Language: da\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.8-dev\n" + +#: modules/gdscript/gd_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Ugyldigt type argument til convert(), brug TYPE_* konstanter." + +#: modules/gdscript/gd_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "Ikke nok bytes til afkodning af bytes, eller ugyldigt format." + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "trin argument er nul!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "Ikke et script med en instans" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "Ikke baseret på et script" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "Ikke baseret på en ressource fil" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "Ugyldig instans ordbogs format (mangler @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "Ugyldig instans ordbogs format (kan ikke indlæse script ved @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "Ugyldig forekomst ordbog format (ugyldigt script på @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "Ugyldig forekomst ordbog (ugyldige underklasser)" + +#: modules/visual_script/visual_script.cpp +msgid "" +"A node yielded without working memory, please read the docs on how to yield " +"properly!" +msgstr "" +"En node yielded uden arbejdshukommelse, læs venligst dokumenterne for at se " +"hvordan man yielder rigtigt!" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Node yielded, but did not return a function state in the first working " +"memory." +msgstr "" +"Node givet, men returnerede ikke en funktion tilstand i den første " +"arbejdshukommelse." + +#: modules/visual_script/visual_script.cpp +msgid "" +"Return value must be assigned to first element of node working memory! Fix " +"your node please." +msgstr "" +"Returværdien skal tildeles første element af nodens arbejdshukommelse! Fix " +"din node venligst." + +#: modules/visual_script/visual_script.cpp +msgid "Node returned an invalid sequence output: " +msgstr "Node returnerede en ugyldig sekvens output: " + +#: modules/visual_script/visual_script.cpp +msgid "Found sequence bit but not the node in the stack, report bug!" +msgstr "Fundet sekvens bit men ikke noden i stakken, reporter bug!" + +#: modules/visual_script/visual_script.cpp +msgid "Stack overflow with stack depth: " +msgstr "Stakoverløb med stak dybde: " + +#: modules/visual_script/visual_script_editor.cpp +msgid "Functions:" +msgstr "Funktioner:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Variables:" +msgstr "Variable:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "Signaler:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name is not a valid identifier:" +msgstr "Navnet er ikke et gyldigt id:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name already in use by another func/var/signal:" +msgstr "Navnet allerede bruges af en anden func/var/signal:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Function" +msgstr "Omdøb Funktion" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Variable" +msgstr "Omdøbe variablen" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Signal" +msgstr "Omdøb Signal" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function" +msgstr "Tilføj Funktion" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Variable" +msgstr "Tilføj variabel" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Signal" +msgstr "Tilføj Signal" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Function" +msgstr "Fjern Funktion" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Variable" +msgstr "Fjern Variabel" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "Redigerer Variabel:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "Fjern Signal" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "Redigerer Signal:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +msgstr "Tilføj Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Tilføj Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Tilføj Node(r) fra Tree" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Tilføj Getter Egenskab" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Tilføj Setter Egenskab" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "Rediger" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Base Type:" +msgstr "Basis Type:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp +msgid "Members:" +msgstr "Medlemmer:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Available Nodes:" +msgstr "Tilgængelige Noder:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select or create a function to edit graph" +msgstr "Vælg eller Opret en funktion til at redigere graf" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "Luk" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Signal Arguments:" +msgstr "Rediger Signal argumenter:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Variable:" +msgstr "Rediger Variabel:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Skift" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete Selected" +msgstr "Slet Valgte" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/plugins/script_text_editor.cpp +msgid "Toggle Breakpoint" +msgstr "Skift/Toggle Breakpoint" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "Find Node Type" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Sti til Node:" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Input type not iterable: " +msgstr "Input type ikke iterabel: " + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid" +msgstr "Iterator blev ugyldig" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid: " +msgstr "Iterator blev ugyldig: " + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name." +msgstr "Ugyldigt index egenskabsnavn." + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Base object is not a Node!" +msgstr "Base-objekt er ikke en Node!" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Path does not lead Node!" +msgstr "Stien fører ikke til Node!" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name '%s' in node %s." +msgstr "Ugyldigt indeks egenskabsnavn '%s' i noden %s." + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid argument of type: " +msgstr ": Ugyldigt argument af typen: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid arguments: " +msgstr ": Ugyldige argumenter: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableGet not found in script: " +msgstr "VariableGet blev ikke fundet i scriptet: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableSet not found in script: " +msgstr "VariableSet blev ikke fundet i scriptet: " + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Custom node has no _step() method, can't process graph." +msgstr "" +"Brugerdefinerede node har ingen _step() metode, kan ikke behandle graf." + +#: modules/visual_script/visual_script_nodes.cpp +msgid "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "" +"Ugyldig retur værdi fra _step(), skal være heltal (seq ud), eller en streng " +"(fejl)." + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"En SpriteFrames ressource skal oprettes eller angives i egenskaben 'Frames' " +"for at AnimatedSprite kan vise frames." + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"Kun et synligt CanvasModulate er tilladt pr. scene (eller et sæt af " +"instanserede scener). Den første vil blive brugt, mens resten vil blive " +"ignoreret." + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionPolygon2D tjener kun til at give en kollisionsfigur til et " +"CollisionObject2D afledte node. Du skal kun bruge det som et barn af Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. til at give dem en form." + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "En tom CollisionPolygon2D har ingen effekt på kollision." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2D tjener kun til at give en kollision figur til en " +"CollisionObject2D afledte node. Du skal kun bruge det som et barn af Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. til at give dem en form." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" +"En figur skal gives CollisionShape2D for at det fungerer. Opret venligst en " +"figur ressource for den!" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "En tekstur med formen på lyset skal gives til egenskaben 'teksture'." + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" +"En occluder polygon skal angives (eller tegnes) for at denne occluder træder " +"i kraft." + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "Occluder polygon for denne occluder er tom. Tegn venligst en polygon!" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" +"En NavigationPolygon ressource skal sættes eller laves for at denne node kan " +"virke. Sæt venligst en egenskab eller tegn en polygon." + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" +"NavigationPolygonInstance skal være et barn eller barnebarn til en " +"Navigation2D node. Det giver kun navigationsdata." + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" +"ParallaxLayer node virker kun, når den angives som barn af en " +"ParallaxBackground node." + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "Egenskaben Path skal pege på en gyldig Particles2D node for at virke." + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" +"PathFollow2D virker kun, når den angives som et barn af en Path2D node." + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "Egenskaben Path skal pege på en gyldig Node2D node for at virke." + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" +"En SampleLibrary ressource skal oprettes eller angives i egenskaben " +"'samples' for at SamplePlayer kan afspille lyd." + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" +"Egenskaben Path skal pege på en gyldig Viewport node for at virke. Sådan en " +"Viewport skal indstilles til 'render target' tilstand." + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" +"Viewport angivet i egenskaben path skal indstilles som 'render target' for " +"at denne sprite kan virke." + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" +"VisibilityEnable2D fungerer bedst, når det bruges med den redigerede " +"scenerod direkte som parent." + +#: scene/3d/baked_light_instance.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "BakedLightInstance indeholder ikke en BakedLight ressource." + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionShape tjener kun til at give en kollision figur til en " +"CollisionObject afledte node. Du skal kun bruge det som et barn af Area, " +"StaticBody, RigidBody, KinematicBody, etc. til at give dem en form." + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" +"En figur skal gives for at CollisionShape fungerer. Opret en figur ressource " +"til det!" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionPolygon tjener kun til at give en kollision figur til en " +"CollisionObject afledte node. Du skal kun bruge det som et barn af Area, " +"StaticBody, RigidBody, KinematicBody, etc. til at give dem en form." + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "En tom CollisionPolygon har ingen effekt på kollision." + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" +"En NavigationMesh ressource skal laves eller oprettes for at denne node kan " +"fungere." + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" +"NavigationMeshInstance skal være et barn eller barnebarn til en Navigation " +"node. Det giver kun navigationsdata." + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" +"Kun én WorldEnvironment er tilladt pr. scene (eller et sæt af instanserede " +"scener)." + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" +"En SampleLibrary ressource skal oprettes eller angives i egenskaben " +"'samples' for at SpatialSamplePlayer kan afspille lyd." + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" +"En SpriteFrames ressource skal oprettes eller angivets i egenskaben 'Frames' " +"for at AnimatedSprite3D kan vise frames." + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "Annuller" + +#: scene/gui/dialogs.cpp tools/editor/scene_tree_dock.cpp +msgid "OK" +msgstr "Ok" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "Advarsel!" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "Bekræft venligst..." + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "Filen findes, overskrives?" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "Alle Genkendte" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "Alle filer (*)" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/filesystem_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +msgid "Open" +msgstr "Åben" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "Åben en Fil" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "Åben fil(er)" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "Åbn en mappe" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "Åbne en fil eller mappe" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "Gem" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "Gem en fil" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "Opret mappe" + +#: scene/gui/file_dialog.cpp tools/editor/editor_autoload_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "Sti:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "Mapper & filer:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "Fil:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "Filter:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "Navn:" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "Kunne ikke oprette mappe." + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "Skal bruge en gyldig udvidelse." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "Shift+" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "Alt +" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "CTRL +" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "Meta +" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "Enhed" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "Knap" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "Venstre knap." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "Højre knap." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "Midterste knap." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "Hjulet op." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "Hjulet ned." + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "Akse" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "Cut" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "Kopier" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "Indsæt" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "Vælg alle" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "Clear" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "Fortryd" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" +"Popups er skjulte som standard, medmindre du kalder popup() eller nogen af " +"popup*() funktionerne. At gøre dem synlige for redigering er fint, men de " +"bliver skjult under afvikling." + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" +"Denne viewport er ikke angivet som render target. Hvis du har tænkt dig for " +"at vise dens indhold direkte til skærmen, gør det til et barn af Control, så " +"den kan opnå en størrelse. Ellers gør den til en RenderTarget og tildel dens " +"indre textur til en node så den kan vises." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "Fejl under initialisering af FreeType." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "Ukendt skrifttypeformat." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "Error loading skrifttype." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "Ugyldig skriftstørrelse." + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "Deaktiveret" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "All selection" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "Flyt Add Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "Anim Skift Overgang" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "Anim Skift transformering" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "Anim Skift værdi" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "Anim Skift Call" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "Anim tilføj spor" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "Anim Dubliker Keys" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "Flyt Anim spor op" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "Flyt Anim spor ned" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "Fjern Anim spor" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "Sæt overgange til:" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "Anim spor Omdøb" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "Anim spor Skift Interpolation" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "Anim spor Skift værdi Mode" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "Redigere Node kurve" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "Rediger udvalg kurve" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "Anim slet Keys" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "Dubler valg" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "Duplicate transposed" + +#: tools/editor/animation_editor.cpp +msgid "Remove Selection" +msgstr "Fjern markering" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "Kontinuerlig" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "Diskret" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "Udløser" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "Anim Tilføj Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "Anim Flyt Keys" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "Skalering Valg" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "Skaler fra Cursor" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "Goto næste skridt" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "Goto forrige trin" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "Lineær" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstant" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "I" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "Ud" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "Ind-Ud" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "Out-in" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "Overgange" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "Optimer Animation" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "Clean-up Animation" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "Oprette nye spor til %s og indsætte key?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "Oprette %d nye numre og indsætte nøgler?" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "Opret" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "Anim opret & indsæt" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "Anim Indsæt spor & key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "Anim Indsæt key" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "Ændre Anim Len" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "Ændre Anim løkke" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "Anim opret indtastet Value key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "Anim Indsæt" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "Anim Skaler keys" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "Anim tilføj Call Track" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "Animation Zoom." + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "Længde (s):" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "Animation Længde (i sekunder)." + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "Trin (s):" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "Cursor trin snap (i sekunder)." + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "Aktiver/Deaktiver løkker i animation." + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "Tilføje nye tracks." + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "Flyt aktuelle spor op." + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "Flyt aktuelle spor ned." + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "Fjern markerede spor." + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "Spor værktøjer" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "Aktivere redigering af individuelle keys ved at klikke på dem." + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "Anim. optimizer" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "Max. Lineær fejl:" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "Max. Azimutal fejl:" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "Max optimerbar vinkel:" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "Optimer" + +#: tools/editor/animation_editor.cpp +msgid "Select an AnimationPlayer from the Scene Tree to edit animations." +msgstr "Vælg en AnimationPlayer fra Scene Tree for at redigere animationer." + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "Key/Nøgle" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "Overgang" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "Skala forholdet:" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "Kald funktioner i hvilken Node?" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "Fjerne ugyldige keys" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "Fjerne uløste og tomme spor" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "Clean-up alle animationer" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "Clean-Up Animation(-er) (ingen FORTRYD!)" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "Clean-up" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "Ændre størrelsen på Array" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "Skift Array værditype" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "Ændre Array-værdi" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "Søgning:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "Sorter:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "Omvendt" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "Kategori:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "Alle" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "Websted:" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "Støtte..." + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "Officiel" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "Fællesskabet" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "Tester" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "Assets zipfil" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "Metode liste For '%s':" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Kald" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "Metode liste:" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "Argumenter:" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "Tilbage:" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "Gå til linje" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "Linjenummer:" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "Ingen Match" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "Erstattede %d tilfælde." + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "Erstat" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "Erstat alle" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "Match stor/lille" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "Hele ord" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "Kun Valgte" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "Søg" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "Find" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "Næste" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "Erstattede %d tilfælde." + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "Ikke fundet!" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "Erstattes af" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "Baglæns" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "Spørg ved Erstat" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "Spring over" + +#: tools/editor/code_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "Zoom ind" + +#: tools/editor/code_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "Zoom ud" + +#: tools/editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "Nulstil Zoom" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "Linje:" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "Kol:" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "Metode i target Node skal angives!" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "Opret forbindelse til Node:" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "Tilføj" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "Fjern" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "Tilføje ekstra Call Argument:" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "Ekstra call argumenter:" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "Sti til Node:" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "Lav funktion" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "Udskudt" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "OneShot" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "Tilslut" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "Tilslut '%s' til '%s'" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "Forbindelses signal:" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "Opret abonnement" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "Forbind..." + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "Afbryd" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "Signaler" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "Opret en ny" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "Matches:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "Søg erstatning For:" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "Afhængigheder For:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" +"Scene '%s' er i øjeblikket ved at blive redigeret.\n" +"Ændringer træder ikke i kraft, medmindre reloaded." + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" +"Ressource '%s' er i brug.\n" +"Ændringer træder i kraft når genindlæses." + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "Afhængigheder" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "Ressource" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_autoload_settings.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Path" +msgstr "Sti" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "Afhængigheder:" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "Fix brudt" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "Afhængigheds Editor" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/filesystem_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Delete" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid Path." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "File does not exist." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Not in resource path." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Add AutoLoad" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Rearrange Autoloads" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Name" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Back" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Forward" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Up" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Refresh" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Hidden Files" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Favorite" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Mode" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Focus Path" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Move Favorite Up" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Move Favorite Down" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined, select one?\n" +"You can change it later in later in \"Project Settings\" under the " +"'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Selected scene '%s' does not exist, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Selected scene '%s' is not a scene file, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pick a Main Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Next tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Previous tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save all Scenes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Custom Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"Invalid file extension.\n" +"Please use .fnt." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has not surface to create outlines from!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Next script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Previous script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close Docs" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"Built-in scripts can only be edited when the scene they belong to is loaded" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Switch Perspective/Orthogonal view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Insert Animation Key" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Selection" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align Selection With View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "<None>" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Pixel Snap" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Snap" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Auto Slice" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Offset:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Separation:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "The following files failed extraction from package:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Package Installed Successfully!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Install Project:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Install" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one project?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "" +"You are about the scan %s folders for existing Godot projects. Do you " +"confirm?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Select a Folder to Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Tilføj Setter Egenskab" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Vælg alle" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance the scenes at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete (No Confirm)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create a new script for the selected node." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" + +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "Brugerdefineret node har ingen _get_output_port_unsequenced(idx,wmem), " +#~ "men unsequenced porte blev angivet." diff --git a/tools/translations/de.po b/tools/translations/de.po index b4393682e6..4b1fb9d166 100644 --- a/tools/translations/de.po +++ b/tools/translations/de.po @@ -2,12 +2,14 @@ # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. # +# Alexander Mahr <alex.mahr@gmail.com>, 2016. # Andreas Esau <andreasesau@gmail.com>, 2016. # Andreas Haas <liu.gam3@gmail.com>, 2016. # Andreas Hirschauer <andreas@hirschauer-it.de>, 2016. # Christian Fisch <christian.fiesel@gmail.com>, 2016. # danjo <atze@libra.uberspace.de>, 2016. # hyperglow <greensoma@web.de>, 2016. +# Jan Groß <jan@grossit.de>, 2016. # Oliver Ruehl <oliver@ruehldesign.co>, 2016. # Paul-Vincent Roll <paviro@me.com>, 2016. # Peter Friedland <peter_friedland@gmx.de>, 2016. @@ -19,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-08-10 13:41+0000\n" +"PO-Revision-Date: 2016-08-31 15:37+0000\n" "Last-Translator: So Wieso <sowieso@dukun.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" @@ -28,7 +30,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.8-dev\n" +"X-Generator: Weblate 2.8\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -39,11 +41,12 @@ msgstr "" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "Nicht genügend Speicher zum Byte-Dekodieren oder ungültiges Format." +msgstr "" +"Nicht genügend Bytes zum dekodieren des Byte-Strings, oder ungültiges Format." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" -msgstr "Parameter step ist null!" +msgstr "Schrittargument ist null!" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" @@ -51,11 +54,11 @@ msgstr "Skript hat keine Instanz" #: modules/gdscript/gd_functions.cpp msgid "Not based on a script" -msgstr "Basiert nicht auf einem Skript" +msgstr "Nicht auf einem Skript basierend" #: modules/gdscript/gd_functions.cpp msgid "Not based on a resource file" -msgstr "Basiert nicht auf einer Ressource-Datei" +msgstr "Nicht auf einer Resourcendatei basierend" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" @@ -80,40 +83,46 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Ein Node wurde übergeben ohne nötigen Speicher bereitzustellen, korrektes " +"Vorgehen wird in der Dokumentation beschrieben (Stichwort ‚yield‘)!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"Node wurde übergeben, gab aber keinen Funktionszustand am Anfang des Node-" +"Speichers zurück." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"Zurückgegebener Wert muss dem ersten Element im Node-Speicher zugewiesen " +"sein! Bitte entsprechendes Node anpassen." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Node gab ungültige Sequenzausgabe zurück: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" +"Sequenzbit gefunden aber kein entsprechendes Node auf dem Stack, bitte " +"melden Sie den Bug!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Stack-Overflow mit Stack-Tiefe: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Funktion:" +msgstr "Funktionen:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Variable" +msgstr "Variablen:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -121,86 +130,102 @@ msgstr "Signale:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Name ist kein gültiger Bezeichner:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Name wird schon von anderer Funktion, Variablen oder Signal verwendet:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Erstelle Funktion" +msgstr "Funktion umbenennen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Sample umbenennen" +msgstr "Variable umbenennen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Sample umbenennen" +msgstr "Signal umbenennen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Funktion:" +msgstr "Funktion hinzufügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Variable" +msgstr "Variable hinzufügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Signale" +msgstr "Signal hinzufügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Auswahl entfernen" +msgstr "Funktion entfernen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Variable" +msgstr "Variable entfernen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Variable" +msgstr "bearbeite Variable:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Auswahl entfernen" +msgstr "Signal entfernen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Verbinde Signal:" +msgstr "bearbeite Signal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "Node" +msgstr "Node hinzufügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Node(s) From Tree" -msgstr "Node aus Szene" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Meta to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Node hier anhängen" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Node(s) aus Szenenbaum hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Getter-Eigenschaft hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Setter-Eigenschaft hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -210,9 +235,8 @@ msgid "Edit" msgstr "Bearbeiten" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Typ:" +msgstr "Basistyp:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" @@ -220,11 +244,12 @@ msgstr "Mitglieder:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "Verfügbare Nodes:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" msgstr "" +"Zum bearbeiten des Graphen muss eine Funktion ausgewählt oder erstellt weden" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -240,104 +265,110 @@ msgid "Close" msgstr "Schließen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "zusätzliche Aufrufparameter:" +msgstr "Signalparameter bearbeiten:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Variable" +msgstr "Variable bearbeiten:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Änderungen aktualisieren" +msgstr "Ändern" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Ausgewählten Dateien löschen?" +msgstr "Ausgewähltes löschen" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" -msgstr "Setze Haltepunkt" +msgstr "Haltepunkt umschalten" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Finde Nächstes" +msgid "Find Node Type" +msgstr "Finde Node-Typ" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Pose kopieren" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Erzeuge Node" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Pose einfügen" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Eingabetyp nicht iterierbar: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "Iterator wurde ungültig" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "Iterator wurde ungültig: " #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Invalid index property name." -msgstr "Ungültiger Name." +msgstr "Ungültiger Name der Index-Eigenschaft." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "Basis-Objekt ist kein Node!" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "Pfad ist nicht lokal" +msgstr "Pfad führt nicht zu einem Node!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Ungültiger Indexeigenschaftsname ‚%s‘ in Node %s." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "" +msgstr ": Ungültiger Parameter vom Typ: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Ungültiger Name." +msgstr ": Ungültige Parameter: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet nicht im Skript gefunden: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet nicht im Skript gefunden: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" +"Eigens erstelltes Node hat keine _step()-Methode, Graph kann nicht " +"verarbeitet werden." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"Ungültiger Rückgabewert von _step(), muss Integer (für Sequenzausgabe) oder " +"String (für Fehler) sein." #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite to display frames." msgstr "" -"Eine SpriteFrames Ressource muss in der 'Frames' Variable erstellt oder " +"Eine SpriteFrames-Ressource muss in der ‚Frames‘-Eigenschaft erstellt oder " "gesetzt werden, damit AnimatedSprite Einzelbilder darstellen kann." #: scene/2d/canvas_modulate.cpp @@ -345,9 +376,9 @@ msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" -"Nur ein sichtbares CanvasModulate ist pro Szene (oder ein Satz von " -"instanzierten Szenen) erlaubt. Das zuerst erstellte wird funktionieren, " -"während der Rest ignoriert wird." +"Nur ein sichtbares CanvasModulate-Node ist pro Szene (oder einem Satz von " +"instantiierten Szenen) erlaubt. Der zuerst erstellte wird verwendet, der " +"Rest wird ignoriert." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -355,10 +386,10 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionPolygon2D dient nur dazu, einem CollisionObject2D abgeleiteten " -"Knoten eine Form bereitzustellen. Bitte verwenden Sie es nur als Unterobjekt " -"von Area2D, StaticBody2D, RigidBody2D, KinematicBody2D usw. um ihnen eine " -"Form zu geben." +"CollisionPolygon2D liefert nur eine Kollisionsform für ein von " +"CollisionObject2D abgeleitetes Node. Es kann nur als Unterobjekt von Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D usw. eingehängt werden um diesen " +"eine Form zu geben." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." @@ -370,9 +401,10 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D definiert eine Kollisionsmaske für von CollisionObject2D " -"abgeleitete Nodes. Benutze es mit Area2D, StaticBody2D, RigidBody2D, " -"KinematicBody2D usw. um eine Form zu definieren." +"CollisionShape2D liefert nur eine Kollisionsform für ein von " +"CollisionObject2D abgeleitetes Node. Es kann nur als Unterobjekt von Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D usw. eingehängt werden um diesen " +"eine Form zu geben." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -387,7 +419,7 @@ msgid "" "A texture with the shape of the light must be supplied to the 'texture' " "property." msgstr "" -"Eine Textur mit der Form des Lichtkegels muss in der Eigenschaft 'texture' " +"Eine Textur mit der Form des Lichtkegels muss in der ‚Texture‘-Eigenschaft " "angegeben werden." #: scene/2d/light_occluder_2d.cpp @@ -400,16 +432,15 @@ msgstr "" #: scene/2d/light_occluder_2d.cpp msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" msgstr "" -"Das Occluder Polygon für diesen Occlluder ist leer. Bitte zeichne ein " -"Polygon!" +"Das Occluder-Polygon für diesen Occluder ist leer. Bitte zeichne ein Polygon!" #: scene/2d/navigation_polygon.cpp msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" -"Eine NavigationPolygon Ressource muss für diesen Node gesetzt oder erstellt " -"werden, damit er funktioniert. Bitte setze eine Variable oder zeichne ein " +"Eine NavigationPolygon-Ressource muss für dieses Node erstellt oder ihm " +"zugewiesen. Bitte trage die entsprechende Eigenschaft ein oder zeichne ein " "Polygon." #: scene/2d/navigation_polygon.cpp @@ -417,30 +448,31 @@ msgid "" "NavigationPolygonInstance must be a child or grandchild to a Navigation2D " "node. It only provides navigation data." msgstr "" -"NavigationPolygonInstance muss ein Unterobjekt erster oder zweiter Ordnung " -"unterhalb einer Navigation2D Node sein. Es liefert nur Navigationsdaten." +"Eine NavigationPolygon-Instanz muss ein Unterobjekt erster oder zweiter " +"Ordnung unterhalb eines Navigation2D-Node sein. Sie liefert nur " +"Navigationsdaten." #: scene/2d/parallax_layer.cpp msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" -"Die ParallaxLayer Node funktioniert nur als Unterobjekt einer " -"ParallaxBackground Node." +"Das ParallaxLayer-Node lässt sich nur als Unterobjekt eines " +"ParallaxBackground-Node verwenden." #: scene/2d/particles_2d.cpp msgid "Path property must point to a valid Particles2D node to work." -msgstr "Die Pfad-Variable muss auf einen gültigen Particles2D Node verweisen." +msgstr "Die Pfad-Eigenschaft muss auf ein gültiges Particles2D-Node verweisen." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." msgstr "" -"PathFollow2D funktioniert nur, wenn sie als Unterobjekt eines Path2D Nodes " +"PathFollow2D funktioniert nur, wenn es als Unterobjekt eines Path2D-Nodes " "gesetzt wird." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." msgstr "" -"Die Pfad-Variable muss auf einen gültigen Node2D Node zeigen um zu " +"Die Pfad-Eigenschaft muss auf ein gültiges Node2D-Node zeigen um zu " "funktionieren." #: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp @@ -448,8 +480,8 @@ msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SamplePlayer to play sound." msgstr "" -"Eine SampleLibrary Ressource muss in der 'samples' Variable erzeugt oder " -"definiert werden, damit SamplePlayer einen Sound abspielen kann." +"Eine SampleLibrary-Ressource muss unter der Eigenschaft ‚Samples‘ erzeugt " +"oder ausgewählt werden, damit SamplePlayer Ton abspielen kann." #: scene/2d/sprite.cpp msgid "" @@ -464,8 +496,8 @@ msgid "" "The Viewport set in the path property must be set as 'render target' in " "order for this sprite to work." msgstr "" -"Der Viewport der in der Pfad-Variable gesetzt wurde, muss als 'render " -"target' definiert werden, damit das Sprite funktioniert." +"Der Viewport, der in der Pfad-Eigenschaft gesetzt wurde, muss als ‚Render " +"Target‘ definiert sein, damit das Sprite funktioniert." #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -473,7 +505,7 @@ msgid "" "as parent." msgstr "" "VisibilityEnable2D funktioniert am besten, wenn es ein Unterobjekt erster " -"Ordnung der bearbeiteten Hauptszene ist." +"Ordnung der bearbeiteten Szene ist." #: scene/3d/baked_light_instance.cpp msgid "BakedLightInstance does not contain a BakedLight resource." @@ -485,10 +517,9 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" -"CollisionShape dient nur dazu einer dem CollisionObject abgeleiteten Node " -"eine Kollisionsform bereitzustellen. Bitte nutze es nur als ein Unterobjekt " -"von Area, StaticBody, RigidBody, KinematicBody usw. um diesem eine Form zu " -"geben." +"CollisionShape liefert nur eine Kollisionsform für ein von CollisionObject " +"abgeleitetes Node. Es kann nur als Unterobjekt von Area, StaticBody, " +"RigidBody, KinematicBody usw. eingehängt werden um diesen eine Form zu geben." #: scene/3d/body_shape.cpp msgid "" @@ -504,10 +535,9 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygon liefert nur eine Kollisionsform für eine vom " -"CollisionObject abgeleiteten Node. Bitte nutze es nur als eine Unterobjekt " -"von Area, StaticBody, RigidBody, KinematicBody, usw. um diesen eine Form zu " -"geben." +"CollisionPolygon liefert nur eine Kollisionsform für ein von CollisionObject " +"abgeleitetes Node. Es kann nur als Unterobjekt von Area, StaticBody, " +"RigidBody, KinematicBody usw. eingehängt werden um diesen eine Form zu geben." #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." @@ -524,30 +554,31 @@ msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" -"NavigationMeshinstance muss ein Unterobjekt oder Unterunterobjekt von einem " -"Navigations Node sein. Es liefert nur Navigationsdaten." +"Eine NavigationMesh-Instanz muss ein Unterobjekt erster oder höherer Ordnung " +"eines Navigation-Nodes sein. Es liefert nur Navigationsdaten." #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." msgstr "" -"Nur ein WorldEnvironment pro Szene oder (instanzierter Szene) ist erlaubt." +"Pro Szene (oder einem Satz von instanzierten Szenen) ist nur ein einziges " +"WorldEnvironment erlaubt." #: scene/3d/spatial_sample_player.cpp msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SpatialSamplePlayer to play sound." msgstr "" -"Eine SampleLibrary Ressource muss in der 'samples' Eigenschaft erzeugt oder " -"definiert werden damit SpatialSamplePlayer einen Sound abspielen kann." +"Eine SampleLibrary-Ressource muss unter der ‚Samples‘-Eigenschaft erzeugt " +"oder ausgewählt werden, damit SpatialSamplePlayer Ton abspielen kann." #: scene/3d/sprite_3d.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" -"Eine SpriteFrames Ressource muss in der Eigenschaft 'Frames' erzeugt oder " -"definiert werden, damit AnimatedSprite3D Frames anzeigen kann." +"Eine SpriteFrames-Ressource muss in der ‚Frames‘-Eigenschaft erzeugt oder " +"definiert werden, damit AnimatedSprite3D Einzelbilder anzeigen kann." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" @@ -571,7 +602,7 @@ msgstr "Datei existiert bereits. Überschreiben?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "Alle bekannten Dateien" +msgstr "Alle bekannte Dateitypen" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" @@ -580,7 +611,8 @@ msgstr "Alle Dateien (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Öffnen" @@ -654,7 +686,7 @@ msgstr "Eine gültige Datei-Endung muss verwendet werden." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Shift+" -msgstr "Shift+" +msgstr "Umschalt+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -663,7 +695,7 @@ msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "Ctrl+" +msgstr "Strg+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -684,7 +716,7 @@ msgstr "Linke Taste." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Right Button." -msgstr "Rechte Schaltfläche." +msgstr "Rechte Taste." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Middle Button." @@ -762,11 +794,11 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"Dieser Viewport ist nicht als Render-Target gesetzt. Wenn Sie vor haben " -"seinen Inhalt direkt auf dem Bildschirm anzuzeigen, machen Sie es zu einem " -"Kind eines Control-Nodes, damit es eine Größe erben kann. Ansonsten setzen " -"Sie es als Render-Target und weisen Sie der internen Textur einen Knoten zum " -"Anzeigen zu." +"Dieser Viewport ist nicht als Render-Ziel eingestellt. Soll sein Inhalt " +"direkt auf dem Bildschirm angezeigt werden, muss er als Unterobjekt eines " +"Controls eingehängt werden um dessen Größe zu erben. Andernfalls sollte die " +"Eigenschaft ‚Render Target‘ des Viewports aktiviert und seine Textur " +"irgendeinem Node zum Anzeigen zugewiesen werden." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -854,11 +886,11 @@ msgstr "Anim Spur ändere Wert Modus" #: tools/editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "Node Kurve editieren" +msgstr "Node Kurve bearbeiten" #: tools/editor/animation_editor.cpp msgid "Edit Selection Curve" -msgstr "Selektions-Kurve editieren" +msgstr "Selektions-Kurve bearbeiten" #: tools/editor/animation_editor.cpp msgid "Anim Delete Keys" @@ -895,15 +927,15 @@ msgstr "Anim Schlüsselszene hinzufügen" #: tools/editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "Animation Bewegungstasten" +msgstr "Schlüsselbilder bewegen" #: tools/editor/animation_editor.cpp msgid "Scale Selection" -msgstr "Skalierung Auswahl" +msgstr "Auswahl skalieren" #: tools/editor/animation_editor.cpp msgid "Scale From Cursor" -msgstr "Skalierung vom Cursor" +msgstr "Vom Cursor skalieren" #: tools/editor/animation_editor.cpp msgid "Goto Next Step" @@ -952,11 +984,11 @@ msgstr "Animation aufräumen" #: tools/editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "Erstelle einen NEUEN Track für %s und füge einen Key ein?" +msgstr "Erstelle eine NEUE Spur für %s und füge ein Schlüsselbild hinzu?" #: tools/editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "Erstelle %d NEUE Tracks und füge Keys ein?" +msgstr "Erstelle %d NEUE Spuren und füge Schlüsselbilder hinzu?" #: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -973,11 +1005,11 @@ msgstr "Animation Erstellen & Einfügen" #: tools/editor/animation_editor.cpp msgid "Anim Insert Track & Key" -msgstr "Animation Track & Key Einfügen" +msgstr "Spur & Schlüsselbild einfügen" #: tools/editor/animation_editor.cpp msgid "Anim Insert Key" -msgstr "Animation Key Einfügen" +msgstr "Schlüsselbild einfügen" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" @@ -997,11 +1029,11 @@ msgstr "Anim einfügen" #: tools/editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "Animation Skaliere Keys" +msgstr "Skaliere Schlüsselbilder" #: tools/editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "Animation Call Track Einfügen" +msgstr "Aufruf-Spur zu Animation hinzufügen" #: tools/editor/animation_editor.cpp msgid "Animation zoom." @@ -1049,8 +1081,7 @@ msgstr "Spur-Werkzeuge" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "" -"Aktiviere das editieren von individuellen Keys in dem auf sie geclickt wird." +msgstr "Aktiviere individuelle Schlüsselbildbearbeitung durch Anklicken." #: tools/editor/animation_editor.cpp msgid "Anim. Optimizer" @@ -1075,6 +1106,7 @@ msgstr "Optimieren" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." msgstr "" +"Wähle einen AnimationPlayer aus dem Szenenbaum um Animationen zu bearbeiten." #: tools/editor/animation_editor.cpp msgid "Key" @@ -1114,19 +1146,20 @@ msgstr "Aufräumen" #: tools/editor/array_property_edit.cpp msgid "Resize Array" -msgstr "Größe des Feldes ändern" +msgstr "Größe des Arrays ändern" #: tools/editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "Ändere Array Wert Typ" +msgstr "Wertetyp des Arrays ändern" #: tools/editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "Ändere Array Wert" +msgstr "Array-Wert ändern" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Suche:" @@ -1162,15 +1195,15 @@ msgstr "Offiziell" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "Community" +msgstr "Gemeinschaft" #: tools/editor/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "Testen" +msgstr "Testphase" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "ZIP Datei der Projektdaten" +msgstr "Projektdaten als ZIP-Datei" #: tools/editor/call_dialog.cpp msgid "Method List For '%s':" @@ -1206,7 +1239,7 @@ msgstr "Keine Übereinstimmungen" #: tools/editor/code_editor.cpp msgid "Replaced %d Ocurrence(s)." -msgstr "%d mal wurde das Vorkommen ersetzt." +msgstr "Suchbegriff wurde %d mal ersetzt." #: tools/editor/code_editor.cpp msgid "Replace" @@ -1246,7 +1279,7 @@ msgstr "Nächste" #: tools/editor/code_editor.cpp msgid "Replaced %d ocurrence(s)." -msgstr "%d mal wurde das Vorkommen ersetzt." +msgstr "Suchbegriff wurde %d mal ersetzt." #: tools/editor/code_editor.cpp msgid "Not found!" @@ -1284,7 +1317,7 @@ msgstr "Verkleinern" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Vergrößerung zurücksetzen" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1300,7 +1333,7 @@ msgstr "Methode in Ziel-Node muss angegeben werden!" #: tools/editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "Verbinden mit Node:" +msgstr "Verbinde mit Node:" #: tools/editor/connections_dialog.cpp #: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp @@ -1327,15 +1360,15 @@ msgstr "zusätzliche Aufrufparameter:" #: tools/editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "Pfad zur Node:" +msgstr "Pfad zu Node:" #: tools/editor/connections_dialog.cpp msgid "Make Function" -msgstr "Erstelle Funktion" +msgstr "Funktion erstellen" #: tools/editor/connections_dialog.cpp msgid "Deferred" -msgstr "Ausgesetzt" +msgstr "Verzögert" #: tools/editor/connections_dialog.cpp msgid "Oneshot" @@ -1375,10 +1408,16 @@ msgid "Create New" msgstr "Neu erstellen" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Treffer:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Beschreibung:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "Suche Ersatz für:" @@ -1401,7 +1440,7 @@ msgid "" "Changes will take effect when reloaded." msgstr "" "Ressource '%s' wird momentan benutzt.\n" -"Änderungen werden erst nach neu laden aktiv." +"Änderungen werden erst dann aktiv, nachdem neu geladen wurde." #: tools/editor/dependency_editor.cpp msgid "Dependencies" @@ -1422,15 +1461,15 @@ msgstr "Abhängigkeiten:" #: tools/editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "Repariere Nichtfunktionierende" +msgstr "Defekte reparieren" #: tools/editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "Abhängigkeiten-Editor" +msgstr "Abhängigkeiteneditor" #: tools/editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "Suche Ersetzbare Ressource:" +msgstr "Ersatz-Ressource suchen:" #: tools/editor/dependency_editor.cpp msgid "Owners Of:" @@ -1480,19 +1519,19 @@ msgstr "Entferne %d Datei(en) dauerhaft? (Nicht Wiederherstellbar)" #: tools/editor/dependency_editor.cpp msgid "Owns" -msgstr "Gehört zu" +msgstr "Besitzt" #: tools/editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "Ressource Ohne Direkte Zugehörigkeit:" +msgstr "Ressource ohne direkte Zugehörigkeit:" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "Ressourcen Explorer Für Verwaiste Dateien" +msgstr "Ressourcenauflistung verwaister Dateien" #: tools/editor/dependency_editor.cpp msgid "Delete selected files?" -msgstr "Ausgewählten Dateien löschen?" +msgstr "Ausgewählte Dateien löschen?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp @@ -1552,7 +1591,6 @@ msgid "Rename Autoload" msgstr "Autoload umbenennen" #: tools/editor/editor_autoload_settings.cpp -#, fuzzy msgid "Toggle AutoLoad Globals" msgstr "Autoload-Globals umschalten" @@ -1589,7 +1627,7 @@ msgstr "Singleton" #: tools/editor/editor_autoload_settings.cpp msgid "List:" -msgstr "" +msgstr "Liste:" #: tools/editor/editor_data.cpp msgid "Updating Scene" @@ -1625,7 +1663,7 @@ msgstr "Hoch" #: tools/editor/editor_file_dialog.cpp msgid "Refresh" -msgstr "Neu laden" +msgstr "Aktualisieren" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" @@ -1640,17 +1678,16 @@ msgid "Toggle Mode" msgstr "Modus umschalten" #: tools/editor/editor_file_dialog.cpp -#, fuzzy msgid "Focus Path" msgstr "Zu Pfad springen" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "Favoriten nach oben schieben" +msgstr "Favorit nach oben schieben" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "Favoriten nach unten schieben" +msgstr "Favorit nach unten schieben" #: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp msgid "Favorites:" @@ -1666,7 +1703,7 @@ msgstr "Vorschau:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" -msgstr "Scanne Quellen" +msgstr "Lese Quellen" #: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Search Help" @@ -1699,20 +1736,16 @@ msgstr "Kurze Beschreibung:" #: tools/editor/editor_help.cpp msgid "Public Methods:" -msgstr "Public Methoden:" +msgstr "Öffentliche Methoden:" #: tools/editor/editor_help.cpp msgid "GUI Theme Items:" -msgstr "GUI Theme Einträge:" +msgstr "GUI-Theme-Elemente:" #: tools/editor/editor_help.cpp msgid "Constants:" msgstr "Konstanten:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Beschreibung:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Methoden Beschreibung:" @@ -1759,7 +1792,7 @@ msgstr " Ausgabe:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" -msgstr "Re-Import" +msgstr "Importiere erneut" #: tools/editor/editor_node.cpp msgid "Importing:" @@ -1787,7 +1820,7 @@ msgstr "Verstehe..." #: tools/editor/editor_node.cpp msgid "Can't open file for writing:" -msgstr "Kann Datei zum schreiben nicht öffnen:" +msgstr "Datei kann nicht zum schreiben geöffnet werden:" #: tools/editor/editor_node.cpp msgid "Requested file format unknown:" @@ -1813,8 +1846,8 @@ msgstr "Erzeuge Miniaturansicht" msgid "" "Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." msgstr "" -"Szene konnte nicht gespeichert werden. Wahrscheinliche Abhängigkeiten " -"(Instanzen) sind nicht erfüllt." +"Szene konnte nicht gespeichert werden. Wahrscheinlich werden Abhängigkeiten " +"(Instanzen) nicht erfüllt." #: tools/editor/editor_node.cpp msgid "Failed to load resource." @@ -1822,7 +1855,7 @@ msgstr "Laden der Ressource gescheitert." #: tools/editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "MeshLibrary zum vereinen konnte nicht geladen werden!" +msgstr "MeshLibrary konnte nicht zum vereinen geladen werden!" #: tools/editor/editor_node.cpp msgid "Error saving MeshLibrary!" @@ -1830,7 +1863,7 @@ msgstr "Fehler beim speichern der MeshLibrary!" #: tools/editor/editor_node.cpp msgid "Can't load TileSet for merging!" -msgstr "TileSet zum vereinen kann nicht geladen werden!" +msgstr "TileSet konnte nicht zum vereinen geladen werden!" #: tools/editor/editor_node.cpp msgid "Error saving TileSet!" @@ -1838,11 +1871,11 @@ msgstr "Fehler beim speichern des TileSet!" #: tools/editor/editor_node.cpp msgid "Can't open export templates zip." -msgstr "\"Export Templates Zip\" kann nicht geöffnet werden." +msgstr "Exportvorlagen-ZIP-Datei konnte nicht geöffnet werden." #: tools/editor/editor_node.cpp msgid "Loading Export Templates" -msgstr "Lade Export Templates" +msgstr "Lade Exportvorlagen" #: tools/editor/editor_node.cpp msgid "Error trying to save layout!" @@ -1850,7 +1883,7 @@ msgstr "Fehler beim speichern des Layouts!" #: tools/editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "Standard Editor Layout überschrieben." +msgstr "Standard-Editorlayout überschrieben." #: tools/editor/editor_node.cpp msgid "Layout name not found!" @@ -1858,24 +1891,24 @@ msgstr "Layout Name nicht gefunden!" #: tools/editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "Layout zu Standard Einstellungen zurückgesetzt." +msgstr "Layout wurde auf die Standardeinstellungen zurückgesetzt." #: tools/editor/editor_node.cpp msgid "Copy Params" -msgstr "Parameter Kopieren" +msgstr "Parameter kopieren" #: tools/editor/editor_node.cpp msgid "Paste Params" -msgstr "Parameter Einfügen" +msgstr "Parameter einfügen" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "Ressource Einfügen" +msgstr "Ressource einfügen" #: tools/editor/editor_node.cpp msgid "Copy Resource" -msgstr "Ressource Kopieren" +msgstr "Ressource kopieren" #: tools/editor/editor_node.cpp msgid "Make Built-In" @@ -1926,7 +1959,7 @@ msgstr "" msgid "Current scene was never saved, please save it prior to running." msgstr "" "Die aktuelle Szene wurde noch nicht gespeichert, bitte speichere sie vor dem " -"starten." +"Starten." #: tools/editor/editor_node.cpp msgid "Could not start subprocess!" @@ -1934,19 +1967,19 @@ msgstr "Unterprozess konnte nicht gestartet werden!" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "Szene Öffnen" +msgstr "Szene öffnen" #: tools/editor/editor_node.cpp msgid "Open Base Scene" -msgstr "Basis Szene Öffnen" +msgstr "Basisszene öffnen" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "Schnelles Szenen Öffnen.." +msgstr "Schnell Szenen öffnen.." #: tools/editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "Schnelles Script Öffnen.." +msgstr "Schnell Skripte öffnen.." #: tools/editor/editor_node.cpp msgid "Yes" @@ -1958,11 +1991,11 @@ msgstr "Szene schließen? (Nicht gespeicherte Änderungen gehen verloren)" #: tools/editor/editor_node.cpp msgid "Save Scene As.." -msgstr "Szene Speichern Als.." +msgstr "Szene speichern als.." #: tools/editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "Diese Szene wurde nie gespeichert. Speichern vor dem starten?" +msgstr "Diese Szene wurde nie gespeichert. Speichern vorm Starten?" #: tools/editor/editor_node.cpp msgid "Please save the scene first." @@ -1970,15 +2003,15 @@ msgstr "Bitte speichere die Szene zuerst." #: tools/editor/editor_node.cpp msgid "Save Translatable Strings" -msgstr "Speichere Übersetzbare Zeichen" +msgstr "Speichere übersetzbare Zeichenketten" #: tools/editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "Mesh Library exportieren" +msgstr "MeshLibrary exportieren" #: tools/editor/editor_node.cpp msgid "Export Tile Set" -msgstr "Tile Set Exportieren" +msgstr "Tileset exportieren" #: tools/editor/editor_node.cpp msgid "Quit" @@ -1995,7 +2028,7 @@ msgstr "Die aktuelle Szene ist nicht gespeichert. Trotzdem öffnen?" #: tools/editor/editor_node.cpp msgid "Can't reload a scene that was never saved." msgstr "" -"Szene kann nicht neu geladen werden wenn sie vorher nicht gespeichert wurde." +"Szene kann nicht neu geladen werden, wenn sie vorher nicht gespeichert wurde." #: tools/editor/editor_node.cpp msgid "Revert" @@ -2008,15 +2041,15 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "Szene Schnell Starten.." +msgstr "Schnell Szene starten.." #: tools/editor/editor_node.cpp msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" msgstr "" -"Projektmanager Öffnen?\n" -"(Nichtgespeicherte Änderungen gehen verloren)" +"Projektverwaltung öffnen?\n" +"(Nicht gespeicherte Änderungen gehen verloren)" #: tools/editor/editor_node.cpp msgid "Pick a Main Scene" @@ -2031,9 +2064,9 @@ msgid "" "Error loading scene, it must be inside the project path. Use 'Import' to " "open the scene, then save it inside the project path." msgstr "" -"Fehler beim laden der Szene, sie muss innerhalb des Projekt Pfades liegen. " -"Nutze 'Import' um die Szene zu öffnen, dann speichere sie innherhalb des " -"Projekt Pfades." +"Fehler beim Laden der Szene. Sie muss innerhalb des Projektpfads liegen. Zum " +"Beheben kann ‚Import→Szene‘ verwendet werden um sie zu öffnen. Danach sollte " +"die Szene innerhalb des Projektpfades gespeichert werden." #: tools/editor/editor_node.cpp msgid "Error loading scene." @@ -2041,15 +2074,15 @@ msgstr "Fehler beim laden der Szene." #: tools/editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "Szene '%s' hat ungelöste Abhängigkeiten:" +msgstr "Szene '%s' hat defekte Abhängigkeiten:" #: tools/editor/editor_node.cpp msgid "Save Layout" -msgstr "Layout Speichern" +msgstr "Layout speichern" #: tools/editor/editor_node.cpp msgid "Delete Layout" -msgstr "Layout Löschen" +msgstr "Layout löschen" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -2057,7 +2090,7 @@ msgstr "Standard" #: tools/editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "Wechsle Szenen Tab" +msgstr "Szenentab wechseln" #: tools/editor/editor_node.cpp msgid "%d more file(s)" @@ -2089,9 +2122,8 @@ msgid "Next tab" msgstr "Nächster Tab" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Previous tab" -msgstr "Voriger Tab" +msgstr "Vorheriger Tab" #: tools/editor/editor_node.cpp msgid "Operations with scene files." @@ -2103,15 +2135,15 @@ msgstr "Neue Szene" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "Neue vererbte Szene.." +msgstr "Neue gererbte Szene.." #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "Szene Öffnen.." +msgstr "Szene öffnen.." #: tools/editor/editor_node.cpp msgid "Save Scene" -msgstr "Szene Speichern" +msgstr "Szene speichern" #: tools/editor/editor_node.cpp msgid "Save all Scenes" @@ -2119,27 +2151,27 @@ msgstr "Alle Szenen speichern" #: tools/editor/editor_node.cpp msgid "Close Scene" -msgstr "Szene Schliessen" +msgstr "Szene schließen" #: tools/editor/editor_node.cpp msgid "Close Goto Prev. Scene" -msgstr "Schließen Zu Vorh. Szene Gehen" +msgstr "Schließen und zur letzten Szene wechseln" #: tools/editor/editor_node.cpp msgid "Open Recent" -msgstr "Zuletzt benutzte Scenen" +msgstr "Zuletzt benutzte Szenen" #: tools/editor/editor_node.cpp msgid "Quick Filter Files.." -msgstr "Schnelle Filter Dateien.." +msgstr "Schnell Dateien filtern.." #: tools/editor/editor_node.cpp msgid "Convert To.." -msgstr "Umwandeln Zu.." +msgstr "Umwandeln zu.." #: tools/editor/editor_node.cpp msgid "Translatable Strings.." -msgstr "Übersetzbare Zeichen.." +msgstr "Übersetzbare Textbausteine.." #: tools/editor/editor_node.cpp msgid "MeshLibrary.." @@ -2156,7 +2188,7 @@ msgstr "Wiederherstellen" #: tools/editor/editor_node.cpp msgid "Run Script" -msgstr "Script Starten" +msgstr "Skript ausführen" #: tools/editor/editor_node.cpp msgid "Project Settings" @@ -2164,15 +2196,15 @@ msgstr "Projekteinstellungen" #: tools/editor/editor_node.cpp msgid "Revert Scene" -msgstr "Szene Zurücksetzen" +msgstr "Szene zurücksetzen" #: tools/editor/editor_node.cpp msgid "Quit to Project List" -msgstr "Verlasse zu Projekt Liste" +msgstr "Verlasse zur Projektverwaltung" #: tools/editor/editor_node.cpp msgid "Import assets to the project." -msgstr "Importiere Assets zum Projekt." +msgstr "Importiere Medieninhalte ins Projekt." #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp @@ -2188,7 +2220,7 @@ msgstr "Import" #: tools/editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "Verschiedene Projekte oder Szenenweite Werkzeuge." +msgstr "Sonstiges Projekt oder szenenübergreifende Werkzeuge." #: tools/editor/editor_node.cpp msgid "Tools" @@ -2196,7 +2228,7 @@ msgstr "Werkzeuge" #: tools/editor/editor_node.cpp msgid "Export the project to many platforms." -msgstr "Exportiere Projekt für viele Plattformen." +msgstr "Exportiere das Projekt für viele Plattformen." #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export" @@ -2213,7 +2245,7 @@ msgstr "Abspielen" #: tools/editor/editor_node.cpp msgid "Pause the scene" -msgstr "Pausiere die Szene" +msgstr "Szene pausieren" #: tools/editor/editor_node.cpp msgid "Pause Scene" @@ -2221,7 +2253,7 @@ msgstr "Szene pausieren" #: tools/editor/editor_node.cpp msgid "Stop the scene." -msgstr "Stoppe die Szene." +msgstr "Szene stoppen." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -2230,7 +2262,7 @@ msgstr "Stop" #: tools/editor/editor_node.cpp msgid "Play the edited scene." -msgstr "Spiele die editierte Szene." +msgstr "Spiele die bearbeitete Szene." #: tools/editor/editor_node.cpp msgid "Play Scene" @@ -2241,17 +2273,16 @@ msgid "Play custom scene" msgstr "Spiele angepasste Szene" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Custom Scene" msgstr "Spiele angepasste Szene" #: tools/editor/editor_node.cpp msgid "Debug options" -msgstr "Debug Optionen" +msgstr "Fehlerbehebungsoptionen" #: tools/editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "Mit Remote Debug starten" +msgstr "Mit Fern-Fehlerbehebung starten" #: tools/editor/editor_node.cpp msgid "" @@ -2259,11 +2290,11 @@ msgid "" "connect to the IP of this computer in order to be debugged." msgstr "" "Beim Exportieren oder Starten wird das Programm versuchen, sich mit der IP-" -"Adresse dieses Computers zu verbinden, um debugged werden zu können." +"Adresse dieses Computers zu verbinden, um Fehler beheben zu können." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "Small Deploy mit Netzwerkdateisystem" +msgstr "Kleine Programmdatei über ein Netzwerkdateisystem" #: tools/editor/editor_node.cpp msgid "" @@ -2307,7 +2338,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "Synchronisiere Szene Änderungen" +msgstr "Szenenänderungen synchronisieren" #: tools/editor/editor_node.cpp msgid "" @@ -2318,12 +2349,12 @@ msgid "" msgstr "" "Wenn diese Option gewählt ist, werden jegliche Änderungen der Szene im " "Editor im laufenden Spiel dargestellt.\n" -"Wenn dies über die Remote Funktion genutzt wird ist es effizienter mit dem " -"Netzwerk Dateisystem." +"Sollte dies beim Abspielen auf externen Geräten genutzt werden, ist es am " +"effizientesten das Netzwerk-Dateisystem zu nutzen." #: tools/editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "Synchronisiere Script Änderungen" +msgstr "Skriptänderungen synchronisieren" #: tools/editor/editor_node.cpp msgid "" @@ -2332,10 +2363,10 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"Wenn diese Option gewählt ist, wird jeglich gespeichertes Script während des " -"laufenden Spiels neu geladen.\n" -"Wenn dies über die Remote Funktion genutzt wird ist es effizienter mit dem " -"Netzwerk Dateisystem." +"Wenn diese Option gewählt ist, werden erneut gespeicherte Skripte während " +"des laufenden Spiels neu geladen.\n" +"Sollte dies beim Abspielen auf externen Geräten genutzt werden, ist es am " +"effizientesten das Netzwerk-Dateisystem zu nutzen." #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" @@ -2343,15 +2374,15 @@ msgstr "Einstellungen" #: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "Editor-Einstellungen" +msgstr "Editoreinstellungen" #: tools/editor/editor_node.cpp msgid "Editor Layout" -msgstr "Editor Layout" +msgstr "Editorlayout" #: tools/editor/editor_node.cpp msgid "Install Export Templates" -msgstr "Export Templates installieren" +msgstr "Exportvorlagen installieren" #: tools/editor/editor_node.cpp msgid "About" @@ -2359,11 +2390,11 @@ msgstr "Über" #: tools/editor/editor_node.cpp msgid "Alerts when an external resource has changed." -msgstr "Schlägt Alarm falls sich eine externe Ressource verändert hat." +msgstr "Signalisiert, wenn sich eine externe Ressource verändert hat." #: tools/editor/editor_node.cpp msgid "Spins when the editor window repaints!" -msgstr "Rotiert wenn das Editor Fenster neu gezeichnet wird!" +msgstr "Dreht sich, wenn das Editorfenster neu gezeichnet wird!" #: tools/editor/editor_node.cpp msgid "Update Always" @@ -2379,15 +2410,15 @@ msgstr "Inspektor" #: tools/editor/editor_node.cpp msgid "Create a new resource in memory and edit it." -msgstr "Erstelle eine neue Ressource im Speicher und editiere sie." +msgstr "Erstelle eine neue Ressource im Speicher und bearbeite sie." #: tools/editor/editor_node.cpp msgid "Load an existing resource from disk and edit it." -msgstr "Lade eine bestehende Ressource von der Festplatte und editiere sie." +msgstr "Lade eine bestehende Ressource von der Festplatte und bearbeite sie." #: tools/editor/editor_node.cpp msgid "Save the currently edited resource." -msgstr "Speichere die so eben editierte Ressource." +msgstr "Speichere die so eben bearbeitete Ressource." #: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." @@ -2395,19 +2426,19 @@ msgstr "Speichern als.." #: tools/editor/editor_node.cpp msgid "Go to the previous edited object in history." -msgstr "Gehe zum vorherigen editierten Objekt im Verlauf." +msgstr "Gehe zum vorherigen bearbeiteten Objekt im Verlauf." #: tools/editor/editor_node.cpp msgid "Go to the next edited object in history." -msgstr "Gehe zum nächsten editierten Objekt im Verlauf." +msgstr "Gehe zum nächsten bearbeiteten Objekt im Verlauf." #: tools/editor/editor_node.cpp msgid "History of recently edited objects." -msgstr "Verlauf der zuletzt editierten Objekte." +msgstr "Verlauf der zuletzt bearbeiteten Objekte." #: tools/editor/editor_node.cpp msgid "Object properties." -msgstr "Objekt Eigenschaften." +msgstr "Objekteigenschaften." #: tools/editor/editor_node.cpp msgid "FileSystem" @@ -2419,7 +2450,7 @@ msgstr "Ausgabe" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Import" -msgstr "Re-Import" +msgstr "Neuimport" #: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp msgid "Update" @@ -2427,7 +2458,7 @@ msgstr "Update" #: tools/editor/editor_node.cpp msgid "Thanks from the Godot community!" -msgstr "Ein Dank von der Godot Community!" +msgstr "Danke von der Godot-Gemeinschaft!" #: tools/editor/editor_node.cpp msgid "Thanks!" @@ -2435,7 +2466,7 @@ msgstr "Danke!" #: tools/editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "Importiere Templates Aus ZIP Datei" +msgstr "Vorlagen aus ZIP-Datei importieren" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export Project" @@ -2443,11 +2474,11 @@ msgstr "Projekt exportieren" #: tools/editor/editor_node.cpp msgid "Export Library" -msgstr "Export Bibliothek" +msgstr "Bibliothek exportieren" #: tools/editor/editor_node.cpp msgid "Merge With Existing" -msgstr "Vereine Mit Existierenden" +msgstr "Mit existierendem vereinen" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Password:" @@ -2455,15 +2486,15 @@ msgstr "Passwort:" #: tools/editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "Script Öffnen & Starten" +msgstr "Skript öffnen und ausführen" #: tools/editor/editor_node.cpp msgid "Load Errors" -msgstr "Lade Fehler" +msgstr "Ladefehler" #: tools/editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "Installierte Plugins:" +msgstr "Installierte Erweiterungen:" #: tools/editor/editor_plugin_settings.cpp msgid "Version:" @@ -2479,15 +2510,15 @@ msgstr "Status:" #: tools/editor/editor_profiler.cpp msgid "Stop Profiling" -msgstr "Profiling Stoppen" +msgstr "Laufzeitanalyse beenden" #: tools/editor/editor_profiler.cpp msgid "Start Profiling" -msgstr "Profiling Starten" +msgstr "Laufzeitanalyse starten" #: tools/editor/editor_profiler.cpp msgid "Measure:" -msgstr "Maße:" +msgstr "Messung:" #: tools/editor/editor_profiler.cpp msgid "Frame Time (sec)" @@ -2495,7 +2526,7 @@ msgstr "Bild Zeit (Sek)" #: tools/editor/editor_profiler.cpp msgid "Average Time (sec)" -msgstr "Durchschnitts Zeit (Sek)" +msgstr "Durchschnittszeit (Sek)" #: tools/editor/editor_profiler.cpp msgid "Frame %" @@ -2523,7 +2554,7 @@ msgstr "Bild #:" #: tools/editor/editor_reimport_dialog.cpp msgid "Please wait for scan to complete." -msgstr "Bitte warten bis der Scan abgeschlossen ist." +msgstr "Bitte warten bis Operation abgeschlossen ist." #: tools/editor/editor_reimport_dialog.cpp msgid "Current scene must be saved to re-import." @@ -2531,19 +2562,19 @@ msgstr "Aktuelle Szene muss gespeichert sein um sie erneut zu importieren." #: tools/editor/editor_reimport_dialog.cpp msgid "Save & Re-Import" -msgstr "Speichern & erneut importieren" +msgstr "Speichern & neu importieren" #: tools/editor/editor_reimport_dialog.cpp msgid "Re-Import Changed Resources" -msgstr "Veränderte Ressourcen Neu Importieren" +msgstr "Veränderte Ressourcen neu importieren" #: tools/editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "Schreibe die Logik in die _run() Methode." +msgstr "Spiellogik sollte mit der _run()-Methode beginnen." #: tools/editor/editor_run_script.cpp msgid "There is an edited scene already." -msgstr "Es besteht eine editierte Szene bereits." +msgstr "Es besteht bereits eine bearbeitete Szene." #: tools/editor/editor_run_script.cpp msgid "Couldn't instance script:" @@ -2563,7 +2594,7 @@ msgstr "Hast du die '_run' Methode vergessen?" #: tools/editor/editor_settings.cpp msgid "Default (Same as Editor)" -msgstr "Standard (Dasselbe wie der Editor)" +msgstr "Standard (wie Editor)" #: tools/editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -2571,53 +2602,53 @@ msgstr "Selektiere Node(s) für den Import" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "Szenen Pfad:" +msgstr "Szenenpfad:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" -msgstr "Importiere Aus Einem Node:" +msgstr "Aus Node importieren:" #: tools/editor/file_type_cache.cpp msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" msgstr "" -"fil_type_cache.cch kann nicht mit Schreibzugriff geöffnet werden, file type " -"cache wird nicht gespeichert!" +"Die Datei 'file_type_cache.cch' konnte nicht zum schreiben geöffnet werden. " +"Der Dateityp-Cache wird nicht gespeichert!" #: tools/editor/filesystem_dock.cpp msgid "Same source and destination files, doing nothing." -msgstr "" +msgstr "Quell- und Zieldatei sind gleich, ignoriere Anweisung." #: tools/editor/filesystem_dock.cpp msgid "Same source and destination paths, doing nothing." -msgstr "" +msgstr "Quell- und Zielpfad sind gleich, ignoriere Anweisung." #: tools/editor/filesystem_dock.cpp msgid "Can't move directories to within themselves." -msgstr "" +msgstr "Verzeichnisse lassen sich nicht in sich selbst verschieben." #: tools/editor/filesystem_dock.cpp msgid "Can't operate on '..'" -msgstr "" +msgstr "Kann mit ‚..‘ nicht arbeiten" #: tools/editor/filesystem_dock.cpp msgid "Pick New Name and Location For:" -msgstr "" +msgstr "Wähle neuen Namen und Ort für:" #: tools/editor/filesystem_dock.cpp msgid "No files selected!" -msgstr "" +msgstr "Keine Dateien ausgewählt!" #: tools/editor/filesystem_dock.cpp msgid "Instance" -msgstr "" +msgstr "Instanz" #: tools/editor/filesystem_dock.cpp msgid "Edit Dependencies.." -msgstr "Bearbeiten Abhängigkeiten.." +msgstr "Abhängigkeiten bearbeiten.." #: tools/editor/filesystem_dock.cpp msgid "View Owners.." -msgstr "" +msgstr "Zeige Besitzer.." #: tools/editor/filesystem_dock.cpp msgid "Copy Path" @@ -2625,11 +2656,11 @@ msgstr "Pfad kopieren" #: tools/editor/filesystem_dock.cpp msgid "Rename or Move.." -msgstr "" +msgstr "Umbenennen oder Verschieben.." #: tools/editor/filesystem_dock.cpp msgid "Move To.." -msgstr "" +msgstr "Verschiebe zu.." #: tools/editor/filesystem_dock.cpp msgid "Info" @@ -2641,11 +2672,11 @@ msgstr "Zeige im Dateimanager" #: tools/editor/filesystem_dock.cpp msgid "Re-Import.." -msgstr "Re-Import.." +msgstr "Neuimport.." #: tools/editor/filesystem_dock.cpp msgid "Previous Directory" -msgstr "" +msgstr "Vorheriges Verzeichnis" #: tools/editor/filesystem_dock.cpp msgid "Next Directory" @@ -2653,67 +2684,67 @@ msgstr "Nächstes Verzeichnis" #: tools/editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" -msgstr "" +msgstr "Dateisystem erneut einlesen" #: tools/editor/filesystem_dock.cpp msgid "Toggle folder status as Favorite" -msgstr "" +msgstr "Favoriten-Verzeichnisstatus umschalten" #: tools/editor/filesystem_dock.cpp msgid "Instance the selected scene(s) as child of the selected node." -msgstr "" +msgstr "Instantiiere gewählte Szene(n) als Unterobjekt des ausgewählten Nodes." #: tools/editor/filesystem_dock.cpp msgid "Move" -msgstr "" +msgstr "Verschieben" #: tools/editor/groups_editor.cpp msgid "Add to Group" -msgstr "Füge Gruppe hinzu" +msgstr "Zu Gruppe hinzufügen" #: tools/editor/groups_editor.cpp msgid "Remove from Group" -msgstr "Entferne aus Gruppe" +msgstr "Aus Gruppe entfernen" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "No bit masks to import!" -msgstr "Keine Bit Masken zu importieren!" +msgstr "Keine Bitmasken zu importieren!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path is empty." -msgstr "Ziel Pfad ist leer." +msgstr "Zielpfad ist leer." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must be a complete resource path." -msgstr "Ziel Pfad muss ein kompletter Ressourcen Pfad sein." +msgstr "Zielpfad muss ein kompletter Ressourcenpfad sein." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must exist." -msgstr "Ziel Pfad muss existieren." +msgstr "Zielpfad muss existieren." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Save path is empty!" -msgstr "Speicher Pfad ist leer!" +msgstr "Speicherpfad ist leer!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Import BitMasks" -msgstr "Importiere BitMasks" +msgstr "BitMasks importieren" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s):" -msgstr "Quell Textur(en):" +msgstr "Quelltextur(en):" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp @@ -2722,7 +2753,7 @@ msgstr "Quell Textur(en):" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Target Path:" -msgstr "Ziel Pfad:" +msgstr "Zielpfad:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -2735,15 +2766,15 @@ msgstr "Akzeptieren" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "Bit Maske" +msgstr "Bitmaske" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" -msgstr "Kein Quell Font gefunden!" +msgstr "Keine Quellschriftart-Datei gefunden!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No target font resource!" -msgstr "Keine Ziel Font Ressource!" +msgstr "Keine Zielschriftart-Ressource!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "" @@ -2755,23 +2786,23 @@ msgstr "" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Can't load/process source font." -msgstr "Quell Font kann nicht geladen/verarbeitet werden." +msgstr "Quellschriftart kann nicht geladen/verarbeitet werden." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Couldn't save font." -msgstr "Font konnte nicht gespeichert werden." +msgstr "Schriftart konnte nicht gespeichert werden." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font:" -msgstr "Quell Font:" +msgstr "Quellschriftart:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font Size:" -msgstr "Quell Font Größe:" +msgstr "Quellschriftgröße:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Dest Resource:" -msgstr "Ziel Ressource:" +msgstr "Ziel-Ressource:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "The quick brown fox jumps over the lazy dog." @@ -2790,28 +2821,28 @@ msgstr "Optionen:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Font Import" -msgstr "Font Import" +msgstr "Schriftart importieren" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "" "This file is already a Godot font file, please supply a BMFont type file " "instead." msgstr "" -"Diese Datei ist bereits eine Godot Font Datei, bitte gib eine BMFont Datei " -"anstelle an." +"Diese Datei ist bereits eine Godot Schriftart. Bitte stattdessen eine Datei " +"im BMFont-Format angeben." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Failed opening as BMFont file." -msgstr "Öffnen der BMFont Datei fehlgeschlagen." +msgstr "Öffnen der BMFont-Datei fehlgeschlagen." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Invalid font custom source." -msgstr "Unzulässige eigene Font Ressource." +msgstr "Eigene Schriftart-Quelle ist ungültig." #: tools/editor/io_plugins/editor_font_import_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Font" -msgstr "Schrift" +msgstr "Schriftart" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "No meshes to import!" @@ -2819,7 +2850,7 @@ msgstr "Keine Meshes zu importieren!" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Single Mesh Import" -msgstr "Einzel Mesh Import" +msgstr "Einzelnes Mesh importieren" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Source Mesh(es):" @@ -2836,11 +2867,11 @@ msgstr "Oberfläche %d" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "No samples to import!" -msgstr "Keine Beispiele zu importieren!" +msgstr "Keine Samples zu importieren!" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Import Audio Samples" -msgstr "Audio Samples Importieren" +msgstr "Audio-Samples importieren" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Source Sample(s):" @@ -2848,7 +2879,7 @@ msgstr "Quell Sample(s):" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Audio Sample" -msgstr "Audio Sample" +msgstr "Audio-Sample" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "New Clip" @@ -2856,7 +2887,7 @@ msgstr "Neuer Clip" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Animation Options" -msgstr "Animations Einstellungen" +msgstr "Animationseinstellungen" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Flags" @@ -2864,26 +2895,25 @@ msgstr "Flags" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Bake FPS:" -msgstr "FPS Backen:" +msgstr "FPS fixieren:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Optimizer" -msgstr "Optimierer" +msgstr "Optimierung" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Linear Error" -msgstr "Lineare Fehlergrenze" +msgstr "Obere lineare Fehlergrenze" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angular Error" -msgstr "Angulare Fehlergrenze" +msgstr "Obere Winkelfehlergrenze" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angle" msgstr "Maximaler Winkel" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#, fuzzy msgid "Clips" msgstr "Ausschnitte" @@ -2906,7 +2936,7 @@ msgstr "Filter" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source path is empty." -msgstr "Quell Pfad ist leer." +msgstr "Quellpfad ist leer." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script." @@ -2914,7 +2944,7 @@ msgstr "Post-Import Skript konnte nicht geladen werden." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import." -msgstr "Fehlerhaftes Skript für Post-Import." +msgstr "Ungültiges / Fehlerhaftes Skript für Post-Import." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error importing scene." @@ -2922,11 +2952,11 @@ msgstr "Fehler beim importieren der Szene." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import 3D Scene" -msgstr "3D Szene Importieren" +msgstr "3D-Szene importieren" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source Scene:" -msgstr "Quell Szene:" +msgstr "Quellszene:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Same as Target Scene" @@ -2938,7 +2968,7 @@ msgstr "Geteilt" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Target Texture Folder:" -msgstr "Ziel Texturen Ordner:" +msgstr "Ziel-Texturenordner:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Post-Process Script:" @@ -2967,20 +2997,20 @@ msgstr "Importieren & Öffnen" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Edited scene has not been saved, open imported scene anyway?" msgstr "" -"Editierte Szene wurde nicht gespeichert, trotzdem importierte Szene öffnen?" +"Bearbeitete Szene wurde nicht gespeichert, trotzdem importierte Szene öffnen?" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import Scene" -msgstr "Szene Importieren" +msgstr "Szene importieren" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Importing Scene.." -msgstr "Szene Wird Importiert.." +msgstr "Szene wird importiert.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Running Custom Script.." -msgstr "Angepasstes Skript Wird Ausgeführt.." +msgstr "Angepasstes Skript wird ausgeführt.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script:" @@ -2996,11 +3026,11 @@ msgstr "Fehler beim ausführen des Post-Import Skripts:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Image:" -msgstr "Bild Importieren:" +msgstr "Bild importieren:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Can't import a file over itself:" -msgstr "Es kann keine Datei in sich selbst importiert werden:" +msgstr "Datei kann nicht in sich selbst importiert werden:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't localize path: %s (already local)" @@ -3012,7 +3042,7 @@ msgstr "Speichere.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "3D Scene Animation" -msgstr "3D Szenen Animation" +msgstr "3D-Szenenanimation" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Uncompressed" @@ -3020,11 +3050,11 @@ msgstr "Unkomprimiert" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress Lossless (PNG)" -msgstr "Verlustfrei Komprimieren (PNG)" +msgstr "Verlustfrei komprimieren (PNG)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress Lossy (WebP)" -msgstr "Verlustbehaftet Komprimieren (WebP)" +msgstr "Verlustbehaftet komprimieren (WebP)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress (VRAM)" @@ -3032,15 +3062,15 @@ msgstr "Komprimieren (VRAM)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Format" -msgstr "Textur-Format" +msgstr "Texturformat" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Compression Quality (WebP):" -msgstr "Textur Kompressions-Qualität (WebP):" +msgstr "Texturkompressionsqualität (WebP):" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Options" -msgstr "Textur Einstellungen" +msgstr "Textureinstellungen" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Please specify some files!" @@ -3048,7 +3078,7 @@ msgstr "Bitte gib einige Dateien an!" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "At least one file needed for Atlas." -msgstr "Es wird zumindest eine Datei für den Atlas gebraucht." +msgstr "Es wird zumindest eine Datei für den Atlas benötigt." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Error importing:" @@ -3060,15 +3090,15 @@ msgstr "Es ist nur eine Datei für eine große Textur erforderlich." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Max Texture Size:" -msgstr "Maximale Textur Größe:" +msgstr "Maximale Texturgröße:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for Atlas (2D)" -msgstr "Importiere Texturen für Atlas (2D)" +msgstr "Texturen für Atlas (2D) importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cell Size:" -msgstr "Zell-Größe:" +msgstr "Zellgröße:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Large Texture" @@ -3076,31 +3106,31 @@ msgstr "Große Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Textures (2D)" -msgstr "Importiere Große Texturen (2D)" +msgstr "Große Texturen (2D) importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture" -msgstr "Quell-Textur" +msgstr "Quelltextur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Base Atlas Texture" -msgstr "Basis Atlas-Textur" +msgstr "Basis-Atlastextur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s)" -msgstr "Quell-Textur(en)" +msgstr "Quelltextur(en)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 2D" -msgstr "Importiere Texturen für 2D" +msgstr "Texturen für 2D importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 3D" -msgstr "Importiere Texturen für 3D" +msgstr "Texturen für 3D importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures" -msgstr "Texturen Importieren" +msgstr "Texturen importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "2D Texture" @@ -3112,7 +3142,7 @@ msgstr "3D-Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Atlas Texture" -msgstr "Atlas-Textur" +msgstr "Atlastextur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "" @@ -3124,7 +3154,7 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." -msgstr "Beschneide leere Bereiche." +msgstr "Leere Bereiche beschneiden." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture" @@ -3132,11 +3162,11 @@ msgstr "Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Texture" -msgstr "Große Textur Importieren" +msgstr "Große Textur importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Load Source Image" -msgstr "Quell-Bild Laden" +msgstr "Quellbild laden" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Slicing" @@ -3156,7 +3186,7 @@ msgstr "Große Textur konnte nicht gespeichert werden:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Build Atlas For:" -msgstr "Baue Atlas Für:" +msgstr "Erstelle Atlas für:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Loading Image:" @@ -3175,9 +3205,8 @@ msgid "Cropping Images" msgstr "Bilder werden beschnitten" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Blitting Images" -msgstr "Blitting der Bilder" +msgstr "Blitting Bilder" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't save atlas image:" @@ -3193,7 +3222,7 @@ msgstr "Fehlerhafte Quelle!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Invalid translation source!" -msgstr "Fehlerhafte Übersetzungs-Quelle!" +msgstr "Fehlerhafte Übersetzungsquelle!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Column" @@ -3206,15 +3235,15 @@ msgstr "Sprache" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No items to import!" -msgstr "Keine Inhalte zu importieren!" +msgstr "Keine Elemente zu importieren!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No target path!" -msgstr "Kein Ziel-Pfad!" +msgstr "Kein Zielpfad!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translations" -msgstr "Übersetzungen Importieren" +msgstr "Übersetzungen importieren" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Couldn't import!" @@ -3222,7 +3251,7 @@ msgstr "Konnte nicht importiert werden!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translation" -msgstr "Übersetzung Importieren" +msgstr "Übersetzung importieren" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Source CSV:" @@ -3230,7 +3259,7 @@ msgstr "Quell-CSV:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Ignore First Row" -msgstr "Ignoriere Erste Zeile" +msgstr "Erste Zeile ignorieren" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Compress" @@ -3242,7 +3271,7 @@ msgstr "Zu Projekt hinzufügen (engine.cfg)" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Languages:" -msgstr "Sprachen Importieren:" +msgstr "Sprachen importieren:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Translation" @@ -3250,7 +3279,7 @@ msgstr "Übersetzung" #: tools/editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "MultiNode Setzen" +msgstr "MultiNode setzen" #: tools/editor/node_dock.cpp msgid "Node" @@ -3262,15 +3291,15 @@ msgstr "Gruppen" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "Selektiere ein Node um Signale und Gruppen zu editieren." +msgstr "Wähle ein Node um Signale und Gruppen zu bearbeiten." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "Autoplay Umschalten" +msgstr "Automatisches Abspielen umschalten" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "Neuer Animations-Name:" +msgstr "Neuer Animationsname:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" @@ -3278,46 +3307,47 @@ msgstr "Neue Animation" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "Ändere Animations-Name:" +msgstr "Animationsname ändern:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "Animation Entfernen" +msgstr "Animation entfernen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" -msgstr "FEHLER: Fehlerhafter Animations-Name!" +msgstr "FEHLER: ungültiger Animationsname!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Animation name already exists!" -msgstr "Fehler: Animations-Name existiert bereits!" +msgstr "FEHLER: Animationsname existiert bereits!" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "Animation Umbenennen" +msgstr "Animation umbenennen" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "Animation Hinzufügen" +msgstr "Animation hinzufügen" #: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy msgid "Blend Next Changed" -msgstr "Überblende Nächsten Geänderten" +msgstr "Überblende nächste Bearbeitung" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "Blend-Zeit Ändern" +msgstr "Überblendungszeit ändern" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "Animation Laden" +msgstr "Animation laden" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "Animation Duplizieren" +msgstr "Animation duplizieren" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to copy!" @@ -3333,11 +3363,11 @@ msgstr "Eingefügte Animation" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "Animation Einfügen" +msgstr "Animation einfügen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to edit!" -msgstr "FEHLER: Keine Animation zum editieren!" +msgstr "FEHLER: Keine Animation zum bearbeiten!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -3345,7 +3375,7 @@ msgstr "Spiele ausgewählte Animation rückwärts von aktueller Position. (A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" -msgstr "Spiele ausgewählte Animation rückwärts vom Ende. (Shift+A)" +msgstr "Spiele ausgewählte Animation rückwärts vom Ende. (Umschalt+A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" @@ -3353,7 +3383,7 @@ msgstr "Stoppe Animations-Wiedergabe. (S)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "Spiele ausgewählte Animation vom Start. (Shift+D)" +msgstr "Spiele ausgewählte Animation vom Start. (Umschalt+D)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" @@ -3364,9 +3394,8 @@ msgid "Animation position (in seconds)." msgstr "Position der Animation (in Sekunden)." #: tools/editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Scale animation playback globally for the node." -msgstr "Skaliere das Abspielen der Animation global für das gesamte Node" +msgstr "Animationsablauf für dieses Node global skalieren." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create new animation in player." @@ -3394,12 +3423,11 @@ msgstr "Liste der Animationen im Player anzeigen." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "Beim Laden automatisch abpielen" +msgstr "Beim Laden automatisch abspielen" #: tools/editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Edit Target Blend Times" -msgstr "Ändere Ziel-Blendzeiten" +msgstr "Ziel-Übergangszeiten bearbeiten" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" @@ -3415,7 +3443,7 @@ msgstr "Neue Animation erstellen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "Name der Animation:" +msgstr "Animationsname:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -3426,9 +3454,8 @@ msgid "Error!" msgstr "Fehler!" #: tools/editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Blend Times:" -msgstr "Blendzeiten:" +msgstr "Übergangszeiten:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" @@ -3436,7 +3463,7 @@ msgstr "Nächste (Automatische Warteschlange):" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" -msgstr "" +msgstr "Übergangszeiten kreuzender Animationen" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp @@ -3462,7 +3489,7 @@ msgstr "Ausblenden (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend" -msgstr "" +msgstr "Blenden" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix" @@ -3491,15 +3518,15 @@ msgstr "Menge:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend:" -msgstr "" +msgstr "Blende:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend 0:" -msgstr "" +msgstr "Blende 0:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend 1:" -msgstr "" +msgstr "Blende 1:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" @@ -3514,12 +3541,14 @@ msgid "Add Input" msgstr "Eingang hinzufügen" #: tools/editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy msgid "Clear Auto-Advance" -msgstr "" +msgstr "Stoppe automatisches Durchschalten" #: tools/editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy msgid "Set Auto-Advance" -msgstr "" +msgstr "Setze automatisches Durchschalten" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Delete Input" @@ -3539,39 +3568,39 @@ msgstr "Animationsbaum ist ungültig." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation Node" -msgstr "Animationsknoten" +msgstr "Animations-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "OneShot Node" -msgstr "" +msgstr "Einfach-Aufruf-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix Node" -msgstr "Mixknoten" +msgstr "Misch-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend2 Node" -msgstr "" +msgstr "Blende2-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend3 Node" -msgstr "" +msgstr "Blende3-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend4 Node" -msgstr "" +msgstr "Blende4-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeScale Node" -msgstr "" +msgstr "Zeitskalier-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "" +msgstr "Zeitsuch-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Transition Node" -msgstr "" +msgstr "Übergangs-Node" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." @@ -3579,7 +3608,7 @@ msgstr "Animationen importieren.." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Edit Node Filters" -msgstr "Node-Filter bearbeiten" +msgstr "Nodefilter bearbeiten" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Filters.." @@ -3587,7 +3616,7 @@ msgstr "Filter.." #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing %d Triangles:" -msgstr "Parse %d Dreiecke:" +msgstr "Analysiere %d Dreiecke:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Triangle #" @@ -3595,15 +3624,15 @@ msgstr "Dreieck #" #: tools/editor/plugins/baked_light_baker.cpp msgid "Light Baker Setup:" -msgstr "Einrichtung des Light-Bakers:" +msgstr "Light-Baker einrichten:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing Geometry" -msgstr "Parse Geometrie" +msgstr "Analysiere Geometrie" #: tools/editor/plugins/baked_light_baker.cpp msgid "Fixing Lights" -msgstr "Behebe Lampen" +msgstr "Fixiere Lampen" #: tools/editor/plugins/baked_light_baker.cpp msgid "Making BVH" @@ -3611,7 +3640,7 @@ msgstr "Erstelle BVH" #: tools/editor/plugins/baked_light_baker.cpp msgid "Creating Light Octree" -msgstr "Erstelle Light-Octree" +msgstr "erstelle Licht-Octree" #: tools/editor/plugins/baked_light_baker.cpp msgid "Creating Octree Texture" @@ -3619,7 +3648,7 @@ msgstr "Erstelle Octree-Textur" #: tools/editor/plugins/baked_light_baker.cpp msgid "Transfer to Lightmaps:" -msgstr "Übergang zu Lightmaps:" +msgstr "übertrage zu Lightmaps:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Allocating Texture #" @@ -3653,7 +3682,7 @@ msgstr "Einrasten konfigurieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Offset:" -msgstr "Gitterverschiebung:" +msgstr "Gitterversatz:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp @@ -3662,7 +3691,7 @@ msgstr "Gitterabstand:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" -msgstr "Rotationsverschiebung:" +msgstr "Rotationsversatz:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" @@ -3678,7 +3707,7 @@ msgstr "Aktion verschieben" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit IK Chain" -msgstr "IK-Chain bearbeiten" +msgstr "IK-Kette bearbeiten" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit CanvasItem" @@ -3697,9 +3726,8 @@ msgid "Paste Pose" msgstr "Pose einfügen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "Auswahlmodus (Q)" +msgstr "Auswahlmodus" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3712,22 +3740,20 @@ msgstr "Alt+Ziehen = Verschieben" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" -"Drücken Sie 'V', um den Pivotpunkt zu ändern, 'Shift+V', um den Pivotpunkt " -"(während der Bewegung) zu verschieben." +"‚V‘ drücken um Angelpunkt auf Mausposition zu setzen, ‚Umschalt+V‘ drücken " +"um das Objekt ohne seinen Angelpunkt zu verschieben." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" msgstr "Alt+Rechtsklick: Listenauswahl nach Tiefe" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "Bewegungsmodus (W)" +msgstr "Bewegungsmodus" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate Mode" -msgstr "Rotationsmodus (E)" +msgstr "Rotationsmodus" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3741,7 +3767,7 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "Klicken Sie, um den Rotationsmittelpunkt des Objekts zu ändern." +msgstr "Klicken um Angelpunkt des Objekts zu ändern." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" @@ -3758,13 +3784,11 @@ msgstr "Das ausgewählte Objekt entsperren (kann bewegt werden)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." -msgstr "" -"Versichert, dass die untergeordnete Knoten des Objektes nicht auswählbar " -"sind." +msgstr "Verhindert das Auswählen von Unterobjekten dieses Nodes." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Restores the object's children's ability to be selected." -msgstr "Stellt die Eigenschaft des Objektes wieder her, ausgewählt zu werden." +msgstr "Macht Unterobjekte dieses Objekts wieder auswählbar." #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3778,11 +3802,11 @@ msgstr "Raster anzeigen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "Einrasten für Rotation aktivieren" +msgstr "Rotationsraster benutzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "Relatives Einrasten aktivieren" +msgstr "Relatives Einrasten benutzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3791,11 +3815,11 @@ msgstr "Einrasten konfigurieren.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "Einrasten an Pixeln aktivieren" +msgstr "Pixelraster benutzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Expand to Parent" -msgstr "Auf übergeordneten Knoten ausdehnen" +msgstr "Auf übergeordnetes Node ausdehnen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton.." @@ -3811,11 +3835,11 @@ msgstr "Knochen entfernen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "" +msgstr "IK-Kette erzeugen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "" +msgstr "IK-Kette zurücksetzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3828,7 +3852,7 @@ msgstr "Vergrößerung zurücksetzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Set.." -msgstr "" +msgstr "Vergrößerung setzen.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -3852,15 +3876,15 @@ msgstr "Schlüsselbild einfügen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "Schlüsselbild einfügen (existierender Track)" +msgstr "Schlüsselbild einfügen (in existierende Spuren)" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "" +msgstr "Pose kopieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "" +msgstr "Pose zurücksetzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Set a Value" @@ -3899,7 +3923,7 @@ msgstr "Polygon bearbeiten (Punkt entfernen)" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create a new polygon from scratch." -msgstr "Polygon neu von vorne erstellen." +msgstr "Polygon von Grund auf neu erstellen." #: tools/editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Poly3D" @@ -3907,7 +3931,7 @@ msgstr "Polygon3D erstellen" #: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" -msgstr "" +msgstr "Wähle Griff" #: tools/editor/plugins/color_ramp_editor_plugin.cpp msgid "Add/Remove Color Ramp Point" @@ -3920,7 +3944,7 @@ msgstr "Farbverlauf anpassen" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Creating Mesh Library" -msgstr "" +msgstr "Erzeuge MeshLibrary" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Thumbnail.." @@ -3928,7 +3952,7 @@ msgstr "Vorschau.." #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" -msgstr "%d entfernen?" +msgstr "Element %d entfernen?" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -3946,7 +3970,7 @@ msgstr "Aus Szene importieren" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "Aus Szene aktialisieren" +msgstr "Aus Szene aktualisieren" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" @@ -3962,7 +3986,7 @@ msgstr "Auflistungseditor" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" -msgstr "" +msgstr "Occluder-Polygon erzeugen" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -3986,23 +4010,23 @@ msgstr "RMT: Punkt entfernen." #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "" +msgstr "Mesh ist leer!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" -msgstr "" +msgstr "Statischen Trimesh-Körper erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Convex Body" -msgstr "" +msgstr "Statischen Konvex-Körper erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" -msgstr "Dies funktioniert nicht am Hauptknoten der Szene!" +msgstr "Das geht nicht an der Wurzel der Szene!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Shape" -msgstr "" +msgstr "Trimesh-Form erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Shape" @@ -4010,46 +4034,43 @@ msgstr "Konvexe Form erstellen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "" +msgstr "Navigations-Mesh erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "" +msgstr "Mesh-Instanz fehlt ein Mesh!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "" +msgstr "Mesh hat keine Oberfläche von der Umrisse erzeugt werden könnten!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" -msgstr "" +msgstr "Konnte keinen Umriss erzeugen!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline" -msgstr "Erzeuge Umriss" +msgstr "Umriss erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Trimesh Static Body" -msgstr "Erzeuge trimesh statischen Körper" +msgstr "Statischen Trimesh-Körper erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "Erzeuge konvexen statischen Körper" +msgstr "Statischen Konvex-Körper erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Trimesh Collision Sibling" -msgstr "Erzeuge trimesh Kollisionselement" +msgstr "Trimesh Kollisionselement erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Convex Collision Sibling" -msgstr "Erzeuge konvexen Kollisionseintrag" +msgstr "Konvexes Kollisionselement erzeugen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." -msgstr "Erzeuge Umriss-Mesh.." +msgstr "Umriss-Mesh erzeugen.." #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4060,9 +4081,9 @@ msgid "Outline Size:" msgstr "Umrissgröße:" #: tools/editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "Keine Mesh-Quelle angegeben (und kein MultiMesh-Eintrag im Node)" +msgstr "" +"Keine Mesh-Quelle angegeben (und kein MultiMesh-Eintrag im Node gesetzt)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." @@ -4086,7 +4107,7 @@ msgstr "Keine Quelle für Oberfläche angegeben." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." -msgstr "" +msgstr "Oberflächen-Quelle ist ungültig (ungültiger Pfad)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." @@ -4553,9 +4574,8 @@ msgid "Save Theme As" msgstr "Motiv speichern als" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "Klone herunter" +msgstr "Dokumentation schließen" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -5283,7 +5303,6 @@ msgid "Step:" msgstr "Schritt:" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Separation:" msgstr "Trennung:" @@ -5301,24 +5320,24 @@ msgstr "Kann Motiv nicht speichern in Datei:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "Alle Items hinzufügen" +msgstr "Alle Elemente hinzufügen" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add All" -msgstr "Alles hinzufügen" +msgstr "Alle hinzufügen" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Item" -msgstr "" +msgstr "Entferne Element" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" -msgstr "" +msgstr "Füge Klassen-Element hinzu" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Remove Class Items" -msgstr "" +msgstr "Entferne Klassen-Element" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Template" @@ -5326,35 +5345,35 @@ msgstr "Leeres Template erstellen" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Editor Template" -msgstr "" +msgstr "Leeres Editor-Template erstellen" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" -msgstr "" +msgstr "Kontrollkasten Radio1" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio2" -msgstr "" +msgstr "Kontrollkasten Radio2" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "" +msgstr "Element" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "" +msgstr "Überprüfe Element" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "" +msgstr "Überprüftes Element" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "" +msgstr "Enthält" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "" +msgstr "Viele" #: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp msgid "Options" @@ -5362,19 +5381,19 @@ msgstr "Optionen" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Have,Many,Several,Options!" -msgstr "" +msgstr "Enthalten,Viele,Einige,Optionen!" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" -msgstr "" +msgstr "Tab 1" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Tab 2" -msgstr "" +msgstr "Tab 2" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Tab 3" -msgstr "" +msgstr "Tab 3" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp @@ -5384,32 +5403,32 @@ msgstr "Typ:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" -msgstr "" +msgstr "Datentyp:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Icon" -msgstr "" +msgstr "Symbol" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Style" -msgstr "" +msgstr "Stil" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Color" -msgstr "" +msgstr "Farbe" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" -msgstr "" +msgstr "Zeichne TileMap" #: tools/editor/plugins/tile_map_editor_plugin.cpp #: tools/editor/scene_tree_dock.cpp msgid "Duplicate" -msgstr "" +msgstr "Duplizieren" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Erase TileMap" -msgstr "" +msgstr "Lösche TileMap" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Erase selection" @@ -5421,7 +5440,7 @@ msgstr "Finde Kachel" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" -msgstr "" +msgstr "Transponieren" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Mirror X" @@ -5433,55 +5452,55 @@ msgstr "Y-Koordinaten spiegeln" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Bucket" -msgstr "" +msgstr "Eimer" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" -msgstr "" +msgstr "Wähle Kachel" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Select" -msgstr "" +msgstr "Auswählen" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" -msgstr "" +msgstr "Drehe auf 0 Grad" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 90 degrees" -msgstr "" +msgstr "Drehe auf 90 Grad" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 180 degrees" -msgstr "" +msgstr "Drehe auf 180 Grad" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 270 degrees" -msgstr "" +msgstr "Drehe auf 270 Grad" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Could not find tile:" -msgstr "" +msgstr "Konnte Kachel nicht finden:" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Item name or ID:" -msgstr "" +msgstr "Elementname oder ID:" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene?" -msgstr "" +msgstr "Von Szene erstellen?" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" -msgstr "" +msgstr "Aus Szene vereinen?" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "" +msgstr "Von Szene erstellen" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" -msgstr "" +msgstr "Aus Szene vereinen" #: tools/editor/plugins/tile_set_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp @@ -5502,47 +5521,47 @@ msgstr "Fehler beim Exportieren des Projekts!" #: tools/editor/project_export.cpp msgid "Error writing the project PCK!" -msgstr "" +msgstr "Fehler beim Schreiben des Projekt-PCK!" #: tools/editor/project_export.cpp msgid "No exporter for platform '%s' yet." -msgstr "" +msgstr "Kein Exporter für Plattform ‚%s‘ verfügbar." #: tools/editor/project_export.cpp msgid "Include" -msgstr "" +msgstr "Einbeziehen" #: tools/editor/project_export.cpp msgid "Change Image Group" -msgstr "" +msgstr "Ändere Bildergruppe" #: tools/editor/project_export.cpp msgid "Group name can't be empty!" -msgstr "" +msgstr "Gruppenname muss vorhanden sein!" #: tools/editor/project_export.cpp msgid "Invalid character in group name!" -msgstr "" +msgstr "Ungültiges Zeichen in Gruppenname!" #: tools/editor/project_export.cpp msgid "Group name already exists!" -msgstr "" +msgstr "Gruppenname existiert bereits!" #: tools/editor/project_export.cpp msgid "Add Image Group" -msgstr "" +msgstr "Füge Bildergruppe hinzu" #: tools/editor/project_export.cpp msgid "Delete Image Group" -msgstr "" +msgstr "Lösche Bildergruppe" #: tools/editor/project_export.cpp msgid "Atlas Preview" -msgstr "" +msgstr "Atlas-Vorschau" #: tools/editor/project_export.cpp msgid "Project Export Settings" -msgstr "" +msgstr "Projektexporteinstellungen" #: tools/editor/project_export.cpp msgid "Target" @@ -5550,7 +5569,7 @@ msgstr "Ziel" #: tools/editor/project_export.cpp msgid "Export to Platform" -msgstr "" +msgstr "Export zu Plattform" #: tools/editor/project_export.cpp msgid "Resources" @@ -5558,15 +5577,15 @@ msgstr "Ressourcen" #: tools/editor/project_export.cpp msgid "Export selected resources (including dependencies)." -msgstr "" +msgstr "Exportiere ausgewählte Ressourcen (inklusive Abhängigkeiten)." #: tools/editor/project_export.cpp msgid "Export all resources in the project." -msgstr "" +msgstr "Exportiere alle Ressourcen des Projekts." #: tools/editor/project_export.cpp msgid "Export all files in the project directory." -msgstr "" +msgstr "Exportiere alle Dateien im Projektverzeichnis." #: tools/editor/project_export.cpp msgid "Export Mode:" @@ -5584,14 +5603,18 @@ msgstr "Aktion" msgid "" "Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" msgstr "" +"Filter um Nicht-Ressourcendateien zu exportieren (durch Kommata getrennt, z." +"B.: *.json, *.txt):" #: tools/editor/project_export.cpp msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" msgstr "" +"Filter um vom Export auszuschließen (durch Kommata getrennt, z.B.: *.json, *." +"txt):" #: tools/editor/project_export.cpp msgid "Convert text scenes to binary on export." -msgstr "" +msgstr "Konvertiere Textszenen in Binärformat beim Exportieren." #: tools/editor/project_export.cpp msgid "Images" @@ -5603,19 +5626,20 @@ msgstr "Original behalten" #: tools/editor/project_export.cpp msgid "Compress for Disk (Lossy, WebP)" -msgstr "" +msgstr "Komprimiere für Festplattenspeicher (verlustbehaftet, WebP)" #: tools/editor/project_export.cpp msgid "Compress for RAM (BC/PVRTC/ETC)" -msgstr "" +msgstr "Komprimiere für Arbeitsspeicher (BC/PVRTC/ETC)" #: tools/editor/project_export.cpp msgid "Convert Images (*.png):" -msgstr "" +msgstr "Konvertiere Bilder (*.png):" #: tools/editor/project_export.cpp msgid "Compress for Disk (Lossy) Quality:" msgstr "" +"Qualitätseinstellungen für Kompression (verlustbehaftet, auf Festplatte):" #: tools/editor/project_export.cpp msgid "Shrink All Images:" @@ -5635,35 +5659,35 @@ msgstr "Gruppen:" #: tools/editor/project_export.cpp msgid "Compress Disk" -msgstr "" +msgstr "Komprimiere für Festplatte" #: tools/editor/project_export.cpp msgid "Compress RAM" -msgstr "" +msgstr "Komprimiere für Arbeitsspeicher" #: tools/editor/project_export.cpp msgid "Compress Mode:" -msgstr "" +msgstr "Kompressionsmodus:" #: tools/editor/project_export.cpp msgid "Lossy Quality:" -msgstr "Verlustbehaftete-Qualität:" +msgstr "Verlustbehaftete Qualität:" #: tools/editor/project_export.cpp msgid "Atlas:" -msgstr "" +msgstr "Atlas:" #: tools/editor/project_export.cpp msgid "Shrink By:" -msgstr "" +msgstr "Verkleinern nach:" #: tools/editor/project_export.cpp msgid "Preview Atlas" -msgstr "" +msgstr "Zeige Atlas-Vorschau" #: tools/editor/project_export.cpp msgid "Image Filter:" -msgstr "" +msgstr "Bildfilter:" #: tools/editor/project_export.cpp msgid "Images:" @@ -5671,40 +5695,39 @@ msgstr "Bilder:" #: tools/editor/project_export.cpp msgid "Select None" -msgstr "" +msgstr "Nichts auswählen" #: tools/editor/project_export.cpp msgid "Group" msgstr "Gruppe" #: tools/editor/project_export.cpp -#, fuzzy msgid "Samples" msgstr "Samples" #: tools/editor/project_export.cpp msgid "Sample Conversion Mode: (.wav files):" -msgstr "" +msgstr "Audio-Umwandlungs-Modus: (.wav-Dateien):" #: tools/editor/project_export.cpp msgid "Keep" -msgstr "" +msgstr "Behalten" #: tools/editor/project_export.cpp msgid "Compress (RAM - IMA-ADPCM)" -msgstr "" +msgstr "Komprimieren (RAM - IMA-ADPCM)" #: tools/editor/project_export.cpp msgid "Sampling Rate Limit (Hz):" -msgstr "" +msgstr "Grenze der Abtastrate (Hz):" #: tools/editor/project_export.cpp msgid "Trim" -msgstr "" +msgstr "Zuschneiden" #: tools/editor/project_export.cpp msgid "Trailing Silence:" -msgstr "" +msgstr "Auslaufende Stille:" #: tools/editor/project_export.cpp msgid "Script" @@ -5712,7 +5735,7 @@ msgstr "Skript" #: tools/editor/project_export.cpp msgid "Script Export Mode:" -msgstr "" +msgstr "Skript-Exportmodus:" #: tools/editor/project_export.cpp msgid "Text" @@ -5724,19 +5747,19 @@ msgstr "Kompiliert" #: tools/editor/project_export.cpp msgid "Encrypted (Provide Key Below)" -msgstr "" +msgstr "Verschlüsselt (Schlüssel unten angeben)" #: tools/editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" -msgstr "" +msgstr "Skript-Schlüssel (256 Bit hexadezimal):" #: tools/editor/project_export.cpp msgid "Export PCK/Zip" -msgstr "" +msgstr "Exportiere PCK/Zip" #: tools/editor/project_export.cpp msgid "Export Project PCK" -msgstr "" +msgstr "Exportiere Projekt-PCK" #: tools/editor/project_export.cpp msgid "Export.." @@ -5752,27 +5775,27 @@ msgstr "Exportvorlage:" #: tools/editor/project_manager.cpp msgid "Invalid project path, the path must exist!" -msgstr "" +msgstr "Ungültiger Projektpfad, der Pfad muss existieren!" #: tools/editor/project_manager.cpp msgid "Invalid project path, engine.cfg must not exist." -msgstr "" +msgstr "Ungültiger Projektpfad, engine.cfg darf nicht existieren." #: tools/editor/project_manager.cpp msgid "Invalid project path, engine.cfg must exist." -msgstr "" +msgstr "Ungültiger Projektpfad, engine.cfg muss existieren." #: tools/editor/project_manager.cpp msgid "Imported Project" -msgstr "" +msgstr "Importiertes Projekt" #: tools/editor/project_manager.cpp msgid "Invalid project path (changed anything?)." -msgstr "" +msgstr "Ungültiger Projektpfad (etwas geändert?)." #: tools/editor/project_manager.cpp msgid "Couldn't create engine.cfg in project path." -msgstr "" +msgstr "Konnte engine.cfg in Projektpfad nicht erzeugen." #: tools/editor/project_manager.cpp msgid "The following files failed extraction from package:" @@ -5780,27 +5803,27 @@ msgstr "Die folgenden Dateien ließen sich nicht aus dem Paket extrahieren:" #: tools/editor/project_manager.cpp msgid "Package Installed Successfully!" -msgstr "" +msgstr "Paket erfolgreich installiert!" #: tools/editor/project_manager.cpp msgid "Import Existing Project" -msgstr "" +msgstr "Existierendes Projekt importieren" #: tools/editor/project_manager.cpp msgid "Project Path (Must Exist):" -msgstr "" +msgstr "Projektpfad (muss existieren):" #: tools/editor/project_manager.cpp msgid "Project Name:" -msgstr "" +msgstr "Projektname:" #: tools/editor/project_manager.cpp msgid "Create New Project" -msgstr "" +msgstr "Erstelle neues Projekt" #: tools/editor/project_manager.cpp msgid "Project Path:" -msgstr "" +msgstr "Projektpfad:" #: tools/editor/project_manager.cpp msgid "Install Project:" @@ -5812,29 +5835,27 @@ msgstr "Installieren" #: tools/editor/project_manager.cpp msgid "Browse" -msgstr "" +msgstr "Durchstöbern" #: tools/editor/project_manager.cpp msgid "New Game Project" -msgstr "" +msgstr "Neues Spiel" #: tools/editor/project_manager.cpp msgid "That's a BINGO!" -msgstr "" +msgstr "Aber klar :-) !" #: tools/editor/project_manager.cpp msgid "Unnamed Project" msgstr "Unbenanntes Projekt" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to open more than one project?" -msgstr "Wollen Sie wirklich mehr als ein Projekt öffnen?" +msgstr "Sollen wirklich mehrere Projekte geöffnet werden?" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run more than one project?" -msgstr "Wollen Sie wirklich mehr als ein Projekt ausführen?" +msgstr "Sollen wirklich mehrere Projekte ausgeführt werden?" #: tools/editor/project_manager.cpp msgid "Remove project from the list? (Folder contents will not be modified)" @@ -5846,11 +5867,11 @@ msgstr "" msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" -msgstr "" +msgstr "Sollen wirklich %s Ordner nach Godot-Projekten durchsucht werden?" #: tools/editor/project_manager.cpp msgid "Project Manager" -msgstr "Projektmanager" +msgstr "Projektverwaltung" #: tools/editor/project_manager.cpp msgid "Project List" @@ -5866,7 +5887,7 @@ msgstr "Scannen" #: tools/editor/project_manager.cpp msgid "Select a Folder to Scan" -msgstr "" +msgstr "Wähle zu durchsuchenden Ordner" #: tools/editor/project_manager.cpp msgid "New Project" @@ -5878,7 +5899,7 @@ msgstr "Verlassen" #: tools/editor/project_settings.cpp msgid "Key " -msgstr "" +msgstr "Taste " #: tools/editor/project_settings.cpp msgid "Joy Button" @@ -5886,31 +5907,31 @@ msgstr "Joysticktaste" #: tools/editor/project_settings.cpp msgid "Joy Axis" -msgstr "" +msgstr "Joystickachse" #: tools/editor/project_settings.cpp msgid "Mouse Button" -msgstr "Maus-Taste" +msgstr "Maustaste" #: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." -msgstr "" +msgstr "Ungültiger Name für Aktion (alle Zeichen außer ‚/‘ und ‚:‘ möglich)." #: tools/editor/project_settings.cpp msgid "Action '%s' already exists!" -msgstr "Aktion '%s' existiert bereits!" +msgstr "Aktion ‚%s‘ existiert bereits!" #: tools/editor/project_settings.cpp msgid "Rename Input Action Event" -msgstr "" +msgstr "Eingabeaktionsereignis umbenennen" #: tools/editor/project_settings.cpp msgid "Add Input Action Event" -msgstr "" +msgstr "Eingabeaktionsereignis hinzufügen" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "Control+" -msgstr "" +msgstr "Steuerung+" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "Press a Key.." @@ -5918,7 +5939,7 @@ msgstr "Drücke eine Taste.." #: tools/editor/project_settings.cpp msgid "Mouse Button Index:" -msgstr "" +msgstr "Maustasten-Index:" #: tools/editor/project_settings.cpp msgid "Left Button" @@ -5934,11 +5955,11 @@ msgstr "Mittlere Taste" #: tools/editor/project_settings.cpp msgid "Wheel Up Button" -msgstr "" +msgstr "Mausrad hoch" #: tools/editor/project_settings.cpp msgid "Wheel Down Button" -msgstr "" +msgstr "Mausrad herunter" #: tools/editor/project_settings.cpp msgid "Button 6" @@ -5958,23 +5979,24 @@ msgstr "Taste 9" #: tools/editor/project_settings.cpp msgid "Joystick Axis Index:" -msgstr "" +msgstr "Joystickachsen-Index:" #: tools/editor/project_settings.cpp msgid "Joystick Button Index:" -msgstr "" +msgstr "Joysticktasten-Index:" #: tools/editor/project_settings.cpp msgid "Add Input Action" -msgstr "" +msgstr "Füge Eingabeaktion hinzu" #: tools/editor/project_settings.cpp msgid "Erase Input Action Event" -msgstr "" +msgstr "Lösche Eingabeaktionsereignis" #: tools/editor/project_settings.cpp +#, fuzzy msgid "Toggle Persisting" -msgstr "" +msgstr "Dauerhaft umschalten" #: tools/editor/project_settings.cpp msgid "Error saving settings." @@ -5990,27 +6012,27 @@ msgstr "Übersetzung hinzufügen" #: tools/editor/project_settings.cpp msgid "Remove Translation" -msgstr "" +msgstr "Übersetzung entfernen" #: tools/editor/project_settings.cpp msgid "Add Remapped Path" -msgstr "" +msgstr "Remap-Pfad hinzufügen" #: tools/editor/project_settings.cpp msgid "Resource Remap Add Remap" -msgstr "" +msgstr "Ressourcen-Remap hinzufügen" #: tools/editor/project_settings.cpp msgid "Change Resource Remap Language" -msgstr "" +msgstr "Ändere Zielsprache des Ressourcen-Remaps" #: tools/editor/project_settings.cpp msgid "Remove Resource Remap" -msgstr "" +msgstr "Ressourcen-Remap entfernen" #: tools/editor/project_settings.cpp msgid "Remove Resource Remap Option" -msgstr "" +msgstr "Ressourcen-Remap-Option entfernen" #: tools/editor/project_settings.cpp msgid "Project Settings (engine.cfg)" @@ -6026,15 +6048,15 @@ msgstr "Eigenschaft:" #: tools/editor/project_settings.cpp msgid "Del" -msgstr "" +msgstr "Entfernen" #: tools/editor/project_settings.cpp msgid "Copy To Platform.." -msgstr "" +msgstr "Kopiere zu Plattform.." #: tools/editor/project_settings.cpp msgid "Input Map" -msgstr "" +msgstr "Eingabe Zuordnung" #: tools/editor/project_settings.cpp msgid "Action:" @@ -6046,7 +6068,7 @@ msgstr "Gerät:" #: tools/editor/project_settings.cpp msgid "Index:" -msgstr "" +msgstr "Index:" #: tools/editor/project_settings.cpp msgid "Localization" @@ -6066,7 +6088,7 @@ msgstr "Hinzufügen.." #: tools/editor/project_settings.cpp msgid "Remaps" -msgstr "" +msgstr "Remaps" #: tools/editor/project_settings.cpp msgid "Resources:" @@ -6074,15 +6096,15 @@ msgstr "Ressourcen:" #: tools/editor/project_settings.cpp msgid "Remaps by Locale:" -msgstr "" +msgstr "Remaps nach Lokalisierung:" #: tools/editor/project_settings.cpp msgid "Locale" -msgstr "" +msgstr "Lokalisierung" #: tools/editor/project_settings.cpp msgid "AutoLoad" -msgstr "" +msgstr "Autoload" #: tools/editor/project_settings.cpp msgid "Plugins" @@ -6090,15 +6112,17 @@ msgstr "Erweiterungen" #: tools/editor/property_editor.cpp msgid "Preset.." -msgstr "" +msgstr "Voreinstellungen.." #: tools/editor/property_editor.cpp +#, fuzzy msgid "Ease In" -msgstr "" +msgstr "Einfahren" #: tools/editor/property_editor.cpp +#, fuzzy msgid "Ease Out" -msgstr "" +msgstr "Ausfahren" #: tools/editor/property_editor.cpp msgid "Zero" @@ -6106,19 +6130,19 @@ msgstr "Null" #: tools/editor/property_editor.cpp msgid "Easing In-Out" -msgstr "" +msgstr "Glätten Ein-Aus" #: tools/editor/property_editor.cpp msgid "Easing Out-In" -msgstr "" +msgstr "Glätten Aus-Ein" #: tools/editor/property_editor.cpp msgid "File.." -msgstr "" +msgstr "Datei.." #: tools/editor/property_editor.cpp msgid "Dir.." -msgstr "" +msgstr "Verzeichnis.." #: tools/editor/property_editor.cpp msgid "Load" @@ -6126,67 +6150,79 @@ msgstr "Lade" #: tools/editor/property_editor.cpp msgid "Assign" -msgstr "" +msgstr "Zuweisen" #: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" -msgstr "" +msgstr "Fehler beim Laden der Datei: Keine Ressource!" #: tools/editor/property_editor.cpp msgid "Couldn't load image" -msgstr "" +msgstr "Konnte Bild nicht laden" #: tools/editor/property_editor.cpp msgid "Bit %d, val %d." -msgstr "" +msgstr "Bit %d, Wert %d." #: tools/editor/property_editor.cpp msgid "On" msgstr "An" #: tools/editor/property_editor.cpp +#, fuzzy msgid "Set" -msgstr "" +msgstr "Setzen" #: tools/editor/property_editor.cpp msgid "Properties:" -msgstr "" +msgstr "Eigenschaften:" #: tools/editor/property_editor.cpp msgid "Global" -msgstr "" +msgstr "Global" #: tools/editor/property_editor.cpp msgid "Sections:" -msgstr "" +msgstr "Abschnitte:" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Punkte auswählen" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Auswahlmodus" #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" -msgstr "" +msgstr "Konnte PVRTC-Werkzeug nicht ausführen:" #: tools/editor/pvrtc_compress.cpp msgid "Can't load back converted image using PVRTC tool:" msgstr "" +"Konnte PVRTC-Werkzeug nicht benutzen um konvertiertes Bild zurück zu laden:" #: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp msgid "Reparent Node" -msgstr "" +msgstr "Node umhängen" #: tools/editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "" +msgstr "Ort umhängen (neue Eltern auswählen):" #: tools/editor/reparent_dialog.cpp msgid "Keep Global Transform" -msgstr "" +msgstr "Behalte globale Transformation" #: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp msgid "Reparent" -msgstr "" +msgstr "Umhängen" #: tools/editor/resources_dock.cpp msgid "Create New Resource" -msgstr "" +msgstr "Erstelle neue Ressource" #: tools/editor/resources_dock.cpp msgid "Open Resource" @@ -6198,19 +6234,19 @@ msgstr "Ressource speichern" #: tools/editor/resources_dock.cpp msgid "Resource Tools" -msgstr "" +msgstr "Ressourcenwerkzeuge" #: tools/editor/resources_dock.cpp msgid "Make Local" -msgstr "" +msgstr "Lokal machen" #: tools/editor/run_settings_dialog.cpp msgid "Run Mode:" -msgstr "" +msgstr "Ausführungsmodus:" #: tools/editor/run_settings_dialog.cpp msgid "Current Scene" -msgstr "" +msgstr "Aktuelle Szene" #: tools/editor/run_settings_dialog.cpp msgid "Main Scene" @@ -6222,181 +6258,190 @@ msgstr "Hauptszenen Parameter:" #: tools/editor/run_settings_dialog.cpp msgid "Scene Run Settings" -msgstr "" +msgstr "Szenenausführungseinstellungen" #: tools/editor/scene_tree_dock.cpp msgid "OK :(" -msgstr "" +msgstr "Verstehe" #: tools/editor/scene_tree_dock.cpp msgid "No parent to instance a child at." -msgstr "" +msgstr "Kein Node unter dem Unterobjekt instantiiert werden könnte vorhanden." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "No parent to instance the scenes at." -msgstr "Konnte Szene nicht instantiieren!" +msgstr "" +"Kein Eltern-Node unter dem Szenen instantiiert werden könnten vorhanden." #: tools/editor/scene_tree_dock.cpp msgid "Error loading scene from %s" -msgstr "" +msgstr "Fehler beim Laden der Szene von %s" #: tools/editor/scene_tree_dock.cpp msgid "Error instancing scene from %s" -msgstr "" +msgstr "Fehler beim Instanziieren von %s" #: tools/editor/scene_tree_dock.cpp msgid "Ok" -msgstr "" +msgstr "Ok" #: tools/editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." msgstr "" +"Kann Szene %s nicht instanziieren da die aktuelle Szene in einer ihrer Nodes " +"existiert." #: tools/editor/scene_tree_dock.cpp msgid "Instance Scene(s)" -msgstr "" +msgstr "Instanz-Szene(n)" #: tools/editor/scene_tree_dock.cpp +#, fuzzy msgid "This operation can't be done on the tree root." msgstr "" +"Diese Aktion kann nicht auf der Wurzel des Szenenbaums ausgeführt werden." #: tools/editor/scene_tree_dock.cpp msgid "Move Node In Parent" -msgstr "" +msgstr "Bewege Node innerhalb des Eltern-Nodes" #: tools/editor/scene_tree_dock.cpp msgid "Move Nodes In Parent" -msgstr "" +msgstr "Bewege Nodes innerhalb des Eltern-Nodes" #: tools/editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" -msgstr "" +msgstr "Dupliziere Node(s)" #: tools/editor/scene_tree_dock.cpp msgid "Delete Node(s)?" -msgstr "" +msgstr "Lösche Node(s)?" #: tools/editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "" +msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden." #: tools/editor/scene_tree_dock.cpp msgid "This operation requires a single selected node." -msgstr "" +msgstr "Diese Aktion benötigt ein einzelnes ausgewähltes Node." #: tools/editor/scene_tree_dock.cpp msgid "This operation can't be done on instanced scenes." -msgstr "" +msgstr "Diese Aktion kann nicht auf instantiierten Szenen ausgeführt werden." #: tools/editor/scene_tree_dock.cpp msgid "Save New Scene As.." -msgstr "" +msgstr "Speichere neue Szene als.." #: tools/editor/scene_tree_dock.cpp msgid "Makes Sense!" -msgstr "" +msgstr "Verstehe!" #: tools/editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" -msgstr "" +msgstr "Kann nicht an Nodes von fremden Szenen arbeiten!" #: tools/editor/scene_tree_dock.cpp msgid "Can't operate on nodes the current scene inherits from!" -msgstr "" +msgstr "Kann nicht an Nodes von denen die aktuelle Szene erbt arbeiten!" #: tools/editor/scene_tree_dock.cpp msgid "Remove Node(s)" -msgstr "" +msgstr "Entferne Node(s)" #: tools/editor/scene_tree_dock.cpp msgid "Create Node" -msgstr "" +msgstr "Erzeuge Node" #: tools/editor/scene_tree_dock.cpp msgid "" "Couldn't save new scene. Likely dependencies (instances) couldn't be " "satisfied." msgstr "" +"Konnte neue Szene nicht speichern. Wahrscheinlich konnten (Instanz-) " +"Abhängigkeiten nicht erfüllt werden." #: tools/editor/scene_tree_dock.cpp msgid "Error saving scene." -msgstr "" +msgstr "Fehler beim Speichern der Szene." #: tools/editor/scene_tree_dock.cpp msgid "Error duplicating scene to save it." -msgstr "" +msgstr "Fehler beim Duplizieren der Szene zum Speichern." #: tools/editor/scene_tree_dock.cpp msgid "Edit Groups" -msgstr "" +msgstr "Gruppen bearbeiten" #: tools/editor/scene_tree_dock.cpp msgid "Edit Connections" -msgstr "" +msgstr "Verbindungen bearbeiten" #: tools/editor/scene_tree_dock.cpp msgid "Delete Node(s)" -msgstr "" +msgstr "Node(s) löschen" #: tools/editor/scene_tree_dock.cpp msgid "Add Child Node" -msgstr "" +msgstr "Node hier anhängen" #: tools/editor/scene_tree_dock.cpp msgid "Instance Child Scene" -msgstr "" +msgstr "Szene hier instantiieren" #: tools/editor/scene_tree_dock.cpp msgid "Change Type" -msgstr "" +msgstr "Typ ändern" #: tools/editor/scene_tree_dock.cpp msgid "Add Script" -msgstr "" +msgstr "Skript hinzufügen" #: tools/editor/scene_tree_dock.cpp msgid "Merge From Scene" -msgstr "" +msgstr "Aus Szene zusammenführen" #: tools/editor/scene_tree_dock.cpp msgid "Save Branch as Scene" -msgstr "" +msgstr "Speichere Verzweigung als Szene" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "Bitte bestätigen..." +msgstr "Löschen (keine Bestätigung)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" -msgstr "" +msgstr "Hinzufügen/Erstellen eines neuen Nodes" #: tools/editor/scene_tree_dock.cpp msgid "" "Instance a scene file as a Node. Creates an inherited scene if no root node " "exists." msgstr "" +"Instantiiere eine Szenendatei als Node. Erzeugt eine geerbte Szene falls " +"keine Root-Node existiert." #: tools/editor/scene_tree_dock.cpp msgid "Create a new script for the selected node." -msgstr "" +msgstr "Erzeuge ein neues Skript für das ausgewählte Node." #: tools/editor/scene_tree_editor.cpp msgid "" "This item cannot be made visible because the parent is hidden. Unhide the " "parent first." msgstr "" +"Diese Element kann nicht sichtbar gemacht werden solange das Elternelement " +"versteckt ist. Elternelement zuerst sichtbar machen." #: tools/editor/scene_tree_editor.cpp msgid "Toggle Spatial Visible" -msgstr "" +msgstr "Spatial-Sichtbarkeit umschalten" #: tools/editor/scene_tree_editor.cpp msgid "Toggle CanvasItem Visible" -msgstr "" +msgstr "CanvasItem-Sichtbarkeit umschalten" #: tools/editor/scene_tree_editor.cpp msgid "Instance:" @@ -6405,26 +6450,27 @@ msgstr "Instanz:" #: tools/editor/scene_tree_editor.cpp msgid "Invalid node name, the following characters are not allowed:" msgstr "" +"Ungültiger Name für ein Node, die folgenden Zeichen sind nicht gestattet:" #: tools/editor/scene_tree_editor.cpp msgid "Rename Node" -msgstr "" +msgstr "Node umbenennen" #: tools/editor/scene_tree_editor.cpp msgid "Scene Tree (Nodes):" -msgstr "" +msgstr "Szenenbaum (Nodes):" #: tools/editor/scene_tree_editor.cpp msgid "Editable Children" -msgstr "" +msgstr "bearbeitbare Unterobjekte" #: tools/editor/scene_tree_editor.cpp msgid "Load As Placeholder" -msgstr "" +msgstr "Als Platzhalter laden" #: tools/editor/scene_tree_editor.cpp msgid "Discard Instancing" -msgstr "" +msgstr "Instantiierung verwerfen" #: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" @@ -6432,31 +6478,31 @@ msgstr "Im Editor öffnen" #: tools/editor/scene_tree_editor.cpp msgid "Clear Inheritance" -msgstr "" +msgstr "Leere Vererbung" #: tools/editor/scene_tree_editor.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "" +msgstr "Vererbung wirklich leeren? (Lässt sich nicht rückgängig machen!)" #: tools/editor/scene_tree_editor.cpp msgid "Clear!" -msgstr "" +msgstr "Leeren!" #: tools/editor/scene_tree_editor.cpp msgid "Select a Node" -msgstr "" +msgstr "Wähle ein Node" #: tools/editor/script_create_dialog.cpp msgid "Invalid parent class name" -msgstr "" +msgstr "Ungültiger Name für Elternklasse" #: tools/editor/script_create_dialog.cpp msgid "Valid chars:" -msgstr "" +msgstr "Gültige Zeichen:" #: tools/editor/script_create_dialog.cpp msgid "Invalid class name" -msgstr "" +msgstr "Ungültiger Klassenname" #: tools/editor/script_create_dialog.cpp msgid "Valid name" @@ -6516,11 +6562,11 @@ msgstr "Built-In-Skript" #: tools/editor/script_create_dialog.cpp msgid "Create Node Script" -msgstr "" +msgstr "Erstelle Node-Skript" #: tools/editor/script_editor_debugger.cpp msgid "Bytes:" -msgstr "" +msgstr "Bytes:" #: tools/editor/script_editor_debugger.cpp msgid "Warning" @@ -6532,7 +6578,7 @@ msgstr "Fehler:" #: tools/editor/script_editor_debugger.cpp msgid "Source:" -msgstr "" +msgstr "Quelle:" #: tools/editor/script_editor_debugger.cpp msgid "Function:" @@ -6544,19 +6590,19 @@ msgstr "Fehler" #: tools/editor/script_editor_debugger.cpp msgid "Child Process Connected" -msgstr "" +msgstr "Unterprozess verbunden" #: tools/editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" -msgstr "" +msgstr "Vorherige Instanz untersuchen" #: tools/editor/script_editor_debugger.cpp msgid "Inspect Next Instance" -msgstr "" +msgstr "Nächste Instanz untersuchen" #: tools/editor/script_editor_debugger.cpp msgid "Stack Frames" -msgstr "" +msgstr "Stack Frames" #: tools/editor/script_editor_debugger.cpp msgid "Variable" @@ -6568,27 +6614,29 @@ msgstr "Fehler:" #: tools/editor/script_editor_debugger.cpp msgid "Stack Trace (if applicable):" -msgstr "" +msgstr "Stack Trace (falls geeignet):" #: tools/editor/script_editor_debugger.cpp +#, fuzzy msgid "Remote Inspector" -msgstr "" +msgstr "Ferninspektor" #: tools/editor/script_editor_debugger.cpp msgid "Live Scene Tree:" -msgstr "" +msgstr "Echtzeit Szenenbaum:" #: tools/editor/script_editor_debugger.cpp +#, fuzzy msgid "Remote Object Properties: " -msgstr "" +msgstr "Eigenschaften entfernter Objekte: " #: tools/editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "" +msgstr "Profiler" #: tools/editor/script_editor_debugger.cpp msgid "Monitor" -msgstr "" +msgstr "Monitor" #: tools/editor/script_editor_debugger.cpp msgid "Value" @@ -6596,23 +6644,23 @@ msgstr "Wert" #: tools/editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "" +msgstr "Monitore" #: tools/editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" -msgstr "" +msgstr "Auflistung der Grafikspeichernutzung nach Ressource:" #: tools/editor/script_editor_debugger.cpp msgid "Total:" -msgstr "" +msgstr "Insgesamt:" #: tools/editor/script_editor_debugger.cpp msgid "Video Mem" -msgstr "" +msgstr "Grafikspeicher" #: tools/editor/script_editor_debugger.cpp msgid "Resource Path" -msgstr "" +msgstr "Ressourcenpfad" #: tools/editor/script_editor_debugger.cpp msgid "Type" @@ -6620,67 +6668,76 @@ msgstr "Art" #: tools/editor/script_editor_debugger.cpp msgid "Usage" -msgstr "" +msgstr "Nutzung" #: tools/editor/script_editor_debugger.cpp msgid "Misc" -msgstr "" +msgstr "Verschiedenes" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control:" -msgstr "" +msgstr "Angeklicktes Control-Node:" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control Type:" -msgstr "" +msgstr "Typ des angeklickten Control-Nodes:" #: tools/editor/script_editor_debugger.cpp msgid "Live Edit Root:" -msgstr "" +msgstr "Wurzel der Echtzeitbearbeitung:" #: tools/editor/script_editor_debugger.cpp msgid "Set From Tree" -msgstr "" +msgstr "Nach Szenenbaum einstellen" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Tastenkürzel" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" -msgstr "" +msgstr "Ändere Lichtradius" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" -msgstr "" +msgstr "Ändere FOV der Kamera" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Camera Size" -msgstr "" +msgstr "Ändere Kameragröße" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Sphere Shape Radius" -msgstr "" +msgstr "Ändere Radius der Kugelform" #: tools/editor/spatial_editor_gizmos.cpp +#, fuzzy msgid "Change Box Shape Extents" -msgstr "" +msgstr "Ändere Ausmessungen der Kastenform" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" -msgstr "" +msgstr "Ändere Radius der Kapselform" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Height" -msgstr "" +msgstr "Ändere Höhe der Kapselform" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "" +msgstr "Ändere Länge der Strahlenform" #: tools/editor/spatial_editor_gizmos.cpp +#, fuzzy msgid "Change Notifier Extents" -msgstr "" +msgstr "Ändere Ausmaße des Benachrichtigers" + +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "Eigens erstelltes Node hat keine Methode _get_output_port_unsequenced(idx," +#~ "wmem), jedoch wurden unsequenzierte Ports angegeben." #~ msgid "Cannot go into subdir:" #~ msgstr "Unterordner kann nicht geöffnet werden:" diff --git a/tools/translations/de_CH.po b/tools/translations/de_CH.po index 747a9ce2e9..bc64a20805 100644 --- a/tools/translations/de_CH.po +++ b/tools/translations/de_CH.po @@ -162,16 +162,45 @@ msgid "Add Node" msgstr "Node" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Node" + +#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Add Node(s) From Tree" msgstr "Node von Szene" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -237,9 +266,23 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Node erstellen" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Node erstellen" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -285,12 +328,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -516,7 +553,8 @@ msgstr "Alle Dateien (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Öffnen" @@ -1053,7 +1091,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1303,10 +1342,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1622,10 +1667,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -6006,6 +6047,14 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/es.po b/tools/translations/es.po index c6a7940598..f428d54d8b 100644 --- a/tools/translations/es.po +++ b/tools/translations/es.po @@ -2,37 +2,45 @@ # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. # +# Carlos López <genetita@gmail.com>, 2016. +# Ismael Ferreras Morezuelas <swyterzone+mame@gmail.com>, 2016. # Lisandro Lorea <lisandrolorea@gmail.com>, 2016. +# Roger BR <drai_kin@hotmail.com>, 2016. # Sebastian Silva <sebastian@fuentelibre.org>, 2016. +# Swyter <swyterzone@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-07-14 01:33-0500\n" -"Last-Translator: Sebastian Silva <sebastian@fuentelibre.org>\n" -"Language-Team: SomosAzucar.Org\n" +"PO-Revision-Date: 2016-09-01 11:47+0000\n" +"Last-Translator: Roger BR <drai_kin@hotmail.com>\n" +"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" +"godot/es/>\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Virtaal 0.7.1\n" +"X-Generator: Weblate 2.8\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Argumento de tipo inválido para convert(), usá constantes TYPE_*." +msgstr "" +"El argumento para convert() no es correcto, prueba utilizando constantes " +"TYPE_*." #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." msgstr "" -"No hay suficientes bytes para decodificar bytes, o el formato es inválido." +"O no hay suficientes bytes para decodificar bytes o el formato no es " +"correcto." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" -msgstr "el argumento step es cero!" +msgstr "¡El argumento «step» es cero!" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" @@ -48,62 +56,69 @@ msgstr "No está basado en un archivo de recursos" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "Formato de diccionario de instancias inválido (@path faltante)" +msgstr "El formato de diccionario de instancias no es correcto (falta @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" msgstr "" -"Formato de diccionario de instancias inválido (no se puede cargar el script " -"en @path)" +"El formato de diccionario de instancias no es correcto (no se puede cargar " +"el script en @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" msgstr "" -"Formato de diccionario de instancias inválido (script inválido en @path)" +"El formato de diccionario de instancias no es correcto (script incorrecto en " +"@path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" -msgstr "Diccionario de instancias inválido (subclases inválidas)" +msgstr "El diccionario de instancias no es correcto (subclases erróneas)" #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"¡Un nodo ejecutó un «yield» sin memoria de trabajo. Prueba leyendo la " +"documentación sobre cómo utilizar yield!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"Un nodo ejecutó un «yield» pero no devolvió un estado de función en la " +"memoria de trabajo original." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"El valor de retorno debe asignarse al primer elemento de la memoria de " +"trabajo de nodos. Prueba arreglando el nodo." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "El nodo devolvió una secuencia de salida incorrecta: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" +"¡Se encontró un bit de secuencia pero no el nodo en la pila, informa del " +"problema!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Desbordamiento de pila en el nivel: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Funcion:" +msgstr "Funciones:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Variable" +msgstr "Variables:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -111,86 +126,102 @@ msgstr "Señales:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "El nombre no es un identificador válido:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Otra función/variable/señal ya utiliza este nombre:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Crear Función" +msgstr "Renombrar función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Renombrar Muestra" +msgstr "Renombrar variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Renombrar Muestra" +msgstr "Renombrar señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Funcion:" +msgstr "Añadir función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Variable" +msgstr "Añadir variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Señales" +msgstr "Añadir señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Quitar Selección" +msgstr "Quitar función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Variable" +msgstr "Quitar variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Variable" +msgstr "Editando variable:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Quitar Selección" +msgstr "Quitar señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Conectando Señal:" +msgstr "Editando señal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "Agregar Nodo Hijo" +msgstr "Añadir nodo" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Node(s) From Tree" -msgstr "Nodo desde Escena" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Meta to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Añadir nodo hijo" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Añadir nodo/s desde árbol" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Añadir propiedad «Getter»" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Añadir propiedad «Setter»" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -200,22 +231,20 @@ msgid "Edit" msgstr "Editar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Tipo de Datos:" +msgstr "Tipo base:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" msgstr "Miembros:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Available Nodes:" -msgstr "Nodo TimeScale" +msgstr "Nodos disponibles:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Selecciona o crea una función para editar el grafo" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -231,98 +260,103 @@ msgid "Close" msgstr "Cerrar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "Argumentos de Llamada Extras:" +msgstr "Editar argumentos de señal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Variable" +msgstr "Editar variable:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Cambiar Tipo" +msgstr "Cambiar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Eliminar archivos seleccionados?" +msgstr "Quitar seleccionados" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" -msgstr "Act/Desact. Breakpoint" +msgstr "Des/activar «breakpoint»" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "Buscar por tipo de nodo" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Copiar pose" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Encontrar Siguiente" +msgid "Cut Nodes" +msgstr "Crear nodo" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Pegar pose" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "El tipo de entrada no es iterable: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "El iterador ya no es correcto" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "El iterador ya no es correcto: " #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Invalid index property name." -msgstr "Nombre de clase padre inválido" +msgstr "El nombre de la propiedad índice no es correcto." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "¡El objeto base no es un nodo!" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "La ruta no es local" +msgstr "¡La ruta no apunta a un nodo!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "El nombre de la propiedad índice en el nodo %s no es correcto." #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid argument of type: " -msgstr "Nombre de clase padre inválido" +msgstr ": Argumento incorrecto de tipo: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Nombre de clase padre inválido" +msgstr ": Argumentos incorrectos: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet no encontrado en el script: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet no encontrado en el script: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" +"El nodo personalizado no tiene ningún método _step(), no se puede procesar " +"el grafo." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"El valor devuelto por _step() no es correcto, debe ser un entero (seq out), " +"o string/cadena (error)." #: scene/2d/animated_sprite.cpp msgid "" @@ -384,8 +418,8 @@ msgstr "" msgid "" "An occluder polygon must be set (or drawn) for this occluder to take effect." msgstr "" -"Se debe setear(o dibujar) un polígono oclusor para que este oclusor tenga " -"efecto." +"Se debe establecer (o dibujar) un polígono oclusor para que la oclusión " +"tenga efecto." #: scene/2d/light_occluder_2d.cpp msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" @@ -396,8 +430,8 @@ msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" -"Se debe crear o setear un recurso NavigationPolygon para que este nodo " -"funcione. Por favor creá una propiedad o dibujá un polígono." +"Se debe crear o establecer un recurso NavigationPolygon para que este nodo " +"funcione. Prueba estableciendo una propiedad o dibuja un polígono." #: scene/2d/navigation_polygon.cpp msgid "" @@ -433,8 +467,8 @@ msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SamplePlayer to play sound." msgstr "" -"Un recurso SampleLibrary debe ser creado o seteado en la propiedad 'samples' " -"de modo que SamplePlayer pueda reproducir sonido." +"Tienes que crear o establecer un recurso de tipo SampleLibrary con la " +"propiedad 'samples' para que SamplePlayer pueda reproducir el sonido." #: scene/2d/sprite.cpp msgid "" @@ -499,15 +533,16 @@ msgstr "Un CollisionPolygon vacio no tiene ningún efecto en la colisión." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." msgstr "" -"Se debe crear o setear un recurso NavigationMesh para que este nodo funcione." +"Se debe crear o establecer un recurso NavigationMesh para que este nodo " +"funcione." #: scene/3d/navigation_mesh.cpp msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" -"NavigationMeshInstance debe ser un hijo o nieto de un nodo Navigation. Solo " -"provee datos de navegación." +"NavigationMeshInstance debe ser un hijo o nieto de un nodo Navigation. Ya " +"que sólo proporciona los datos de navegación." #: scene/3d/scenario_fx.cpp msgid "" @@ -521,8 +556,8 @@ msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SpatialSamplePlayer to play sound." msgstr "" -"Un recurso SampleLibrary debe ser creado o seteado en la propiedad 'samples' " -"de modo que SpatialSamplePlayer puede reproducir sonido." +"Tienes que crear o establecer un recurso de tipo SampleLibrary con la " +"propiedad «samples» para que SpatialSamplePlayer pueda reproducir el sonido." #: scene/3d/sprite_3d.cpp msgid "" @@ -538,50 +573,51 @@ msgstr "Cancelar" #: scene/gui/dialogs.cpp tools/editor/scene_tree_dock.cpp msgid "OK" -msgstr "OK" +msgstr "Aceptar" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "Alerta!" +msgstr "¡Advertencia!" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "Confirmá, por favor..." +msgstr "Confirmar decisión..." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "File Exists, Overwrite?" -msgstr "El Archivo Existe, Sobreescribir?" +msgstr "El archivo ya existe, ¿quieres sobreescribirlo?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "Todas Reconocidas" +msgstr "Reconocidos" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" -msgstr "Todos los Archivos (*)" +msgstr "Todos los archivos (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Abrir" #: scene/gui/file_dialog.cpp msgid "Open a File" -msgstr "Abrir un Archivo" +msgstr "Abrir un archivo" #: scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "Abrir Archivo(s)" +msgstr "Abrir archivo/s" #: scene/gui/file_dialog.cpp msgid "Open a Directory" -msgstr "Abrir un Directorio" +msgstr "Abrir una carpeta" #: scene/gui/file_dialog.cpp msgid "Open a File or Directory" -msgstr "Abrir un Archivo o Directorio" +msgstr "Abrir un archivo o carpeta" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -592,12 +628,12 @@ msgstr "Guardar" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Save a File" -msgstr "Guardar un Archivo" +msgstr "Guardar un archivo" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp msgid "Create Folder" -msgstr "Crear Carpeta" +msgstr "Crear carpeta" #: scene/gui/file_dialog.cpp tools/editor/editor_autoload_settings.cpp #: tools/editor/editor_file_dialog.cpp @@ -608,7 +644,7 @@ msgstr "Ruta:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" -msgstr "Directorios y Archivos:" +msgstr "Carpetas y archivos:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/script_editor_debugger.cpp @@ -637,7 +673,7 @@ msgstr "Debe ser una extensión válida." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Shift+" -msgstr "Shift+" +msgstr "Mayús+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -663,23 +699,23 @@ msgstr "Botón" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Left Button." -msgstr "Botón Izquierdo." +msgstr "Botón izquierdo." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Right Button." -msgstr "Botón Derecho." +msgstr "Botón derecho." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Middle Button." -msgstr "Botón del Medio." +msgstr "Botón central." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Wheel Up." -msgstr "Rueda Arriba." +msgstr "Rueda hacia arriba." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Wheel Down." -msgstr "Rueda Abajo." +msgstr "Rueda hacia abajo." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Axis" @@ -712,14 +748,14 @@ msgstr "Pegar" #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_export.cpp msgid "Select All" -msgstr "Seleccionar Todo" +msgstr "Seleccionar todo" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/rich_text_editor_plugin.cpp #: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Clear" -msgstr "Limpiar" +msgstr "Borrar todo" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -752,7 +788,7 @@ msgstr "" #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error initializing FreeType." -msgstr "Error inicializando FreeType." +msgstr "Error al arrancar FreeType." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -762,12 +798,12 @@ msgstr "Formato de tipografía desconocido." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error loading font." -msgstr "Error cargando tipografía." +msgstr "Error al cargar la tipografía." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Invalid font size." -msgstr "Tamaño de tipografía inválido." +msgstr "Tamaño de tipografía incorrecto." #: tools/editor/animation_editor.cpp msgid "Disabled" @@ -775,92 +811,92 @@ msgstr "Desactivado" #: tools/editor/animation_editor.cpp msgid "All Selection" -msgstr "Toda la Selección" +msgstr "Toda la selección" #: tools/editor/animation_editor.cpp msgid "Move Add Key" -msgstr "Mover Agregar Clave" +msgstr "Mover o añadir clave" #: tools/editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "Cambiar Transición de Anim" +msgstr "Cambiar transición de animación" #: tools/editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "Cambiar Transform de Anim" +msgstr "Cambiar transformación de animación" #: tools/editor/animation_editor.cpp msgid "Anim Change Value" -msgstr "Cambiar Valor de Anim" +msgstr "Cambiar valor de animación" #: tools/editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "Cambiar Call de Anim" +msgstr "Cambiar llamada de animación" #: tools/editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "Agregar Track de Anim" +msgstr "Añadir pista de animación" #: tools/editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Duplicar Claves de Anim" +msgstr "Duplicar claves de animación" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "Subir Track de Anim" +msgstr "Subir pista de animación" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "Bajar Track de Anim" +msgstr "Bajar pista de animación" #: tools/editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "Quitar Track de Anim" +msgstr "Quitar pista de animación" #: tools/editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "Setear Transiciones a:" +msgstr "Establecer transiciones en:" #: tools/editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "Renombrar Track de Anim" +msgstr "Renombrar pista de animación" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "Cambiar Interpolación de Track de Anim" +msgstr "Cambiar interpolación de pista de animación" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "Cambiar Modo de Valor de Track de Anim" +msgstr "Cambiar modo de valor de pista de animación" #: tools/editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "Editar Nodo Curva" +msgstr "Editar nodo de curva" #: tools/editor/animation_editor.cpp msgid "Edit Selection Curve" -msgstr "Editar Curva de Selección" +msgstr "Editar curva de selección" #: tools/editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "Borrar Claves de Anim" +msgstr "Borrar claves de animación" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "Duplicar Selección" +msgstr "Duplicar selección" #: tools/editor/animation_editor.cpp msgid "Duplicate Transposed" -msgstr "Duplicar Transpuesto" +msgstr "Duplicar transpuesto" #: tools/editor/animation_editor.cpp msgid "Remove Selection" -msgstr "Quitar Selección" +msgstr "Quitar selección" #: tools/editor/animation_editor.cpp msgid "Continuous" -msgstr "Contínuo" +msgstr "Continuo" #: tools/editor/animation_editor.cpp msgid "Discrete" @@ -872,27 +908,27 @@ msgstr "Trigger" #: tools/editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "Agregar Clave de Anim" +msgstr "Añadir clave de animación" #: tools/editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "Mover Claves de Anim" +msgstr "Mover claves de animación" #: tools/editor/animation_editor.cpp msgid "Scale Selection" -msgstr "Escalar Selección" +msgstr "Escalar selección" #: tools/editor/animation_editor.cpp msgid "Scale From Cursor" -msgstr "Escalar Desde Cursor" +msgstr "Escalar desde cursor" #: tools/editor/animation_editor.cpp msgid "Goto Next Step" -msgstr "Ir a Paso Próximo" +msgstr "Ir al siguiente paso" #: tools/editor/animation_editor.cpp msgid "Goto Prev Step" -msgstr "Ir a Paso Previo" +msgstr "Ir al paso anterior" #: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp msgid "Linear" @@ -905,19 +941,19 @@ msgstr "Constante" #: tools/editor/animation_editor.cpp msgid "In" -msgstr "In" +msgstr "Entrada" #: tools/editor/animation_editor.cpp msgid "Out" -msgstr "Out" +msgstr "Salida" #: tools/editor/animation_editor.cpp msgid "In-Out" -msgstr "In-Out" +msgstr "Entrada-salida" #: tools/editor/animation_editor.cpp msgid "Out-In" -msgstr "Out-In" +msgstr "Salida-entrada" #: tools/editor/animation_editor.cpp msgid "Transitions" @@ -925,19 +961,19 @@ msgstr "Transiciones" #: tools/editor/animation_editor.cpp msgid "Optimize Animation" -msgstr "Optimizar Animación" +msgstr "Optimizar animación" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "Hacer Clean-Up de Animación" +msgstr "Limpiar animación" #: tools/editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "Crear NUEVO track para %s e insertar clave?" +msgstr "¿Quieres crear una NUEVA pista para %s e insertar clave?" #: tools/editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "Crear %d NUEVOS tracks e insertar claves?" +msgstr "¿Quieres crear %d NUEVOS pistas e insertar claves?" #: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -950,39 +986,40 @@ msgstr "Crear" #: tools/editor/animation_editor.cpp msgid "Anim Create & Insert" -msgstr "Crear e Insertar Anim" +msgstr "Crear e insertar animación" #: tools/editor/animation_editor.cpp msgid "Anim Insert Track & Key" -msgstr "Insertar Track y Clave de Anim" +msgstr "Insertar pista y clave de animación" #: tools/editor/animation_editor.cpp msgid "Anim Insert Key" -msgstr "Insertar Clave de Anim" +msgstr "Insertar clave de animación" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "Cambiar Largo de Anim" +msgstr "Cambiar duración de animación" #: tools/editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "Cambiar Loop de Anim" +msgstr "Cambiar repeticiones de animación" #: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" -msgstr "Crear Clave de Valor Tipado para Anim" +msgstr "Crear clave de valor de tipo para animación" #: tools/editor/animation_editor.cpp msgid "Anim Insert" -msgstr "Insertar Anim" +msgstr "Insertar animación" #: tools/editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "Escalar Keys de Anim" +msgstr "Escalar claves de animación" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Add Call Track" -msgstr "Agregar Call Track para Anim" +msgstr "Añadir «call track» de animación" #: tools/editor/animation_editor.cpp msgid "Animation zoom." @@ -990,11 +1027,11 @@ msgstr "Zoom de animación." #: tools/editor/animation_editor.cpp msgid "Length (s):" -msgstr "Largo (s):" +msgstr "Duración (seg.):" #: tools/editor/animation_editor.cpp msgid "Animation length (in seconds)." -msgstr "Largo de Animación (en segundos)." +msgstr "Duración de animación (en segundos)." #: tools/editor/animation_editor.cpp msgid "Step (s):" @@ -1006,47 +1043,47 @@ msgstr "Snap de cursor por pasos (en segundos)." #: tools/editor/animation_editor.cpp msgid "Enable/Disable looping in animation." -msgstr "Activar/Desactivar loopeo en la animación." +msgstr "Repetir o no la animación." #: tools/editor/animation_editor.cpp msgid "Add new tracks." -msgstr "Agregar nuevos tracks." +msgstr "Añadir nuevas pistas." #: tools/editor/animation_editor.cpp msgid "Move current track up." -msgstr "Subir el track actual." +msgstr "Subir la pista actual." #: tools/editor/animation_editor.cpp msgid "Move current track down." -msgstr "Bajar el track actual." +msgstr "Bajar la pista actual." #: tools/editor/animation_editor.cpp msgid "Remove selected track." -msgstr "Quitar el track seleccionado." +msgstr "Quitar el pista seleccionada." #: tools/editor/animation_editor.cpp msgid "Track tools" -msgstr "Herramientas de tracks" +msgstr "Herramientas de pistas" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "Activar la edición de claves individuales al cliquearlas." +msgstr "Editar claves individuales al hacer clic." #: tools/editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "Optimizador de Anim." +msgstr "Optimizar animación" #: tools/editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr "Error Lineal Max.:" +msgstr "Máximo error lineal:" #: tools/editor/animation_editor.cpp msgid "Max. Angular Error:" -msgstr "Error Angular Max.:" +msgstr "Máximo error angular:" #: tools/editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "Angulo Optimizable Max.:" +msgstr "Máximo ángulo optimizable:" #: tools/editor/animation_editor.cpp msgid "Optimize" @@ -1055,6 +1092,8 @@ msgstr "Optimizar" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." msgstr "" +"Selecciona un AnimationPlayer desde el árbol de escenas para editar " +"animaciones." #: tools/editor/animation_editor.cpp msgid "Key" @@ -1066,47 +1105,48 @@ msgstr "Transición" #: tools/editor/animation_editor.cpp msgid "Scale Ratio:" -msgstr "Ratio de Escala:" +msgstr "Relación de escalado:" #: tools/editor/animation_editor.cpp msgid "Call Functions in Which Node?" -msgstr "Llamar Funciones en Cual Nodo?" +msgstr "¿En qué nodo quieres llamar funciones?" #: tools/editor/animation_editor.cpp msgid "Remove invalid keys" -msgstr "Quitar claves inválidas" +msgstr "Quitar claves incorrectas" #: tools/editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "Quitar tracks vacios y sin resolver" +msgstr "Quitar pistas vacías y sin resolver" #: tools/editor/animation_editor.cpp msgid "Clean-up all animations" -msgstr "Hacer clean-up de todas las animaciones" +msgstr "Limpiar todas las animaciones" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "Hacer Clean-Up de Animación(es) (IMPOSIBLE DESHACER!)" +msgstr "Limpiar todas las animaciones (IRREVERSIBLE)" #: tools/editor/animation_editor.cpp msgid "Clean-Up" -msgstr "Clean-Up" +msgstr "Limpiar" #: tools/editor/array_property_edit.cpp msgid "Resize Array" -msgstr "Redimencionar Array" +msgstr "Redimensionar «array»" #: tools/editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "Cambiar Tipo de Valor del Array" +msgstr "Cambiar tipo de valor del «array»" #: tools/editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "Cambiar Valor del Array" +msgstr "Cambiar valor del «array»" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Buscar:" @@ -1134,7 +1174,7 @@ msgstr "Sitio:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Support.." -msgstr "Soporte.." +msgstr "Ayuda..." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" @@ -1146,23 +1186,23 @@ msgstr "Comunidad" #: tools/editor/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "Testeo" +msgstr "Prueba" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "Archivo ZIP de Assets" +msgstr "Archivo ZIP de elementos" #: tools/editor/call_dialog.cpp msgid "Method List For '%s':" -msgstr "Lista de Métodos Para '%s':" +msgstr "Lista de métodos Para '%s':" #: tools/editor/call_dialog.cpp msgid "Call" -msgstr "Llamar" +msgstr "Llamada" #: tools/editor/call_dialog.cpp msgid "Method List:" -msgstr "Lista de Métodos:" +msgstr "Lista de métodos:" #: tools/editor/call_dialog.cpp msgid "Arguments:" @@ -1170,23 +1210,23 @@ msgstr "Argumentos:" #: tools/editor/call_dialog.cpp msgid "Return:" -msgstr "Retornar:" +msgstr "Devuelve:" #: tools/editor/code_editor.cpp msgid "Go to Line" -msgstr "Ir a Línea" +msgstr "Ir a línea" #: tools/editor/code_editor.cpp msgid "Line Number:" -msgstr "Numero de Línea:" +msgstr "Número de línea:" #: tools/editor/code_editor.cpp msgid "No Matches" -msgstr "Sin Coincidencias" +msgstr "Sin soincidencias" #: tools/editor/code_editor.cpp msgid "Replaced %d Ocurrence(s)." -msgstr "%d Ocurrencia(s) Reemplazada(s)." +msgstr "%d ocurrencias reemplazadas." #: tools/editor/code_editor.cpp msgid "Replace" @@ -1194,19 +1234,19 @@ msgstr "Reemplazar" #: tools/editor/code_editor.cpp msgid "Replace All" -msgstr "Reemplazar Todo" +msgstr "Reemplazar todo" #: tools/editor/code_editor.cpp msgid "Match Case" -msgstr "Coincidir Mayúsculas/Minúsculas" +msgstr "Coincidir mayús/minúsculas" #: tools/editor/code_editor.cpp msgid "Whole Words" -msgstr "Palabras Completas" +msgstr "Palabras completas" #: tools/editor/code_editor.cpp msgid "Selection Only" -msgstr "Solo Selección" +msgstr "Sólo selección" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -1218,7 +1258,7 @@ msgstr "Buscar" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp msgid "Find" -msgstr "Encontrar" +msgstr "Búsqueda" #: tools/editor/code_editor.cpp msgid "Next" @@ -1226,61 +1266,61 @@ msgstr "Siguiente" #: tools/editor/code_editor.cpp msgid "Replaced %d ocurrence(s)." -msgstr "%d Ocurrencia(s) Reemplazadas." +msgstr "%d ocurrencias reemplazadas." #: tools/editor/code_editor.cpp msgid "Not found!" -msgstr "No se encontró!" +msgstr "¡No se ha encontrado!" #: tools/editor/code_editor.cpp msgid "Replace By" -msgstr "Reemplazar Por" +msgstr "Reemplazar por" #: tools/editor/code_editor.cpp msgid "Case Sensitive" -msgstr "Respetar Mayúsculas/Minúsculas" +msgstr "Respetar mayús/minúsculas" #: tools/editor/code_editor.cpp msgid "Backwards" -msgstr "Hacia Atrás" +msgstr "Hacia atrás" #: tools/editor/code_editor.cpp msgid "Prompt On Replace" -msgstr "Preguntar Antes de Reemplazar" +msgstr "Preguntar antes de reemplazar" #: tools/editor/code_editor.cpp msgid "Skip" -msgstr "Saltear" +msgstr "Saltar" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom In" -msgstr "Zoom In" +msgstr "Acercar" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Out" -msgstr "Zoom Out" +msgstr "Alejar" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Restablecer zoom" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" -msgstr "Linea:" +msgstr "Línea:" #: tools/editor/code_editor.cpp msgid "Col:" -msgstr "Col:" +msgstr "Columna:" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "El método en el Nodo objetivo debe ser especificado!" +msgstr "¡Debes establecer un método en el nodo seleccionado!" #: tools/editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "Conectar a Nodo:" +msgstr "Conectar a nodo:" #: tools/editor/connections_dialog.cpp #: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp @@ -1288,7 +1328,7 @@ msgstr "Conectar a Nodo:" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Add" -msgstr "Agregar" +msgstr "Añadir" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp @@ -1298,20 +1338,21 @@ msgid "Remove" msgstr "Quitar" #: tools/editor/connections_dialog.cpp +#, fuzzy msgid "Add Extra Call Argument:" -msgstr "Agregar Argumento de Llamada Extra:" +msgstr "Añadir argumento de llamada extra:" #: tools/editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "Argumentos de Llamada Extras:" +msgstr "Argumentos de llamada extras:" #: tools/editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "Ruta al Nodo:" +msgstr "Ruta al nodo:" #: tools/editor/connections_dialog.cpp msgid "Make Function" -msgstr "Crear Función" +msgstr "Crear runción" #: tools/editor/connections_dialog.cpp msgid "Deferred" @@ -1319,7 +1360,7 @@ msgstr "Diferido" #: tools/editor/connections_dialog.cpp msgid "Oneshot" -msgstr "Oneshot" +msgstr "Una vez" #: tools/editor/connections_dialog.cpp msgid "Connect" @@ -1327,19 +1368,19 @@ msgstr "Conectar" #: tools/editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "Conectar '%s' a '%s'" +msgstr "Conectar «%s» a «%s»" #: tools/editor/connections_dialog.cpp msgid "Connecting Signal:" -msgstr "Conectando Señal:" +msgstr "Conectando señal:" #: tools/editor/connections_dialog.cpp msgid "Create Subscription" -msgstr "Crear Subscripción" +msgstr "Crear suscripción" #: tools/editor/connections_dialog.cpp msgid "Connect.." -msgstr "Conectar.." +msgstr "Conectar..." #: tools/editor/connections_dialog.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp @@ -1352,34 +1393,42 @@ msgstr "Señales" #: tools/editor/create_dialog.cpp msgid "Create New" -msgstr "Crear Nuevo" +msgstr "Crear nuevo" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Coincidencias:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Descripción:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" -msgstr "Buscar Reemplazo Para:" +msgstr "Buscar reemplazo para:" #: tools/editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "Dependencias Para:" +msgstr "Dependencias para:" #: tools/editor/dependency_editor.cpp msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" -"La Escena '%s' esta siendo editada actualmente.\n" -"Los cambios no tendrán efecto hasta recargarlo." +"Estás editando la escena «%s».\n" +"Por lo que los cambios no tendrán efecto hasta que recargues." #: tools/editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will take effect when reloaded." -msgstr "El recurso '%s' está en uso. Los cambios tendrán efecto al recargarlo." +msgstr "" +"Se está usando el recurso «%s».\n" +"Por lo que los cambios no tendrán efecto hasta que recargues." #: tools/editor/dependency_editor.cpp msgid "Dependencies" @@ -1400,19 +1449,19 @@ msgstr "Dependencias:" #: tools/editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "Arreglar Rota(s)" +msgstr "Arreglar rota(s)" #: tools/editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "Editor de Dependencias" +msgstr "Editor de dependencias" #: tools/editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "Buscar Reemplazo de Recurso:" +msgstr "Buscar reemplazo de recurso:" #: tools/editor/dependency_editor.cpp msgid "Owners Of:" -msgstr "Dueños De:" +msgstr "Dueños de:" #: tools/editor/dependency_editor.cpp msgid "" @@ -1420,58 +1469,59 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" -"Los archivos que se están removiendo son requeridos por otros recursos para " +"Otros recursos necesitan los archivos que estás intentando quitar para " "funcionar.\n" -"Quitarlos de todos modos? (imposible deshacer)" +"¿Seguro que quieres quitarlos? (No puedes deshacerlo)" #: tools/editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" -msgstr "Quitar los archivos seleccionados del proyecto? (imposible deshacer)" +msgstr "" +"¿Quieres quitar los archivos seleccionados del proyecto? (No puedes " +"deshacerlo)" #: tools/editor/dependency_editor.cpp msgid "Error loading:" -msgstr "Error cargando:" +msgstr "Error al cargar:" #: tools/editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "" -"La escena falló al cargar debido a las siguientes dependencias faltantes:" +msgstr "La escena no se pudo cargar porque faltan las siguientes dependencias:" #: tools/editor/dependency_editor.cpp msgid "Open Anyway" -msgstr "Abrir de Todos Modos" +msgstr "Abrir de todos modos" #: tools/editor/dependency_editor.cpp msgid "Which action should be taken?" -msgstr "Que Acción Se Debería Tomar?" +msgstr "¿Qué es lo que quieres hacer?" #: tools/editor/dependency_editor.cpp msgid "Fix Dependencies" -msgstr "Arreglar Dependencias" +msgstr "Arreglar dependencias" #: tools/editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "Errores al cargar!" +msgstr "¡Hubo errores al cargar!" #: tools/editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "Eliminar permanentemente %d item(s)? (Imposible deshacer!)" +msgstr "¿Quieres eliminar permanentemente %d elementos? (Irreversible)" #: tools/editor/dependency_editor.cpp msgid "Owns" -msgstr "Es Dueño De" +msgstr "Es dueño de" #: tools/editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "Recursos Sin Propietario Explícito:" +msgstr "Recursos sin propietario explícito:" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "Explorador de Recursos Huérfanos" +msgstr "Explorador de recursos huérfanos" #: tools/editor/dependency_editor.cpp msgid "Delete selected files?" -msgstr "Eliminar archivos seleccionados?" +msgstr "¿Quieres eliminar los archivos seleccionados?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp @@ -1482,33 +1532,33 @@ msgstr "Eliminar" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name." -msgstr "Nombre inválido." +msgstr "El nombre no es correcto." #: tools/editor/editor_autoload_settings.cpp msgid "Valid characters:" -msgstr "Caracteres válidos:" +msgstr "Letras válidas:" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing engine class name." msgstr "" -"Nombre inválido. No debe colisionar con un nombre existente de clases del " -"engine." +"El nombre no es correcto. No puede coincidir con un nombre de clase que ya " +"existe en el motor gráfico." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." msgstr "" -"Nombre inválido. No debe colisionar con un nombre existente de un tipo built-" -"in." +"El nombre no es correcto. No puede coincidir con un nombre de tipo " +"predeterminado que ya existe en el motor gráfico." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." msgstr "" -"Nombre inválido. No debe colisionar con un nombre de constante global " -"existente." +"El nombre no es correcto. No puede coincidir con un nombre de constante " +"global que ya existe en el motor gráfico." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid Path." -msgstr "Ruta inválida." +msgstr "Ruta incorrecta." #: tools/editor/editor_autoload_settings.cpp msgid "File does not exist." @@ -1520,27 +1570,27 @@ msgstr "No está en la ruta de recursos." #: tools/editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "Agregar AutoLoad" +msgstr "Añadir «AutoLoad»" #: tools/editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "Autocargar '%s' ya existe!" +msgstr "¡El Autoload «%s» ya existe!" #: tools/editor/editor_autoload_settings.cpp msgid "Rename Autoload" -msgstr "Renombrar Autoload" +msgstr "Renombrar «Autoload»" #: tools/editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" -msgstr "Act/Desact. AutoLoad Globals" +msgstr "Des/activar globales de «Autoload»" #: tools/editor/editor_autoload_settings.cpp msgid "Move Autoload" -msgstr "Mover Autoload" +msgstr "Mover «Autoload»" #: tools/editor/editor_autoload_settings.cpp msgid "Remove Autoload" -msgstr "Quitar Autoload" +msgstr "Quitar «Autoload»" #: tools/editor/editor_autoload_settings.cpp msgid "Enable" @@ -1548,11 +1598,11 @@ msgstr "Activar" #: tools/editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" -msgstr "Reordenar Autoloads" +msgstr "Reordenar «Autoloads»" #: tools/editor/editor_autoload_settings.cpp msgid "Node Name:" -msgstr "Nombre de Nodo:" +msgstr "Nombre del nodo:" #: tools/editor/editor_autoload_settings.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp @@ -1563,7 +1613,7 @@ msgstr "Nombre" #: tools/editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "Singleton" +msgstr "«Singleton»" #: tools/editor/editor_autoload_settings.cpp msgid "List:" @@ -1571,7 +1621,7 @@ msgstr "Lista:" #: tools/editor/editor_data.cpp msgid "Updating Scene" -msgstr "Actualizando Escena" +msgstr "Actualizando escena" #: tools/editor/editor_data.cpp msgid "Storing local changes.." @@ -1583,7 +1633,7 @@ msgstr "Actualizando escena.." #: tools/editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "Elegí un Directorio" +msgstr "Elige una carpeta" #: tools/editor/editor_dir_dialog.cpp msgid "Choose" @@ -1603,31 +1653,31 @@ msgstr "Subir" #: tools/editor/editor_file_dialog.cpp msgid "Refresh" -msgstr "Refrescar" +msgstr "Recargar" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "Act/Desact. Archivos Ocultos" +msgstr "Ver/ocultar archivos ocultos" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "Act/Desact. Favorito" +msgstr "Añadir/quitar favorito" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "Act/Desact. Modo" +msgstr "Cambiar modo" #: tools/editor/editor_file_dialog.cpp msgid "Focus Path" -msgstr "Foco en Ruta" +msgstr "Seleccionar ruta" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "Subir Favorito" +msgstr "Subir favorito" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "Bajar Favorito" +msgstr "Bajar favorito" #: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp msgid "Favorites:" @@ -1639,23 +1689,23 @@ msgstr "Recientes:" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "Vista Previa:" +msgstr "Vista previa:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" -msgstr "EscanearFuentes" +msgstr "AnalizandoFuentes" #: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Search Help" -msgstr "Ayuda de Búsqueda" +msgstr "Ayuda de búsqueda" #: tools/editor/editor_help.cpp msgid "Class List:" -msgstr "Lista de Clases:" +msgstr "Lista de clases:" #: tools/editor/editor_help.cpp msgid "Search Classes" -msgstr "Buscar Clases" +msgstr "Buscar clases" #: tools/editor/editor_help.cpp tools/editor/property_editor.cpp msgid "Class:" @@ -1672,39 +1722,35 @@ msgstr "Heredada por:" #: tools/editor/editor_help.cpp msgid "Brief Description:" -msgstr "Descripción Breve:" +msgstr "Descripción breve:" #: tools/editor/editor_help.cpp msgid "Public Methods:" -msgstr "Métodos Públicos:" +msgstr "Métodos públicos:" #: tools/editor/editor_help.cpp msgid "GUI Theme Items:" -msgstr "Items de Tema de la GUI:" +msgstr "Elementos de tema de interfaz:" #: tools/editor/editor_help.cpp msgid "Constants:" msgstr "Constantes:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Descripción:" - #: tools/editor/editor_help.cpp msgid "Method Description:" -msgstr "Descripción de Métodos:" +msgstr "Descripción de métodos:" #: tools/editor/editor_help.cpp msgid "Search Text" -msgstr "Texto de Búsqueda" +msgstr "Texto de búsqueda" #: tools/editor/editor_import_export.cpp msgid "Added:" -msgstr "Agregado:" +msgstr "Añadido:" #: tools/editor/editor_import_export.cpp msgid "Removed:" -msgstr "Removido:" +msgstr "Eliminado:" #: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp msgid "Error saving atlas:" @@ -1712,11 +1758,11 @@ msgstr "Error al guardar atlas:" #: tools/editor/editor_import_export.cpp msgid "Could not save atlas subtexture:" -msgstr "No se pudo guardar la subtextura de altas:" +msgstr "No se pudo guardar la subtextura del altas:" #: tools/editor/editor_import_export.cpp msgid "Storing File:" -msgstr "Almacenando Archivo:" +msgstr "Almacén de archivo:" #: tools/editor/editor_import_export.cpp msgid "Packing" @@ -1728,7 +1774,7 @@ msgstr "Exportando para %s" #: tools/editor/editor_import_export.cpp msgid "Setting Up.." -msgstr "Configurando.." +msgstr "Configurando..." #: tools/editor/editor_log.cpp msgid " Output:" @@ -1744,23 +1790,23 @@ msgstr "Importando:" #: tools/editor/editor_node.cpp msgid "Node From Scene" -msgstr "Nodo desde Escena" +msgstr "Nodo desde escena" #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp msgid "Error saving resource!" -msgstr "Error al guardar el recurso!" +msgstr "¡Hubo un error al guardar el recurso!" #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp msgid "Save Resource As.." -msgstr "Guardar Recurso Como.." +msgstr "Guardar recurso como.." #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "I see.." -msgstr "Ya Veo.." +msgstr "Muy bien..." #: tools/editor/editor_node.cpp msgid "Can't open file for writing:" @@ -1768,15 +1814,15 @@ msgstr "No se puede abrir el archivo para escribir:" #: tools/editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "Formato requerido de archivo desconocido:" +msgstr "Formato de archivo desconocido:" #: tools/editor/editor_node.cpp msgid "Error while saving." -msgstr "Error al grabar." +msgstr "Error al guardar." #: tools/editor/editor_node.cpp msgid "Saving Scene" -msgstr "Guardar Escena" +msgstr "Guardar escena" #: tools/editor/editor_node.cpp msgid "Analyzing" @@ -1784,87 +1830,87 @@ msgstr "Analizando" #: tools/editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "Creando Miniatura" +msgstr "Creando miniatura" #: tools/editor/editor_node.cpp msgid "" "Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." msgstr "" -"No se pudo guardar la escena. Probablemente no se hayan podido satisfacer " -"dependencias (instancias)." +"No se pudo guardar la escena. Es posible que no se hayan podido satisfacer " +"las dependencias (instancias)." #: tools/editor/editor_node.cpp msgid "Failed to load resource." -msgstr "Fallo al cargar recurso." +msgstr "Hubo un problema al cargar el recurso." #: tools/editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "No se puede cargar MeshLibrary para hacer merge!" +msgstr "¡No se puede cargar MeshLibrary para poder unir los datos!" #: tools/editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "Error guardando MeshLibrary!" +msgstr "¡Error al guardar la MeshLibrary!" #: tools/editor/editor_node.cpp msgid "Can't load TileSet for merging!" -msgstr "No se puede cargar TileSet para hacer merge!" +msgstr "¡No se puede cargar TileSet para poder unir los datos!" #: tools/editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "Error guardando TileSet!" +msgstr "¡Error al guardar el TileSet!" #: tools/editor/editor_node.cpp msgid "Can't open export templates zip." -msgstr "No se puede abir el zip de templates de exportación." +msgstr "No se puede abir el zip de plantillas de exportación." #: tools/editor/editor_node.cpp msgid "Loading Export Templates" -msgstr "Cargando Templates de Exportación" +msgstr "Cargando plantillas de exportación" #: tools/editor/editor_node.cpp msgid "Error trying to save layout!" -msgstr "Error al tratar de guardar el layout!" +msgstr "¡Hubo un problema al intentar guardar los ajustes!" #: tools/editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "Layout por defecto del editor sobreescrito." +msgstr "Se han sobrescrito los ajustes predeterminados del editor." #: tools/editor/editor_node.cpp msgid "Layout name not found!" -msgstr "Nombre de layout no encontrado!" +msgstr "¡No se encuentra el nombre del ajuste!" #: tools/editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "Se restauró el layout por defecto a sus seteos base." +msgstr "Se han restaurado los ajustes predeterminados." #: tools/editor/editor_node.cpp msgid "Copy Params" -msgstr "Copiar Params" +msgstr "Copiar parámetros" #: tools/editor/editor_node.cpp msgid "Paste Params" -msgstr "Pegar Parametros" +msgstr "Pegar parámetros" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "Pegar Recurso" +msgstr "Pegar recurso" #: tools/editor/editor_node.cpp msgid "Copy Resource" -msgstr "Copiar Recurso" +msgstr "Copiar recurso" #: tools/editor/editor_node.cpp msgid "Make Built-In" -msgstr "Crear Built-In" +msgstr "Hacerlo integrado" #: tools/editor/editor_node.cpp msgid "Make Sub-Resources Unique" -msgstr "Crear Sub-Recurso Unico" +msgstr "Crear subrecurso único" #: tools/editor/editor_node.cpp msgid "Open in Help" -msgstr "Abrir en la Ayuda" +msgstr "Abrir en la ayuda" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1876,9 +1922,9 @@ msgid "" "You can change it later in later in \"Project Settings\" under the " "'application' category." msgstr "" -"No se ha definido ninguna escena principal, ¿elegir una?\n" -"Es posible cambiarla más tarde en \"Ajustes del Proyecto\" bajo la categoria " -"'aplicacion'." +"No se ha definido ninguna escena principal, ¿quieres elegir alguna?\n" +"Es posible cambiarla más tarde en «Ajustes del proyecto» bajo la categoría " +"«aplicación»." #: tools/editor/editor_node.cpp msgid "" @@ -1908,51 +1954,52 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "No se pudo comenzar el subproceso!" +msgstr "¡No se pudo comenzar el subproceso!" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "Abrir Escena" +msgstr "Abrir escena" #: tools/editor/editor_node.cpp msgid "Open Base Scene" -msgstr "Abrir Escena Base" +msgstr "Abrir escena base" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "Abrir Escena Rapido.." +msgstr "Abrir escena rápido.." #: tools/editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "Abrir Script Rapido.." +msgstr "Abrir script rápido.." #: tools/editor/editor_node.cpp msgid "Yes" -msgstr "Si" +msgstr "Sí" #: tools/editor/editor_node.cpp msgid "Close scene? (Unsaved changes will be lost)" -msgstr "Cerrar escena? (Los cambios sin guardar se perderán)" +msgstr "¿Quieres cerrar la escena? (Los cambios sin guardar se perderán)" #: tools/editor/editor_node.cpp msgid "Save Scene As.." -msgstr "Guardar Escena Como.." +msgstr "Guardar escena como.." #: tools/editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "Esta escena nunca ha sido guardada. Guardar antes de ejecutar?" +msgstr "" +"Esta escena nunca se ha guardado. ¿Quieres guardarla antes de ejecutarla?" #: tools/editor/editor_node.cpp msgid "Please save the scene first." -msgstr "Por favor guardá la escena primero." +msgstr "Prueba guardando la escena primero." #: tools/editor/editor_node.cpp msgid "Save Translatable Strings" -msgstr "Guardar Strings Traducibles" +msgstr "Guardar cadenas traducibles" #: tools/editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "Exportar Librería de Meshes" +msgstr "Exportar biblioteca de modelos" #: tools/editor/editor_node.cpp msgid "Export Tile Set" @@ -1964,11 +2011,11 @@ msgstr "Salir" #: tools/editor/editor_node.cpp msgid "Exit the editor?" -msgstr "Salir del editor?" +msgstr "¿Quieres salir del editor?" #: tools/editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "Escena actual sin guardar. Abrir de todos modos?" +msgstr "La escena actual no se ha guardado. ¿Quieres abrirla de todos modos?" #: tools/editor/editor_node.cpp msgid "Can't reload a scene that was never saved." @@ -1980,66 +2027,68 @@ msgstr "Revertir" #: tools/editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" -msgstr "Esta acción no se puede deshacer. Revertir de todos modos?" +msgstr "Esta acción es irreversible. ¿Quieres revertirla de todos modos?" #: tools/editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "Ejecutar Escena Rapido.." +msgstr "Ejecutar escena rápido.." #: tools/editor/editor_node.cpp msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" -msgstr "Abrir el Gestor de Proyectos? (Los cambios sin guardar se perderán)" +msgstr "" +"¿Quieres abrir el el administrador de proyectos?\n" +"(Los cambios sin guardar se perderán)" #: tools/editor/editor_node.cpp msgid "Pick a Main Scene" -msgstr "Elegí una Escena Principal" +msgstr "Elige una escena principal" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" -msgstr "Ugh" +msgstr "Vaya" #: tools/editor/editor_node.cpp msgid "" "Error loading scene, it must be inside the project path. Use 'Import' to " "open the scene, then save it inside the project path." msgstr "" -"Error al cargar la escena, debe estar dentro de la ruta del proyecto. Usa " -"'Importar' para abrir la escena, luego guardala dentro de la ruta del " -"proyecto." +"Hubo un error al cargar la escena, debe estar dentro de la ruta del " +"proyecto. Utiliza «Importar» para abrir la escena, luego guárdala dentro de " +"la ruta del proyecto." #: tools/editor/editor_node.cpp msgid "Error loading scene." -msgstr "Error al cargar la escena." +msgstr "Hubo un error al cargar la escena." #: tools/editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "La escena '%s' tiene dependencias rotas:" +msgstr "La escena «%s» tiene dependencias rotas:" #: tools/editor/editor_node.cpp msgid "Save Layout" -msgstr "Guardar Layout" +msgstr "Guardar ajustes" #: tools/editor/editor_node.cpp msgid "Delete Layout" -msgstr "Eliminar Layout" +msgstr "Borrar ajustes" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" -msgstr "Por Defecto" +msgstr "Predeterminado" #: tools/editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "Cambiar Pestaña de Escena" +msgstr "Cambiar pestaña de escena" #: tools/editor/editor_node.cpp msgid "%d more file(s)" -msgstr "%d archivo(s) más" +msgstr "%d archivos más" #: tools/editor/editor_node.cpp msgid "%d more file(s) or folder(s)" -msgstr "%d archivo(s) o carpeta(s) más" +msgstr "%d archivos o carpetas más" #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp @@ -2052,11 +2101,11 @@ msgstr "Ir a la escena abierta previamente." #: tools/editor/editor_node.cpp msgid "Fullscreen Mode" -msgstr "Modo Pantalla Completa" +msgstr "Modo pantalla completa" #: tools/editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "Modo Sin Distracciones" +msgstr "Modo sin distracciones" #: tools/editor/editor_node.cpp msgid "Next tab" @@ -2072,51 +2121,51 @@ msgstr "Operaciones con archivos de escena." #: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "Nueva Escena" +msgstr "Nueva escena" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "Nueva Escena Heredada.." +msgstr "Nueva escena heredada.." #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "Abrir Escena.." +msgstr "Abrir escena.." #: tools/editor/editor_node.cpp msgid "Save Scene" -msgstr "Guardar Escena" +msgstr "Guardar escena" #: tools/editor/editor_node.cpp msgid "Save all Scenes" -msgstr "Guardar todas las Escenas" +msgstr "Guardar todas las escenas" #: tools/editor/editor_node.cpp msgid "Close Scene" -msgstr "Cerrar Escena" +msgstr "Cerrar escena" #: tools/editor/editor_node.cpp msgid "Close Goto Prev. Scene" -msgstr "Cerrar e Ir a Escena Prev." +msgstr "Cerrar e ir a escena anterior" #: tools/editor/editor_node.cpp msgid "Open Recent" -msgstr "Abrir Reciente" +msgstr "Abrir reciente" #: tools/editor/editor_node.cpp msgid "Quick Filter Files.." -msgstr "Filtrado Rapido de Archivos.." +msgstr "Filtrado rápido de archivos..." #: tools/editor/editor_node.cpp msgid "Convert To.." -msgstr "Convertir A.." +msgstr "Convertir a..." #: tools/editor/editor_node.cpp msgid "Translatable Strings.." -msgstr "Strings Traducibles.." +msgstr "Cadenas traducibles..." #: tools/editor/editor_node.cpp msgid "MeshLibrary.." -msgstr "MeshLibrary.." +msgstr "MeshLibrary..." #: tools/editor/editor_node.cpp msgid "TileSet.." @@ -2129,23 +2178,23 @@ msgstr "Rehacer" #: tools/editor/editor_node.cpp msgid "Run Script" -msgstr "Ejecutar Script" +msgstr "Ejecutar script" #: tools/editor/editor_node.cpp msgid "Project Settings" -msgstr "Configuración de Proyecto" +msgstr "Ajustes del proyecto" #: tools/editor/editor_node.cpp msgid "Revert Scene" -msgstr "Revertir Escena" +msgstr "Revertir escena" #: tools/editor/editor_node.cpp msgid "Quit to Project List" -msgstr "Salir a Listado de Proyecto" +msgstr "Salir al listado del proyecto" #: tools/editor/editor_node.cpp msgid "Import assets to the project." -msgstr "Importar assets al proyecto." +msgstr "Importar elementos al proyecto." #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp @@ -2161,7 +2210,7 @@ msgstr "Importar" #: tools/editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "Herramientas misceláneas a nivel proyecto o escena." +msgstr "Herramientas varias o de escenas." #: tools/editor/editor_node.cpp msgid "Tools" @@ -2169,7 +2218,7 @@ msgstr "Herramientas" #: tools/editor/editor_node.cpp msgid "Export the project to many platforms." -msgstr "Exportar el proyecto a munchas plataformas." +msgstr "Exportar el proyecto a varias plataformas." #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export" @@ -2177,7 +2226,7 @@ msgstr "Exportar" #: tools/editor/editor_node.cpp msgid "Play the project." -msgstr "Reproducir el proyecto." +msgstr "Inicia el proyecto para poder jugarlo." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -2190,11 +2239,11 @@ msgstr "Pausar la escena" #: tools/editor/editor_node.cpp msgid "Pause Scene" -msgstr "Pausar la Escena" +msgstr "Pausar la escena" #: tools/editor/editor_node.cpp msgid "Stop the scene." -msgstr "Parar la escena." +msgstr "Detener la escena." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -2207,7 +2256,7 @@ msgstr "Reproducir la escena editada." #: tools/editor/editor_node.cpp msgid "Play Scene" -msgstr "Reproducir Escena" +msgstr "Reproducir escena" #: tools/editor/editor_node.cpp msgid "Play custom scene" @@ -2215,27 +2264,27 @@ msgstr "Reproducir escena personalizada" #: tools/editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "Reproducir Escena Personalizada" +msgstr "Reproducir escena personalizada" #: tools/editor/editor_node.cpp msgid "Debug options" -msgstr "Opciones de debugueo" +msgstr "Opciones de depuración" #: tools/editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "Hacer Deploy con Debug Remoto" +msgstr "Exportar con depuración remota" #: tools/editor/editor_node.cpp msgid "" "When exporting or deploying, the resulting executable will attempt to " "connect to the IP of this computer in order to be debugged." msgstr "" -"Al exportar o hacer deploy, el ejecutable resultante tratara de contectarse " -"a la IP de esta computadora de manera de ser debugueado." +"Al exportar o publicarlo, el ejecutable tratará de conectarse a la IP de " +"este equipo para iniciar la depuración." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "Depoy Pequeño con Network FS" +msgstr "Exportación mini con recursos en red" #: tools/editor/editor_node.cpp msgid "" @@ -2246,16 +2295,15 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" -"Cuando esta opción está activa, exportar o hacer deploy producirá un " +"Cuando esta opción está activa, al exportar o publicar se producirá un " "ejecutable mínimo.\n" -"El sistema de archivos sera proveido desde el proyecto por el editor sobre " -"la red.\n" -"En Android, deploy usará el cable USB para mejor performance. Esta opción " -"acelera el testeo para juegos con footprint grande." +"El sistema de archivos del proyecto se pasará desde el editor por la red.\n" +"En Android, publicar utilizará el cable USB para un mejor rendimiento. Esta " +"opción acelera los ciclos de prueba de juegos grandes." #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "Collision Shapes Visibles" +msgstr "Ver formas de colisión" #: tools/editor/editor_node.cpp msgid "" @@ -2267,19 +2315,19 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Visible Navigation" -msgstr "Navegación Visible" +msgstr "Navegación visible" #: tools/editor/editor_node.cpp msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" -"Los meshes de navegación y los polígonos seran visibles durante la ejecución " -"del juego si esta opción queda activada." +"Si activas esta opción podrás ver los modelos y polígonos de navegación " +"durante la ejecución del juego." #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "Sincronizar Cambios de Escena" +msgstr "Sincronizar cambios de escena" #: tools/editor/editor_node.cpp msgid "" @@ -2295,7 +2343,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "Actualizar Cambios en Scripts" +msgstr "Actualizar cambios en scripts" #: tools/editor/editor_node.cpp msgid "" @@ -2311,19 +2359,19 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" -msgstr "Configuración" +msgstr "Ajustes" #: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "Configuración del Editor" +msgstr "Ajustes del editor" #: tools/editor/editor_node.cpp msgid "Editor Layout" -msgstr "Layout del Editor" +msgstr "Ajustes de diseño del editor" #: tools/editor/editor_node.cpp msgid "Install Export Templates" -msgstr "Instalar Templates de Exportación" +msgstr "Instalar plantillas de exportación" #: tools/editor/editor_node.cpp msgid "About" @@ -2339,11 +2387,11 @@ msgstr "Gira cuando la ventana del editor repinta!" #: tools/editor/editor_node.cpp msgid "Update Always" -msgstr "Siempre Actualizar" +msgstr "Actualizar siempre" #: tools/editor/editor_node.cpp msgid "Update Changes" -msgstr "Actualizar Cambios" +msgstr "Actualizar cambios" #: tools/editor/editor_node.cpp msgid "Inspector" @@ -2363,11 +2411,11 @@ msgstr "Guardar el recurso editado actualmente." #: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "Guardar Como.." +msgstr "Guardar como..." #: tools/editor/editor_node.cpp msgid "Go to the previous edited object in history." -msgstr "Ir al anterior objeto editado en el historial." +msgstr "Ir al objeto editado previo en el historial." #: tools/editor/editor_node.cpp msgid "Go to the next edited object in history." @@ -2383,7 +2431,7 @@ msgstr "Propiedades del objeto." #: tools/editor/editor_node.cpp msgid "FileSystem" -msgstr "FileSystem" +msgstr "SistDeArchivos" #: tools/editor/editor_node.cpp msgid "Output" @@ -2399,27 +2447,27 @@ msgstr "Actualizar" #: tools/editor/editor_node.cpp msgid "Thanks from the Godot community!" -msgstr "Gracias de parte de la comunidad Godot!" +msgstr "¡Muchas gracias de parte de la comunidad de Godot!" #: tools/editor/editor_node.cpp msgid "Thanks!" -msgstr "Gracias!" +msgstr "¡Gracias!" #: tools/editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "Importar Templates Desde Archivo ZIP" +msgstr "Importar plantillas desde un archivo ZIP" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export Project" -msgstr "Exportar Proyecto" +msgstr "Exportar proyecto" #: tools/editor/editor_node.cpp msgid "Export Library" -msgstr "Exportar Libreria" +msgstr "Exportar biblioteca" #: tools/editor/editor_node.cpp msgid "Merge With Existing" -msgstr "Mergear Con Existentes" +msgstr "Unir con existentes" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Password:" @@ -2427,19 +2475,19 @@ msgstr "Contraseña:" #: tools/editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "Abrir y Correr un Script" +msgstr "Abrir y ejecutar un script" #: tools/editor/editor_node.cpp msgid "Load Errors" -msgstr "Cargar Errores" +msgstr "Errores de carga" #: tools/editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "Plugins Instalados:" +msgstr "Plugins instalados:" #: tools/editor/editor_plugin_settings.cpp msgid "Version:" -msgstr "Version:" +msgstr "Versión:" #: tools/editor/editor_plugin_settings.cpp msgid "Author:" @@ -2463,19 +2511,19 @@ msgstr "Medida:" #: tools/editor/editor_profiler.cpp msgid "Frame Time (sec)" -msgstr "Duracion de Frame (seg)" +msgstr "Duracion de cuadro (seg)" #: tools/editor/editor_profiler.cpp msgid "Average Time (sec)" -msgstr "Tiempo Promedio (seg)" +msgstr "Tiempo promedio (seg)" #: tools/editor/editor_profiler.cpp msgid "Frame %" -msgstr "Frame %" +msgstr "% de cuadro" #: tools/editor/editor_profiler.cpp msgid "Fixed Frame %" -msgstr "Fixed Frame %" +msgstr "% de cuadro fijo" #: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp msgid "Time:" @@ -2491,11 +2539,11 @@ msgstr "Propio" #: tools/editor/editor_profiler.cpp msgid "Frame #:" -msgstr "Frame #:" +msgstr "Nº de cuadro:" #: tools/editor/editor_reimport_dialog.cpp msgid "Please wait for scan to complete." -msgstr "Por favor aguarda a que el scan termine." +msgstr "Espera a que termine el análisis." #: tools/editor/editor_reimport_dialog.cpp msgid "Current scene must be saved to re-import." @@ -2503,15 +2551,15 @@ msgstr "La escena actual debe ser guardada para reimportar." #: tools/editor/editor_reimport_dialog.cpp msgid "Save & Re-Import" -msgstr "Guardar y Reimportar" +msgstr "Guardar y reimportar" #: tools/editor/editor_reimport_dialog.cpp msgid "Re-Import Changed Resources" -msgstr "Reimportar Recursos Cambiados" +msgstr "Reimportar recursos cambiados" #: tools/editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "Escribir tu lógica en el método _run()." +msgstr "Escribe tu lógica en el método _run()." #: tools/editor/editor_run_script.cpp msgid "There is an edited scene already." @@ -2535,19 +2583,19 @@ msgstr "Te olvidaste del método '_run'?" #: tools/editor/editor_settings.cpp msgid "Default (Same as Editor)" -msgstr "Por Defecto (Igual que el Editor)" +msgstr "Predeterminado (Igual que el editor)" #: tools/editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" -msgstr "Seleccionar Nodo(s) para Importar" +msgstr "Selecciona nodos a importar" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "Ruta a la Escena:" +msgstr "Ruta a la escena:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" -msgstr "Importar Desde Nodo:" +msgstr "Importar desde nodo:" #: tools/editor/file_type_cache.cpp msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" @@ -2557,15 +2605,17 @@ msgstr "" #: tools/editor/filesystem_dock.cpp msgid "Same source and destination files, doing nothing." -msgstr "Archivos de origen y destino iguales, no se realizará ninguna acción." +msgstr "" +"Los archivos de origen y destino son iguales, no se realizará ninguna acción." #: tools/editor/filesystem_dock.cpp msgid "Same source and destination paths, doing nothing." -msgstr "Ruta de origen y destino iguales, no se realizará ninguna acción." +msgstr "" +"Las rutas de origen y destino son iguales, no se realizará ninguna acción." #: tools/editor/filesystem_dock.cpp msgid "Can't move directories to within themselves." -msgstr "No se pueden mover directorios dentro de si mismos." +msgstr "No se pueden mover carpetas dentro de si mismas." #: tools/editor/filesystem_dock.cpp msgid "Can't operate on '..'" @@ -2573,35 +2623,35 @@ msgstr "No se puede operar en '..'" #: tools/editor/filesystem_dock.cpp msgid "Pick New Name and Location For:" -msgstr "Elejí un Nuevo Nombre y Ubicación Para:" +msgstr "Elige un nombre nuevo y ubicación para:" #: tools/editor/filesystem_dock.cpp msgid "No files selected!" -msgstr "Ningún Archivo seleccionado!" +msgstr "¡No has seleccionado ningún archivo!" #: tools/editor/filesystem_dock.cpp msgid "Instance" -msgstr "Instancia" +msgstr "Instanciar" #: tools/editor/filesystem_dock.cpp msgid "Edit Dependencies.." -msgstr "Editar Dependencias.." +msgstr "Editar dependencias.." #: tools/editor/filesystem_dock.cpp msgid "View Owners.." -msgstr "Ver Dueños.." +msgstr "Ver dueños.." #: tools/editor/filesystem_dock.cpp msgid "Copy Path" -msgstr "Copiar Ruta" +msgstr "Copiar ruta" #: tools/editor/filesystem_dock.cpp msgid "Rename or Move.." -msgstr "Renombrar o Mover.." +msgstr "Renombrar o mover.." #: tools/editor/filesystem_dock.cpp msgid "Move To.." -msgstr "Mover A.." +msgstr "Mover a.." #: tools/editor/filesystem_dock.cpp msgid "Info" @@ -2609,7 +2659,7 @@ msgstr "Info" #: tools/editor/filesystem_dock.cpp msgid "Show In File Manager" -msgstr "Mostrar en Gestor de Archivos" +msgstr "Mostrar en el navegador de archivos" #: tools/editor/filesystem_dock.cpp msgid "Re-Import.." @@ -2617,15 +2667,15 @@ msgstr "Reimportando.." #: tools/editor/filesystem_dock.cpp msgid "Previous Directory" -msgstr "Directorio Previo" +msgstr "Carpeta anterior" #: tools/editor/filesystem_dock.cpp msgid "Next Directory" -msgstr "Directorio Siguiente" +msgstr "Carpeta siguiente" #: tools/editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" -msgstr "Reescanear Sistema de Archivos" +msgstr "Reanalizar sistema de archivos" #: tools/editor/filesystem_dock.cpp msgid "Toggle folder status as Favorite" @@ -2642,15 +2692,15 @@ msgstr "Mover" #: tools/editor/groups_editor.cpp msgid "Add to Group" -msgstr "Agregar al Grupo" +msgstr "Añadir al grupo" #: tools/editor/groups_editor.cpp msgid "Remove from Group" -msgstr "Quitar del Grupo" +msgstr "Quitar del grupo" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "No bit masks to import!" -msgstr "Sin máscaras de bits para importar!" +msgstr "¡Sin máscaras de bits para importar!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -2686,7 +2736,7 @@ msgstr "Importar BitMasks" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s):" -msgstr "Textura(s) de Origen:" +msgstr "Texturas de origen:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp @@ -2695,7 +2745,7 @@ msgstr "Textura(s) de Origen:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Target Path:" -msgstr "Ruta de Destino:" +msgstr "Ruta de destino:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -2708,27 +2758,27 @@ msgstr "Aceptar" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "Máscara de Bits" +msgstr "Máscara de bits" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" -msgstr "Sin archivo de tipografías de origen!" +msgstr "¡No se ha elegido ningún archivo de tipografías!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No target font resource!" -msgstr "Sin recurso de tipografías de destino!" +msgstr "¡No se ha elegido ningún recurso de tipografías!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "" "Invalid file extension.\n" "Please use .fnt." msgstr "" -"Extension de archivo inválida.\n" -"Usá .fnt, por favor." +"La extensión del archivo no es correcta.\n" +"Prueba con la extensión .fnt." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Can't load/process source font." -msgstr "No se puede cargar/procesar la tipografía de origen." +msgstr "No se puede cargar/procesar la tipografía elegida." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Couldn't save font." @@ -2736,15 +2786,15 @@ msgstr "No se pudo guardar la tipografía." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font:" -msgstr "Tipografía de Origen:" +msgstr "Tipografía elegida:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font Size:" -msgstr "Tamaño de la Tipografía de Origen:" +msgstr "Tamaño de la tipografía elegida:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Dest Resource:" -msgstr "Recurso de Dest:" +msgstr "Recurso de destino:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "The quick brown fox jumps over the lazy dog." @@ -2763,15 +2813,15 @@ msgstr "Opciones:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Font Import" -msgstr "Importar Tipografías" +msgstr "Importar tipografías" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "" "This file is already a Godot font file, please supply a BMFont type file " "instead." msgstr "" -"Este archivo ya es un archivo de tipografías de Godot, por favor suministrar " -"un archivo tipo BMFont." +"Este archivo ya es un archivo de tipografías de Godot, tienes que utilizar " +"un archivo de tipo BMFont." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Failed opening as BMFont file." @@ -2779,7 +2829,7 @@ msgstr "Error al abrir como archivo BMFont." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Invalid font custom source." -msgstr "Origen personalizado de tipografía inválido." +msgstr "El origen personalizado de tipografía no es correcto." #: tools/editor/io_plugins/editor_font_import_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -2788,20 +2838,20 @@ msgstr "Tipografía" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "No meshes to import!" -msgstr "Sin meshes para importar!" +msgstr "¡No hay ningún modelo que se pueda importar!" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Single Mesh Import" -msgstr "Importar Mesh Individual" +msgstr "Importar modelo individual" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Source Mesh(es):" -msgstr "Importar Mesh(es) de Origen:" +msgstr "Modelo/s elegidos:" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "Mesh" +msgstr "Modelos 3D" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Surface %d" @@ -2809,11 +2859,11 @@ msgstr "Superficie %d" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "No samples to import!" -msgstr "Sin muestras que importar!" +msgstr "¡No hay ningún sonido a importar!" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Import Audio Samples" -msgstr "Importar Muestras de Audio" +msgstr "Importar archivo de sonido" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Source Sample(s):" @@ -2821,11 +2871,11 @@ msgstr "Muestra(s) de Origen:" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Audio Sample" -msgstr "Muestra de Audio" +msgstr "Archivo de sonido" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "New Clip" -msgstr "Nuevo Clip" +msgstr "Nuevo clip" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Animation Options" @@ -2833,7 +2883,7 @@ msgstr "Opciones de Animación" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Flags" -msgstr "Flags" +msgstr "Identificadores" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Bake FPS:" @@ -2845,15 +2895,15 @@ msgstr "Optimizar" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Linear Error" -msgstr "Error Lineal Máximo" +msgstr "Error lineal máximo" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angular Error" -msgstr "Error Angular Máximo" +msgstr "Error angular máximo" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angle" -msgstr "Angulo Máximo" +msgstr "Ángulo máximo" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Clips" @@ -2861,16 +2911,16 @@ msgstr "Clips" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Start(s)" -msgstr "Comienzo(s)" +msgstr "Inicios" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "End(s)" -msgstr "Fin(es)" +msgstr "Finales" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "Loop" +msgstr "Repetir" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Filters" @@ -2886,7 +2936,7 @@ msgstr "No se pudo cargar el script post-importación." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import." -msgstr "Script post-importación inválido o roto." +msgstr "El script de postimportación no es correcto o está roto." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error importing scene." @@ -2894,15 +2944,15 @@ msgstr "Error al importar escena." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import 3D Scene" -msgstr "Importar Escena 3D" +msgstr "Importar escena 3D" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source Scene:" -msgstr "Escena de Origen:" +msgstr "Escena de origen:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Same as Target Scene" -msgstr "Igual que Escena de Destino" +msgstr "Igual que escena de destino" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Shared" @@ -2910,11 +2960,11 @@ msgstr "Compartido" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Target Texture Folder:" -msgstr "Carpeta de Textura de Destino:" +msgstr "Carpeta de texturas elegida:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Post-Process Script:" -msgstr "Script de Postprocesado:" +msgstr "Script de posprocesado:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Custom Root Node Type:" @@ -2926,50 +2976,51 @@ msgstr "Auto" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "The Following Files are Missing:" -msgstr "Los Siguientes Archivos estan Faltando:" +msgstr "Faltan los siguientes archivos:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Anyway" -msgstr "Importar de Todos Modos" +msgstr "Importar de todos modos" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import & Open" -msgstr "Importar y Abrir" +msgstr "Importar y abrir" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Edited scene has not been saved, open imported scene anyway?" msgstr "" -"La escena editada no ha sido guardada, abrir la escena importada de todos " -"modos?" +"La escena editada no se ha guardado, ¿Quieres abrir la escena importada de " +"todos modos?" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import Scene" -msgstr "Importar Escena" +msgstr "Importar escena" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Importing Scene.." -msgstr "Importando Escena.." +msgstr "Importando escena.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Running Custom Script.." -msgstr "Ejecutando Script Personalizado.." +msgstr "Ejecutando script personalizado.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script:" -msgstr "No se pudo cargar el script post importación:" +msgstr "No se pudo cargar el script posimportación:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import (check console):" -msgstr "Script para post importación inválido/roto (revisá la consola):" +msgstr "" +"El script de posimportación no es correcto o está roto. (revisa la consola):" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error running post-import script:" -msgstr "Error ejecutando el script de post-importacion:" +msgstr "Error ejecutando el script de posimportacion:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Image:" -msgstr "Importar Imagen:" +msgstr "Importar imagen:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Can't import a file over itself:" @@ -2977,7 +3028,7 @@ msgstr "No se puede importar un archivo sobre si mismo:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't localize path: %s (already local)" -msgstr "No se pudo localizar la ruta: %s (ya es local)" +msgstr "No se pudo encontrar la ruta: %s (ya es local)" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Saving.." @@ -2985,19 +3036,19 @@ msgstr "Guardando.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "3D Scene Animation" -msgstr "Animacion de Escena 3D" +msgstr "Animación de escena 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Uncompressed" -msgstr "Sin Comprimir" +msgstr "Sin comprimir" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress Lossless (PNG)" -msgstr "Compresión Sin Pérdidas (PNG)" +msgstr "Compresión sin pérdidas (PNG)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress Lossy (WebP)" -msgstr "Compresión con Pérdidas (WebP)" +msgstr "Compresión con pérdidas (WebP)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress (VRAM)" @@ -3005,27 +3056,27 @@ msgstr "Comprimir (VRAM)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Format" -msgstr "Formato de Textura" +msgstr "Formato de textura" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Compression Quality (WebP):" -msgstr "Calidad de Compresión de Textura (WebP):" +msgstr "Calidad de compresión de textura (WebP):" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Options" -msgstr "Opciones de Textura" +msgstr "Opciones de textura" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Please specify some files!" -msgstr "Por favor especificá algunos archivos!" +msgstr "¡Selecciona algunos archivos!" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "At least one file needed for Atlas." -msgstr "Se necesita al menos un archivo para el Atlas." +msgstr "Se necesita al menos un archivo para el atlas." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Error importing:" -msgstr "Error al importar:" +msgstr "Hubo un error al importar:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Only one file is required for large texture." @@ -3033,47 +3084,47 @@ msgstr "Solo se requiere un archivo para textura grande." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Max Texture Size:" -msgstr "Tamaño Max. de Textura:" +msgstr "Tamaño máximo de textura:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for Atlas (2D)" -msgstr "Importar Texturas para Atlas (2D)" +msgstr "Importar texturas para atlas (2D)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cell Size:" -msgstr "Tamaño de Celda:" +msgstr "Tamaño de celda:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Large Texture" -msgstr "Textura Grande" +msgstr "Textura grande" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Textures (2D)" -msgstr "Importar Texturas Grandes (2D)" +msgstr "Importar texturas grandes (2D)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture" -msgstr "Textura de Origen" +msgstr "Textura de origen" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Base Atlas Texture" -msgstr "Textura Base de Atlas" +msgstr "Textura base de atlas" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s)" -msgstr "Textura(s) de Origen" +msgstr "Texturas de origen" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 2D" -msgstr "Importar Texturas para 2D" +msgstr "Importar texturas para 2D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 3D" -msgstr "Importar Texturas para 3D" +msgstr "Importar texturas para 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures" -msgstr "Importar Texturas" +msgstr "Importar texturas" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "2D Texture" @@ -3085,19 +3136,19 @@ msgstr "Textura 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Atlas Texture" -msgstr "Textura de Atlas" +msgstr "Textura de atlas" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" -"AVISO: Importar texturas 2D no es obligatorio. Simplemente copiá los " -"archivos png/jpg al proyecto." +"AVISO: No es necesario importar texturas 2D. Limítate a copia los archivos " +"png/jpg al proyecto." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." -msgstr "Cropear espacio vacio." +msgstr "Recortar espacio vacío." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture" @@ -3105,15 +3156,15 @@ msgstr "Textura" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Texture" -msgstr "Importar Textura Grande" +msgstr "Importar textura grande" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Load Source Image" -msgstr "Cargar Imagen de Origen" +msgstr "Cargar imagen de origen" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Slicing" -msgstr "Rebanar" +msgstr "Troceando" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Inserting" @@ -3129,11 +3180,11 @@ msgstr "No se pudo guardar la textura grande:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Build Atlas For:" -msgstr "Construir Atlar Para:" +msgstr "Construir atlas para:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Loading Image:" -msgstr "Cargando Imagen:" +msgstr "Cargando imagen:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't load image:" @@ -3141,15 +3192,15 @@ msgstr "No se pudo cargar la imagen:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Converting Images" -msgstr "Convirtiendo Imágenes" +msgstr "Convirtiendo imágenes" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cropping Images" -msgstr "Cropeando Imágenes" +msgstr "Recortando imágenes" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Blitting Images" -msgstr "Haciendo Blitting de Imágenes" +msgstr "Copiando datos de imágenes" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't save atlas image:" @@ -3161,11 +3212,11 @@ msgstr "No se pudo guardar la textura convertida:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Invalid source!" -msgstr "Fuente inválida!" +msgstr "¡Origen incorrecto!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Invalid translation source!" -msgstr "Fuente de traducción inválida!" +msgstr "¡Origen de traducción incorrecto!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Column" @@ -3174,7 +3225,7 @@ msgstr "Columna" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp #: tools/editor/script_create_dialog.cpp msgid "Language" -msgstr "Lenguaje" +msgstr "Idioma" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No items to import!" @@ -3182,23 +3233,23 @@ msgstr "Sin elementos para importar!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No target path!" -msgstr "Sin ruta de destino!" +msgstr "¡El objetivo no tiene ruta!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translations" -msgstr "Importar Traducciones" +msgstr "Importar traducciones" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Couldn't import!" -msgstr "No se pudo importar!" +msgstr "¡No se pudo importar!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translation" -msgstr "Importar Traducción" +msgstr "Importar traducción" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Source CSV:" -msgstr "CSV de Origen:" +msgstr "CSV de origen:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Ignore First Row" @@ -3210,11 +3261,11 @@ msgstr "Comprimir" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Add to Project (engine.cfg)" -msgstr "Agregar al Proyecto (engine.cfg)" +msgstr "Añadir al proyecto (engine.cfg)" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Languages:" -msgstr "Importar Lenguajes:" +msgstr "Importar idiomas:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Translation" @@ -3222,7 +3273,7 @@ msgstr "Traducción" #: tools/editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "Setear MultiNodo" +msgstr "Establecer multinodo" #: tools/editor/node_dock.cpp msgid "Node" @@ -3234,92 +3285,92 @@ msgstr "Grupos" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "Seleccionar un Nodo para editar Señales y Grupos." +msgstr "Selecciona un nodo para editar señales y grupos." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "Activar/Desact. Autoplay" +msgstr "Des/activar reproducción automática" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "Nombre de Animación Nueva:" +msgstr "Nombre de animación nueva:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "Nueva Animación" +msgstr "Nueva animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "Cambiar Nombre de Animación:" +msgstr "Cambiar nombre de animación:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "Quitar Animación" +msgstr "Quitar animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" -msgstr "ERROR: Nombre de animación inválido!" +msgstr "ERROR: ¡El nombre de animación no es correcto!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Animation name already exists!" -msgstr "ERROR: El nombre de animación ya existe!" +msgstr "ERROR: ¡El nombre de animación ya existe!" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "Renombrar Animación" +msgstr "Renombrar animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "Agregar Animación" +msgstr "Añadir animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "Blendear Próximo Cambiado" +msgstr "Mezclar el siguiente cambio" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "Cambiar Tiempo de Blend" +msgstr "Cambiar tiempo de mezcla" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "Cargar Animación" +msgstr "Cargar animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "Duplicar Animación" +msgstr "Duplicar animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to copy!" -msgstr "ERROR: No hay animaciones para copiar!" +msgstr "ERROR: ¡No hay animaciones para copiar!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation resource on clipboard!" -msgstr "ERROR: No hay recursos de animación en el portapapeles!" +msgstr "ERROR: ¡No hay recursos de animación en el portapapeles!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" -msgstr "Animación Pegada" +msgstr "Animación pegada" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "Pegar Animación" +msgstr "Pegar animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to edit!" -msgstr "ERROR: No hay aniación que editar!" +msgstr "ERROR: ¡No hay animación que editar!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" msgstr "" -"Reproducir hacia atras la animación seleccionada desde la posicion actual (A)" +"Reproducir hacia atrás la animación seleccionada desde la posición actual (A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" msgstr "" -"Reproducir hacia atrás la animación seleccionada desde el final. (Shift+A)" +"Reproducir hacia atrás la animación seleccionada desde el final. (Mayús + A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" @@ -3327,7 +3378,7 @@ msgstr "Detener la reproducción de la animación. (S)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "Reproducir animación seleccinada desde el principio. (Shift + D)" +msgstr "Reproducir animación seleccionada desde el principio. (Mayús + D)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" @@ -3359,15 +3410,15 @@ msgstr "Guardar la animación actual" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Save As" -msgstr "Guardar Como" +msgstr "Guardar como" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "Diaplay list de animaciones en el reproductor." +msgstr "Lista de animaciones en el reproductor." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "Autoreproducir al Cargar" +msgstr "Autoreproducir al cargar" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Target Blend Times" @@ -3375,15 +3426,15 @@ msgstr "Editar Blend Times Objetivo" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "Herramientas de Animación" +msgstr "Herramientas de animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Copy Animation" -msgstr "Copiar Animación" +msgstr "Copiar animación" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "Crear Nueva Animación" +msgstr "Crear animación nueva" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" @@ -3395,15 +3446,15 @@ msgstr "Nombre de Animación:" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp #: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp msgid "Error!" -msgstr "Error!" +msgstr "¡Error!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "Blend Times:" +msgstr "Tiempos de mezcla:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "Siguiente (Auto Queue):" +msgstr "Siguiente (Auto enfilar):" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" @@ -3425,23 +3476,23 @@ msgstr "Escala:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade In (s):" -msgstr "Fade In (s):" +msgstr "Aparición (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade Out (s):" -msgstr "Fade Out (s):" +msgstr "Desaparición (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend" -msgstr "Blend" +msgstr "Mezclar" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix" -msgstr "Mix" +msgstr "Mezclar" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Auto Restart:" -msgstr "Auto Reiniciar:" +msgstr "Autoreiniciar:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Restart (s):" @@ -3449,11 +3500,11 @@ msgstr "Reiniciar (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Random Restart (s):" -msgstr "Reiniciar al Azar (s):" +msgstr "Reiniciar al azar (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Start!" -msgstr "Iniciar!" +msgstr "¡Iniciar!" #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/multimesh_editor_plugin.cpp @@ -3482,19 +3533,19 @@ msgstr "Actual:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Add Input" -msgstr "Agregar Entrada" +msgstr "Añadir entrada" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Clear Auto-Advance" -msgstr "Limpiar Auto Avanzar" +msgstr "Borrar autoavanzar" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "Setear Auto Avanzar" +msgstr "Establecer autoavanzar" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Delete Input" -msgstr "Eliminar Entrada" +msgstr "Eliminar entrada" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Rename" @@ -3502,23 +3553,23 @@ msgstr "Renombrar" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation tree is valid." -msgstr "El árbol de animación es válido." +msgstr "El árbol de animación es correcto." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation tree is invalid." -msgstr "El árbol de animación es inválido." +msgstr "El árbol de animación no es correcto." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation Node" -msgstr "Nodo de Animación" +msgstr "Nodo de animación" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "OneShot Node" -msgstr "Nodo OneShot" +msgstr "Nodo UnaVez" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix Node" -msgstr "Nodo Mix" +msgstr "Nodo Mezcla" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend2 Node" @@ -3542,15 +3593,15 @@ msgstr "Nodo TimeSeek" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Transition Node" -msgstr "Nodo Transición" +msgstr "Nodo de transición" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." -msgstr "Importar Animaciones.." +msgstr "Importar animaciones.." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Edit Node Filters" -msgstr "Editar Filtros de Nodo" +msgstr "Editar filtros de nodo" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Filters.." @@ -3558,11 +3609,11 @@ msgstr "Filtros.." #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing %d Triangles:" -msgstr "Parseando %d Triángulos:" +msgstr "Leyendo %d triángulos:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Triangle #" -msgstr "Triangulo #" +msgstr "Nº de triángulos" #: tools/editor/plugins/baked_light_baker.cpp msgid "Light Baker Setup:" @@ -3570,11 +3621,11 @@ msgstr "Configuración de Baker de Luces:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing Geometry" -msgstr "Parseando Geometría" +msgstr "Leyendo geometría" #: tools/editor/plugins/baked_light_baker.cpp msgid "Fixing Lights" -msgstr "Fijando/Corrigiendo Luces" +msgstr "Procesando luces" #: tools/editor/plugins/baked_light_baker.cpp msgid "Making BVH" @@ -3582,41 +3633,42 @@ msgstr "Creando BVH" #: tools/editor/plugins/baked_light_baker.cpp msgid "Creating Light Octree" -msgstr "Creando Octree de Luces" +msgstr "Creando octree de luces" #: tools/editor/plugins/baked_light_baker.cpp msgid "Creating Octree Texture" -msgstr "Creando Octree de Texturas" +msgstr "Creando octree de texturas" #: tools/editor/plugins/baked_light_baker.cpp msgid "Transfer to Lightmaps:" -msgstr "Transferencia a Lightmaps:" +msgstr "Transfiriendo a «lightmaps»:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Allocating Texture #" -msgstr "Asignando Textura #" +msgstr "Asignando nº de textura" #: tools/editor/plugins/baked_light_baker.cpp msgid "Baking Triangle #" -msgstr "Haciendo Bake de Triangulo #" +msgstr "Quemando nº de triángulo" #: tools/editor/plugins/baked_light_baker.cpp msgid "Post-Processing Texture #" -msgstr "Postprocesando Textura #" +msgstr "Posprocesando nº de textura" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "Bake!" -msgstr "Hacer Bake!" +msgstr "¡Quemar!" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "Reset the lightmap octree baking process (start over)." msgstr "" -"Resetear el proceso de bake del octree de mapa de luces (empezar de nuevo)." +"Restablece el proceso de «bake» del «octree» del «lightmap» (empezar de " +"nuevo)." #: tools/editor/plugins/camera_editor_plugin.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Preview" -msgstr "Vista Previa" +msgstr "Vista previa" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" @@ -3625,28 +3677,28 @@ msgstr "Configurar Snap" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Offset:" -msgstr "Offset de Grilla:" +msgstr "Desplazamiento de rejilla:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Step:" -msgstr "Step de Grilla:" +msgstr "Pasos de rejilla:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" -msgstr "Offset de Rotación:" +msgstr "Desplazamiento de rotación:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" -msgstr "Step de Rotación:" +msgstr "Cantidad de rotaciones:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Pivot" -msgstr "Mover Pivote" +msgstr "Mover pivote" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Action" -msgstr "Mover Acción" +msgstr "Mover acción" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit IK Chain" @@ -3658,7 +3710,7 @@ msgstr "Editar CanvasItem" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Anchors" -msgstr "Cambiar Anchors" +msgstr "Cambiar anclas" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom (%):" @@ -3666,12 +3718,11 @@ msgstr "Zoom (%):" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" -msgstr "Pegar Pose" +msgstr "Pegar pose" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "Seleccionar Modo (Q)" +msgstr "Modo de selección" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3692,14 +3743,12 @@ msgid "Alt+RMB: Depth list selection" msgstr "Alt+Click Der.: Selección en depth list" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "Modo Mover (W)" +msgstr "Modo movimiento" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate Mode" -msgstr "Modo Rotar (E)" +msgstr "Modo rotación" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3716,15 +3765,15 @@ msgstr "Click para cambiar el pivote de rotación de un objeto." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" -msgstr "Modo Paneo" +msgstr "Modo desplazamiento lateral" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Lock the selected object in place (can't be moved)." -msgstr "Inmovilizar Objeto." +msgstr "Inmovilizar el objeto." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Unlock the selected object (can be moved)." -msgstr "Desinmovilizar Objeto." +msgstr "Liberar el objeto." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." @@ -3742,7 +3791,7 @@ msgstr "Usar Snap" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Show Grid" -msgstr "Mostrar la Grilla" +msgstr "Mostrar rejilla" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" @@ -3763,7 +3812,7 @@ msgstr "Usar Pixel Snap" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Expand to Parent" -msgstr "Expandir al Padre" +msgstr "Expandir al padre" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton.." @@ -3771,19 +3820,19 @@ msgstr "Esqueleto.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Bones" -msgstr "Crear Huesos" +msgstr "Crear huesos" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" -msgstr "Reestablecer Huesos" +msgstr "Reestablecer huesos" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "Crear Cadena IK" +msgstr "Crear cadena IK" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "Reestrablecer Cadena IK" +msgstr "Reestrablecer cadena IK" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3792,47 +3841,47 @@ msgstr "Ver" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Reset" -msgstr "Resetear Zoom" +msgstr "Restablecer zoom" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Set.." -msgstr "Setear Zoom.." +msgstr "Ajustar zoom..." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" -msgstr "Centrar Selección" +msgstr "Centrar selección" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" -msgstr "Encuadrar Selección" +msgstr "Encuadrar selección" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchor" -msgstr "Anchor" +msgstr "Ancla" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Keys" -msgstr "Insertar Claves" +msgstr "Insertar claves" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "Insertar Clave" +msgstr "Insertar clave" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "Insetar Clave (Tracks Existentes)" +msgstr "Insertar clave (pistas existentes)" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "Copiar Pose" +msgstr "Copiar pose" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "Reestablecer Pose" +msgstr "Restablecer pose" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Set a Value" -msgstr "Setear un Valor" +msgstr "Establecer valor" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap (Pixels):" @@ -3843,7 +3892,7 @@ msgstr "Snap (Pixeles):" #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Poly" -msgstr "Crear Polígono" +msgstr "Crear polígono" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/collision_polygon_editor_plugin.cpp @@ -3852,7 +3901,7 @@ msgstr "Crear Polígono" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Edit Poly" -msgstr "Editar Polígono" +msgstr "Editar polígono" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/collision_polygon_editor_plugin.cpp @@ -3861,13 +3910,13 @@ msgstr "Editar Polígono" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Edit Poly (Remove Point)" -msgstr "Editar Polígono (Remover Punto)" +msgstr "Editar polígono (quitar punto)" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create a new polygon from scratch." -msgstr "Crear un nuevo polígono de cero." +msgstr "Crea un nuevo polígono desde cero." #: tools/editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Poly3D" @@ -3875,20 +3924,21 @@ msgstr "Crear Poly3D" #: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" -msgstr "Setear Handle" +msgstr "Establecer handle" #: tools/editor/plugins/color_ramp_editor_plugin.cpp +#, fuzzy msgid "Add/Remove Color Ramp Point" -msgstr "Agregar/Quitar Punto de Rampa de Color" +msgstr "Añadir/quitar punto de rampa de color" #: tools/editor/plugins/color_ramp_editor_plugin.cpp #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Modify Color Ramp" -msgstr "Modificar Rampa de Color" +msgstr "Modificar rampa de color" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Creating Mesh Library" -msgstr "Crear Librería de Meshes" +msgstr "Crear biblioteca de modelos 3D" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Thumbnail.." @@ -3896,41 +3946,41 @@ msgstr "Miniatura.." #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" -msgstr "Remover item %d?" +msgstr "¿Quieres borrar el elemento %d?" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Add Item" -msgstr "Agregar Item" +msgstr "Añadir elemento" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove Selected Item" -msgstr "Remover Item Seleccionado" +msgstr "Borrar elemento seleccionado" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import from Scene" -msgstr "Importar desde Escena" +msgstr "Importar desde escena" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "Acutalizar desde Escena" +msgstr "Actualizar desde escena" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" -msgstr "Item %d" +msgstr "Elemento %d" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Items" -msgstr "Items" +msgstr "Elementos" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" -msgstr "Editor de Lista de Items" +msgstr "Editor de lista de elementos" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" -msgstr "Crear Polígono Oclusor" +msgstr "Crear polígono oclusor" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -3940,110 +3990,113 @@ msgstr "Editar polígono existente:" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "LMB: Move Point." -msgstr "Click. Izq: Mover Punto." +msgstr "Clic izquierdo: Mover punto." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Ctrl+LMB: Split Segment." -msgstr "Ctrl+Click Izq.: Partir Segmento en Dos." +msgstr "Ctrl + clic izquierdo: Partir segmento en dos." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "RMB: Erase Point." -msgstr "Click Der.: Borrar Punto." +msgstr "Clic derecho: Borrar punto." #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "El Mesh esta vacío!" +msgstr "¡El modelo está vacío!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" -msgstr "Crear Trimesh Body Estático" +msgstr "Crear colisión estática triangular" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Convex Body" -msgstr "Crear Body Convexo Estático" +msgstr "Crear colisión estática convexa" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" -msgstr "Esto no funciona en una escena raiz!" +msgstr "¡No puedes hacer esto en una escena raíz!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Shape" -msgstr "Crear Trimesh Shape" +msgstr "Crear forma triangular" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Shape" -msgstr "Crear Shape Convexa" +msgstr "Crear forma convexa" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "Crear Mesh de Navegación" +msgstr "Crear modelo de navegación 3D" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "A MeshInstance le falta un Mesh!" +msgstr "¡A MeshInstance le falta un modelo 3D!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "El mesh no tiene una superficie de donde crear contornos(outlines)!" +msgstr "¡El modelo 3D no tiene una superficie en la que crear contornos!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" -msgstr "No se pudo crear el outline!" +msgstr "¡No se pudo crear el contorno!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline" -msgstr "Crear Outline" +msgstr "Crear contorno" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "Crear Body Estático Trimesh" +msgstr "Crear colisión estática triangular" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "Crear Body Estático Convexo" +msgstr "Crear colisión estática convexa" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" -msgstr "Crear Trimesh Collision Sibling" +msgstr "Crear colisión hermanada triangular" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Collision Sibling" -msgstr "Crear Collision Sibling Convexo" +msgstr "Crear colisión hermanada convexa" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." -msgstr "Crear Outline Mesh.." +msgstr "Crear modelo 3D de contorno.." #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "Crear Outline Mesh" +msgstr "Crear modelo 3D de contorno" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "Tamaño de Outline:" +msgstr "Tamaño del contorno:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." msgstr "" -"No se especificó mesh de origen (y no hay MultiMesh seteado en el nodo)." +"No se especificó ningún modelo 3D de origen (y no se ha establecido ningún " +"MultiMesh en el nodo)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "No se especificó mesh de origen (y MultiMesh no contiene ningún Mesh)." +msgstr "" +"No se especificó ningún modelo de origen (y MultiMesh no contiene ningún " +"Mesh)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "Mesh de origen inválido (ruta inválida)." +msgstr "El origen del modelo es incorrecto (ruta incorrecta)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "Mesh de origen inválido (no es un MeshInstance)." +msgstr "El modelo elegido no es correcto (al no ser un MeshInstance)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "Mesh de origen inválido (no contiene ningun recurso Mesh)." +msgstr "El modelo elegido no es correcto (no contiene ningún recurso Mesh)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -4051,7 +4104,7 @@ msgstr "Ninguna superficie de origen especificada." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." -msgstr "La superficie de origen es inválida (ruta inválida)." +msgstr "La superficie de origen es incorrecta (ruta inválida)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." @@ -4071,7 +4124,7 @@ msgstr "No se pudo mapear el area." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "Seleccioná una Mesh de Origen:" +msgstr "Elige un modelo 3D:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" @@ -4079,59 +4132,59 @@ msgstr "Seleccioná una Superficie Objetivo:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" -msgstr "Poblar Superficie" +msgstr "Llenar superficie" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "Poblar MultiMesh" +msgstr "Llenar MultiMesh" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "Superficie Objetivo:" +msgstr "Superficie objetivo:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "Mesh de Origen:" +msgstr "Modelo 3D elegido:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" -msgstr "Eje-X" +msgstr "Eje X" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Y-Axis" -msgstr "Eje-Y" +msgstr "Eje Y" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Z-Axis" -msgstr "Eje-Z" +msgstr "Eje Z" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "Eje Arriba del Mesh:" +msgstr "Eje vertical del modelo:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "Rotación al Azar:" +msgstr "Rotación al azar:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" -msgstr "Inclinación al Azar:" +msgstr "Inclinación al azar:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Scale:" -msgstr "Escala al Azar:" +msgstr "Escala al azar:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Populate" -msgstr "Poblar" +msgstr "Rellenar" #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Navigation Polygon" -msgstr "Crear Polígono de Navegación" +msgstr "Crear polígono de navegación" #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Remove Poly And Point" -msgstr "Remover Polígono y Punto" +msgstr "Quitar polígono y punto" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Error loading image:" @@ -4139,23 +4192,24 @@ msgstr "Error al cargar la imagen:" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "No pixels with transparency > 128 in image.." -msgstr "Sin pixeles con transparencia > 128 en imagen.." +msgstr "" +"No hay píxeles que tengan menos de un 128/255 de transparencia en la imagen.." #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Set Emission Mask" -msgstr "Setear Máscara de Emisión" +msgstr "Establecer máscara de emisión" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Clear Emission Mask" -msgstr "Limpiar Máscara de Emisión" +msgstr "Borrar máscara de emisión" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Load Emission Mask" -msgstr "Cargar Máscara de Emisión" +msgstr "Cargar máscara de emisión" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Generated Point Count:" -msgstr "Conteo de Puntos Generados:" +msgstr "Conteo de puntos generados:" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Node does not contain geometry." @@ -4167,11 +4221,11 @@ msgstr "El nodo no contiene geometría (caras)." #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" -msgstr "Las caras no contienen area!" +msgstr "¡Las caras no contienen área!" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "No faces!" -msgstr "Sin caras!" +msgstr "¡Sin caras!" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Generate AABB" @@ -4179,27 +4233,27 @@ msgstr "Generar AABB" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter From Mesh" -msgstr "Crear Emisor desde Mesh" +msgstr "Crear emisor a partir de modelo" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter From Node" -msgstr "Crear Emisor desde Nodo" +msgstr "Crear emisor a partir de nodo" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Clear Emitter" -msgstr "Limpiar Emisor" +msgstr "Borrar emisor" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" -msgstr "Crear Emisor" +msgstr "Crear emisor" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Emission Positions:" -msgstr "Posiciones de Emisión:" +msgstr "Posiciones de emisión:" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Emission Fill:" -msgstr "Relleno de Emisión:" +msgstr "Relleno de emisión:" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Surface" @@ -4211,12 +4265,13 @@ msgstr "Volumen" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" -msgstr "Remover Punto de Curva" +msgstr "Borrar punto de curva" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp +#, fuzzy msgid "Add Point to Curve" -msgstr "Agregar Punto a Curva" +msgstr "Añadir punto a curva" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" @@ -4233,86 +4288,87 @@ msgstr "Mover Out-Control en Curva" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Select Points" -msgstr "Seleccionar Puntos" +msgstr "Seleccionar puntos" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Shift+Drag: Select Control Points" -msgstr "Shift+Arrastrar: Seleccionar Puntos de Control" +msgstr "Mayús + arrastrar: Seleccionar puntos de control" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp +#, fuzzy msgid "Click: Add Point" -msgstr "Click: Agregar Punto" +msgstr "Clic: Añadir punto" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Right Click: Delete Point" -msgstr "Click Derecho: Eliminar Punto" +msgstr "Clic derecho: Eliminar punto" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" -msgstr "Seleccionar Puntos de Control (Shift+Arrastrar)" +msgstr "Seleccionar puntos de control (Mayús + arrastrar)" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Add Point (in empty space)" -msgstr "Agregar Punto (en espacio vacío)" +msgstr "Añadir punto (en espacio vacío)" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Split Segment (in curve)" -msgstr "Partir Segmento (en curva)" +msgstr "Dividir segmento (en curva)" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Delete Point" -msgstr "Eliminar Punto" +msgstr "Eliminar punto" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Close Curve" -msgstr "Cerrar Curva" +msgstr "Cerrar curva" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" -msgstr "Punto # de Curva" +msgstr "Nº de punto en curva" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Set Curve Point Pos" -msgstr "Setear Pos. de Punto de Curva" +msgstr "Establecer pos. de punto de curva" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Set Curve In Pos" -msgstr "Setear Pos. In de Curva" +msgstr "Establecer pos. de entrada de curva" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Set Curve Out Pos" -msgstr "Setear Pos. Out de Curva" +msgstr "Establecer pos. de salida de curva" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Split Path" -msgstr "Partir Path" +msgstr "Dividir ruta" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Remove Path Point" -msgstr "Quitar Punto del Path" +msgstr "Quitar Punto de ruta" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" -msgstr "Crear Mapa UV" +msgstr "Crear mapa UV" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" -msgstr "Transformar Mapa UV" +msgstr "Transformar mapa UV" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" -msgstr "Editor UV de Polígonos 2D" +msgstr "Editor UV de polígonos en 2D" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Point" -msgstr "Mover Punto" +msgstr "Mover punto" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -4320,23 +4376,23 @@ msgstr "Ctrl: Rotar" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" -msgstr "Shift: Mover Todos" +msgstr "Mayús: Mover todos" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift+Ctrl: Scale" -msgstr "Shift+Ctrl: Escalar" +msgstr "Mayús + Ctrl: Escalar" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Polygon" -msgstr "Mover Polígono" +msgstr "Mover polígono" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Rotate Polygon" -msgstr "Rotar Polígono" +msgstr "Rotar polígono" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Scale Polygon" -msgstr "Escalar Polígono" +msgstr "Escalar polígono" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon->UV" @@ -4361,73 +4417,73 @@ msgstr "Activar Snap" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid" -msgstr "Grilla" +msgstr "Rejilla" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" -msgstr "ERROR: No se pudo cargar el recurso!" +msgstr "¡ERROR: No se pudo cargar el recurso!" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Add Resource" -msgstr "Agregar Recurso" +msgstr "Añadir recurso" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Rename Resource" -msgstr "Renombrar Recurso" +msgstr "Renombrar recurso" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Resource" -msgstr "Eliminar Recurso" +msgstr "Eliminar recurso" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Resource clipboard is empty!" -msgstr "Clipboard de Recursos vacío!" +msgstr "¡El portapapeles de recursos está vacío!" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Load Resource" -msgstr "Cargar Recurso" +msgstr "Cargar recurso" #: tools/editor/plugins/rich_text_editor_plugin.cpp msgid "Parse BBCode" -msgstr "Parsear BBCode" +msgstr "Leer BBCode" #: tools/editor/plugins/sample_editor_plugin.cpp msgid "Length:" -msgstr "Largo:" +msgstr "Duración:" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Open Sample File(s)" -msgstr "Abrir Archivo(s) de Muestra" +msgstr "Abrir archivos de sonido" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "ERROR: Couldn't load sample!" -msgstr "ERROR: No se pudo cargar la muestra!" +msgstr "¡ERROR: No se pudo cargar el archivo de sonido!" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Add Sample" -msgstr "Agregar Muestra" +msgstr "Añadir archivo de sonido" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Rename Sample" -msgstr "Renombrar Muestra" +msgstr "Renombrar archivo de sonido" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Delete Sample" -msgstr "Eliminar Muestra" +msgstr "Eliminar archivo de sonido" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "16 Bits" -msgstr "16 Bits" +msgstr "16 bits" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "8 Bits" -msgstr "8 Bits" +msgstr "8 bits" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Stereo" -msgstr "Estereo" +msgstr "Estéreo" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Mono" @@ -4460,11 +4516,11 @@ msgstr "Error al importar" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "Importar Tema" +msgstr "Importar tema" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save Theme As.." -msgstr "Guardar Tema Como.." +msgstr "Guardar tema como.." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Next script" @@ -4486,52 +4542,51 @@ msgstr "Nuevo" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save All" -msgstr "Guardar Todo" +msgstr "Guardar todo" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "Recarga Soft de Script" +msgstr "Recargar parcialmente el script" #: tools/editor/plugins/script_editor_plugin.cpp msgid "History Prev" -msgstr "Previo en Historial" +msgstr "Previo en historial" #: tools/editor/plugins/script_editor_plugin.cpp msgid "History Next" -msgstr "Siguiente en Historial" +msgstr "Siguiente en el historial" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "Recargar Tema" +msgstr "Recargar tema" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save Theme" -msgstr "Guardar Tema" +msgstr "Guardar tema" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save Theme As" -msgstr "Guardar Tema Como" +msgstr "Guardar tema como" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "Clonar hacia Abajo" +msgstr "Cerrar documentación" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." -msgstr "Encontrar.." +msgstr "Buscar..." #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find Next" -msgstr "Encontrar Siguiente" +msgstr "Buscar siguiente" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Debug" -msgstr "Debuguear" +msgstr "Depurar" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp @@ -4555,7 +4610,7 @@ msgstr "Continuar" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" -msgstr "Mantener el Debugger Abierto" +msgstr "Mantener el depurador abierto" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Window" @@ -4563,11 +4618,11 @@ msgstr "Ventana" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Move Left" -msgstr "Mover a la Izquierda" +msgstr "Mover a la izquierda" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Move Right" -msgstr "Mover a la Derecha" +msgstr "Mover a la derecha" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Tutorials" @@ -4575,7 +4630,7 @@ msgstr "Tutoriales" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Open https://godotengine.org at tutorials section." -msgstr "Abrir https://godotengine.org en la sección de tutoriales." +msgstr "Abre https://godotengine.org en la sección de tutoriales." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Classes" @@ -4599,7 +4654,7 @@ msgstr "Ir a siguiente documento editado." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Create Script" -msgstr "Crear Script" +msgstr "Crear script" #: tools/editor/plugins/script_editor_plugin.cpp msgid "" @@ -4607,27 +4662,27 @@ msgid "" "What action should be taken?:" msgstr "" "Los siguientes archivos son nuevos en disco.\n" -"¿Qué acción se debería tomar?:" +"¿Qué es lo que quieres hacer?:" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Reload" -msgstr "Volver a Cargar" +msgstr "Volver a cargar" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Resave" -msgstr "Volver a Guardar" +msgstr "Volver a guardar" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp msgid "Debugger" -msgstr "Debugger" +msgstr "Depurador" #: tools/editor/plugins/script_editor_plugin.cpp msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" -"Los scripts built-in solo pueden ser editados cuando la escena a la que " -"pertenecen esta cargada" +"Los scripts integrados sólo se pueden editar cuando la escena a la que " +"pertenecen está cargada" #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" @@ -4639,66 +4694,66 @@ msgstr "Bajar" #: tools/editor/plugins/script_text_editor.cpp msgid "Indent Left" -msgstr "Indentar a la Izq" +msgstr "Indentar a la izquierda" #: tools/editor/plugins/script_text_editor.cpp msgid "Indent Right" -msgstr "Indentar a la Der" +msgstr "Indentar a la derecha" #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Comment" -msgstr "Act/Desact. Comentario" +msgstr "Des/activar comentario" #: tools/editor/plugins/script_text_editor.cpp msgid "Clone Down" -msgstr "Clonar hacia Abajo" +msgstr "Clonar hacia abajo" #: tools/editor/plugins/script_text_editor.cpp msgid "Complete Symbol" -msgstr "Completar Símbolo" +msgstr "Completar símbolo" #: tools/editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" -msgstr "Eliminar Espacios Sobrantes al Final" +msgstr "Borrar espacios sobrantes al final" #: tools/editor/plugins/script_text_editor.cpp msgid "Auto Indent" -msgstr "Auto Indentar" +msgstr "Autoindentar" #: tools/editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "Quitar Todos los Breakpoints" +msgstr "Desactivar todos los «breakpoints»" #: tools/editor/plugins/script_text_editor.cpp msgid "Goto Next Breakpoint" -msgstr "Ir a Próximo Breakpoint" +msgstr "Ir a siguiente «breakpoint»" #: tools/editor/plugins/script_text_editor.cpp msgid "Goto Previous Breakpoint" -msgstr "Ir a Anterior Breakpoint" +msgstr "Ir al «breakpoint» anterior" #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find Previous" -msgstr "Encontrar Anterior" +msgstr "Buscar anterior" #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Replace.." -msgstr "Reemplazar.." +msgstr "Reemplazar..." #: tools/editor/plugins/script_text_editor.cpp msgid "Goto Function.." -msgstr "Ir a Función.." +msgstr "Ir a función..." #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Goto Line.." -msgstr "Ir a Línea.." +msgstr "Ir a línea.." #: tools/editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "Ayuda Contextual" +msgstr "Ayuda contextual" #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Vertex" @@ -4785,12 +4840,13 @@ msgid "Change Comment" msgstr "Cambiar Comentarío" #: tools/editor/plugins/shader_graph_editor_plugin.cpp +#, fuzzy msgid "Add/Remove to Color Ramp" -msgstr "Agregar/Quitar a Rampa de Color" +msgstr "Añadir/quitar a/de rampa de color" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Add/Remove to Curve Map" -msgstr "Agregar/quitar a Mapa de Curvas" +msgstr "Añadir/quitar a/de mapa de curvas" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Modify Curve Map" @@ -4833,8 +4889,9 @@ msgid "Error: Missing Input Connections" msgstr "Error: Conecciones de Entrada Faltantes" #: tools/editor/plugins/shader_graph_editor_plugin.cpp +#, fuzzy msgid "Add Shader Graph Node" -msgstr "Agregar Nodo de Gráficos de Shader" +msgstr "Añadir nodo de gráficos de sombreador" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -4846,35 +4903,35 @@ msgstr "Perspectiva" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Transform Aborted." -msgstr "Transformación Abortada." +msgstr "Se ha cancelado la transformación." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "Transformación en Eje-X." +msgstr "Transformación en el eje X." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "Transformación en Eje-Y." +msgstr "Transformación en el eje Y." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "Transformación en Eje-Z." +msgstr "Transformación en el eje Z." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." -msgstr "Ver Transformación en Plano." +msgstr "Ver transformación en plano." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." -msgstr "Escalando a %s%%." +msgstr "Escalando al %s%%." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." -msgstr "Torando %s grados." +msgstr "Girando %s grados." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "Vista Inferior." +msgstr "Vista inferior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -4882,7 +4939,7 @@ msgstr "Fondo" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Top View." -msgstr "Vista Superior." +msgstr "Vista superior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Top" @@ -4890,7 +4947,7 @@ msgstr "Cima" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rear View." -msgstr "Vista Anterior." +msgstr "Vista anterior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rear" @@ -4898,7 +4955,7 @@ msgstr "Detrás" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Front View." -msgstr "Vista Frontal." +msgstr "Vista frontal." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Front" @@ -4906,7 +4963,7 @@ msgstr "Frente" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Left View." -msgstr "Vista Izquierda." +msgstr "Vista izquierda." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Left" @@ -4914,7 +4971,7 @@ msgstr "Izquierda" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right View." -msgstr "Vista Derecha." +msgstr "Vista derecha." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right" @@ -4926,7 +4983,7 @@ msgstr "Poner claves está desactivado (no se insertaron claves)." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Animation Key Inserted." -msgstr "Clave de Animación Insertada." +msgstr "Clave de animación insertada." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -4946,71 +5003,71 @@ msgstr "Gizmos" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" -msgstr "Dialogo XForm" +msgstr "Ventana de transformación" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "No scene selected to instance!" -msgstr "Ninguna escena seleccionada a la instancia!" +msgstr "¡No se ha elegido ninguna escena a instanciar!" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Instance at Cursor" -msgstr "Instancia en Cursor" +msgstr "Instanciar en cursor" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Could not instance scene!" -msgstr "No se pudo instanciar la escena!" +msgstr "¡No se pudo instanciar la escena!" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode (W)" -msgstr "Modo Mover (W)" +msgstr "Modo movimiento (W)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode (E)" -msgstr "Modo Rotar (E)" +msgstr "Modo rotación (E)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scale Mode (R)" -msgstr "Modo de Escalado (R)" +msgstr "Modo escalado (R)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "Vista Inferior" +msgstr "Vista inferior" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "Vista Superior" +msgstr "Vista superior" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" -msgstr "Vista Anterior" +msgstr "Vista anterior" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Front View" -msgstr "Vista Frontal" +msgstr "Vista frontal" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Left View" -msgstr "Vista Izquierda" +msgstr "Vista izquierda" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right View" -msgstr "Vista Derecha" +msgstr "Vista derecha" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Switch Perspective/Orthogonal view" -msgstr "Intercambiar entre vista Perspectiva/Orthogonal" +msgstr "Intercambiar entre vista de perspectiva y ortogonal" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" -msgstr "Insertar Clave de Animación" +msgstr "Insertar clave de animación" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" -msgstr "Foco en Selección" +msgstr "Seleccionar" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Align Selection With View" -msgstr "Alinear Selección Con Vista" +msgstr "Alinear selección con visor" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Transform" @@ -5018,67 +5075,67 @@ msgstr "Transformar" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" -msgstr "Coordenadas Locales" +msgstr "Coordenadas locales" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog.." -msgstr "Dialogo de Transformación.." +msgstr "Ventana de transformación.." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Default Light" -msgstr "Usar Luz por Defecto" +msgstr "Usar iluminación predeterminada" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Default sRGB" -msgstr "Usar sRGB por Defecto" +msgstr "Usar sRGB predeterminado" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "1 Viewport" +msgstr "1 visor" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports" -msgstr "2 Viewports" +msgstr "2 visores" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "2 Viewports (Alt)" +msgstr "2 visores (altern.)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports" -msgstr "3 Viewports" +msgstr "3 visores" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "3 Viewports (Alt)" +msgstr "3 visores (altern.)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "4 Viewports" -msgstr "4 Viewports" +msgstr "4 visores" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" -msgstr "Mostrar Normales" +msgstr "Mostrar normales" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Wireframe" -msgstr "Mostrar Wireframe" +msgstr "Mostrar polígonos" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Overdraw" -msgstr "Mostrar Overdraw" +msgstr "Mostrar superposiciones" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Shadeless" -msgstr "Mostrar sin Sombreado" +msgstr "Mostrar sin sombras" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" -msgstr "Ver Origen" +msgstr "Ver origen" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "View Grid" -msgstr "Ver Grilla" +msgstr "Ver rejilla" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5098,83 +5155,83 @@ msgstr "Snap de Escala (%):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" -msgstr "Ajustes de Viewport" +msgstr "Ajustes del visor" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Default Light Normal:" -msgstr "Normales de Luces por Defecto:" +msgstr "Iluminación por normales predeterminada:" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Ambient Light Color:" -msgstr "Color de Luz Ambiental:" +msgstr "Color de iluminación ambiental:" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" -msgstr "FOV de Perspectiva (grados.):" +msgstr "Anchura de perspectiva (en grados):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Near:" -msgstr "Z-Near de Vista:" +msgstr "Profundidad mínima de vista:" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Far:" -msgstr "Z-Far de Vista:" +msgstr "Profundidad máxima de vista:" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" -msgstr "Cambio de Transformación" +msgstr "Cambio de transformación" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" -msgstr "Trasladar:" +msgstr "Mover:" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rotate (deg.):" -msgstr "Rotar (grados.):" +msgstr "Girar (grados):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scale (ratio):" -msgstr "Scalar (ratio):" +msgstr "Escalar (porcentaje):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Transform Type" -msgstr "Tipo de Transformación" +msgstr "Tipo de transformación" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Pre" -msgstr "Pre" +msgstr "Previa" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Post" -msgstr "Post" +msgstr "Posterior" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" -msgstr "ERROR: No se pudo cargar el recurso de frames!" +msgstr "ERROR: ¡No se pudo cargar el recurso de cuadros!" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" -msgstr "Agregar Frame" +msgstr "Añadir cuadro" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Resource clipboard is empty or not a texture!" -msgstr "El portapapeles de recursos esta vacío o no es una textura!" +msgstr "¡El portapapeles de recursos esta vacío o no es una textura!" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Paste Frame" -msgstr "Pegar Frame" +msgstr "Pegar cuadro" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Empty" -msgstr "Agregar Vacío" +msgstr "Añadir elemento vacío" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "Cambiar Loop de Animación" +msgstr "Cambiar repetición de animación" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "Cambiar FPS de Animación" +msgstr "Cambiar FPS de animación" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "(empty)" @@ -5190,15 +5247,15 @@ msgstr "Velocidad (FPS):" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames" -msgstr "Cuadros de Animación" +msgstr "Cuadros de animación" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" -msgstr "Insertar Vacío (Antes)" +msgstr "Insertar vacío (antes)" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (After)" -msgstr "Insertar Vacío (Después)" +msgstr "Insertar vacío (después)" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Up" @@ -5210,7 +5267,7 @@ msgstr "Abajo" #: tools/editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" -msgstr "Vista Previa de StyleBox:" +msgstr "Vista previa de StyleBox:" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" @@ -5230,11 +5287,11 @@ msgstr "Snap de Grilla" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" -msgstr "Auto Rebanar" +msgstr "Autotrocear" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Offset:" -msgstr "Offset:" +msgstr "Desplazamiento:" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Step:" @@ -5246,11 +5303,11 @@ msgstr "Separación:" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Texture Region" -msgstr "Región de Textura" +msgstr "Región de textura" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Texture Region Editor" -msgstr "Editor de Regiones de Texturas" +msgstr "Editor de regiones de texturas" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -5258,11 +5315,11 @@ msgstr "No se pudo guardar el tema a un archivo:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "Agregar Todos los Items" +msgstr "Añadir todos los elementos" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add All" -msgstr "Agregar Todos" +msgstr "Añadir todos" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/plugins/tile_set_editor_plugin.cpp @@ -5271,19 +5328,19 @@ msgstr "Remover Item" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" -msgstr "Agregar Items de Clases" +msgstr "Añadir elementos de clase" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Remove Class Items" -msgstr "Quitar Items de Clases" +msgstr "Quitar elementos de clases" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Template" -msgstr "Crear Template Vacío" +msgstr "Crear plantilla vacía" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Editor Template" -msgstr "Crear Template de Editor Vacío" +msgstr "Crear plantilla de editor vacía" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -5295,15 +5352,15 @@ msgstr "CheckBox Radio2" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "Item" +msgstr "Elemento" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "Tildar Item" +msgstr "Casilla de verificación" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "Item Tildado" +msgstr "Casilla de verificación activa" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Has" @@ -5319,7 +5376,7 @@ msgstr "Opciones" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Have,Many,Several,Options!" -msgstr "Tenés,Muchas,Variadas,Opciones!" +msgstr "¡Tienes,Muchas,Y,Variadas,Opciones!" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -5341,7 +5398,7 @@ msgstr "Tipo:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" -msgstr "Tipo de Datos:" +msgstr "Tipo de datos:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Icon" @@ -5370,7 +5427,7 @@ msgstr "Borrar TileMap" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Erase selection" -msgstr "Eliminar Selección" +msgstr "Eliminar selección" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Find tile" @@ -5382,15 +5439,15 @@ msgstr "Transponer" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Mirror X" -msgstr "Espejar X" +msgstr "Voltear horizontalmente" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Mirror Y" -msgstr "Espejar Y" +msgstr "Voltear verticalmente" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Bucket" -msgstr "Balde" +msgstr "Cubo" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" @@ -5434,11 +5491,11 @@ msgstr "¿Mergear desde escena?" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "Crear desde Escena" +msgstr "Crear desde escena" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" -msgstr "Mergear desde Escena" +msgstr "Unir desde escena" #: tools/editor/plugins/tile_set_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp @@ -5447,19 +5504,19 @@ msgstr "Error" #: tools/editor/project_export.cpp msgid "Edit Script Options" -msgstr "Editar Opciones de Script" +msgstr "Editar opciones de script" #: tools/editor/project_export.cpp msgid "Please export outside the project folder!" -msgstr "Por favor exportá afuera de la carpeta de proyecto!" +msgstr "¡Prueba exportando fuera de la carpeta del proyecto!" #: tools/editor/project_export.cpp msgid "Error exporting project!" -msgstr "Error al exportar el proyecto!" +msgstr "¡Error al exportar el proyecto!" #: tools/editor/project_export.cpp msgid "Error writing the project PCK!" -msgstr "Error al escribir el PCK de proyecto!" +msgstr "¡Error al escribir el PCK de proyecto!" #: tools/editor/project_export.cpp msgid "No exporter for platform '%s' yet." @@ -5471,35 +5528,35 @@ msgstr "Incluir" #: tools/editor/project_export.cpp msgid "Change Image Group" -msgstr "Cambiar Grupo de Imágenes" +msgstr "Cambiar grupo de imágenes" #: tools/editor/project_export.cpp msgid "Group name can't be empty!" -msgstr "El nombre del grupo no puede estar vacío!" +msgstr "¡El nombre del grupo no puede estar vacío!" #: tools/editor/project_export.cpp msgid "Invalid character in group name!" -msgstr "Caracter invalido en el nombre de grupo!" +msgstr "¡El nombre del grupo contiene una letra no permitida!" #: tools/editor/project_export.cpp msgid "Group name already exists!" -msgstr "El nombre de grupo ya existe!" +msgstr "¡El nombre de grupo ya existe!" #: tools/editor/project_export.cpp msgid "Add Image Group" -msgstr "Agregar Grupo de Imágenes" +msgstr "Añadir grupo de imágenes" #: tools/editor/project_export.cpp msgid "Delete Image Group" -msgstr "Eliminar Grupo de Imágenes" +msgstr "Eliminar grupo de imágenes" #: tools/editor/project_export.cpp msgid "Atlas Preview" -msgstr "Vista Previa de Atlas" +msgstr "Vista previa del atlas" #: tools/editor/project_export.cpp msgid "Project Export Settings" -msgstr "Ajustes de Exportación del Proyecto" +msgstr "Ajustes de exportación del proyecto" #: tools/editor/project_export.cpp msgid "Target" @@ -5507,7 +5564,7 @@ msgstr "Objetivo" #: tools/editor/project_export.cpp msgid "Export to Platform" -msgstr "Exportar a Plataforma" +msgstr "Exportar a plataforma" #: tools/editor/project_export.cpp msgid "Resources" @@ -5523,15 +5580,15 @@ msgstr "Exportar todos los recursos en el proyecto." #: tools/editor/project_export.cpp msgid "Export all files in the project directory." -msgstr "Exportar todos los archivos en el directorio del proyecto." +msgstr "Exportar todos los archivos en la carpeta del proyecto." #: tools/editor/project_export.cpp msgid "Export Mode:" -msgstr "Modo de Exportación:" +msgstr "Modo de exportación:" #: tools/editor/project_export.cpp msgid "Resources to Export:" -msgstr "Recursos a Exportar:" +msgstr "Recursos a exportar:" #: tools/editor/project_export.cpp msgid "Action" @@ -5560,11 +5617,11 @@ msgstr "Imágenes" #: tools/editor/project_export.cpp msgid "Keep Original" -msgstr "Mantener el Original" +msgstr "Mantener el original" #: tools/editor/project_export.cpp msgid "Compress for Disk (Lossy, WebP)" -msgstr "Comprimir para Disco (Con pérdidas, WebP)" +msgstr "Comprimir para disco (Con pérdidas, WebP)" #: tools/editor/project_export.cpp msgid "Compress for RAM (BC/PVRTC/ETC)" @@ -5572,23 +5629,23 @@ msgstr "Comprimir para RAM (BC/PVRTC/ETC)" #: tools/editor/project_export.cpp msgid "Convert Images (*.png):" -msgstr "Convertir Imágenes (*.png):" +msgstr "Convertir imágenes (*.png):" #: tools/editor/project_export.cpp msgid "Compress for Disk (Lossy) Quality:" -msgstr "Calidad de Compresión para Disco (con perdidas):" +msgstr "Calidad de compresión para disco (con pérdidas):" #: tools/editor/project_export.cpp msgid "Shrink All Images:" -msgstr "Reducir Todas las Imagenes:" +msgstr "Reducir todas las imágenes:" #: tools/editor/project_export.cpp msgid "Compress Formats:" -msgstr "Formatos de Compresión:" +msgstr "Formatos de compresión:" #: tools/editor/project_export.cpp msgid "Image Groups" -msgstr "Grupos de Imágenes" +msgstr "Grupos de imágenes" #: tools/editor/project_export.cpp msgid "Groups:" @@ -5596,7 +5653,7 @@ msgstr "Grupos:" #: tools/editor/project_export.cpp msgid "Compress Disk" -msgstr "Comprimir para Disco" +msgstr "Comprimir para disco" #: tools/editor/project_export.cpp msgid "Compress RAM" @@ -5604,11 +5661,11 @@ msgstr "Comprimir para RAM" #: tools/editor/project_export.cpp msgid "Compress Mode:" -msgstr "Modo de Compresión:" +msgstr "Modo de compresión:" #: tools/editor/project_export.cpp msgid "Lossy Quality:" -msgstr "Calidad con Pérdidas:" +msgstr "Calidad con pérdidas:" #: tools/editor/project_export.cpp msgid "Atlas:" @@ -5616,15 +5673,15 @@ msgstr "Atlas:" #: tools/editor/project_export.cpp msgid "Shrink By:" -msgstr "Reducir Por:" +msgstr "Reducir por:" #: tools/editor/project_export.cpp msgid "Preview Atlas" -msgstr "Vista Previa de Atlas" +msgstr "Vista previa del atlas" #: tools/editor/project_export.cpp msgid "Image Filter:" -msgstr "Filtro de Imágenes:" +msgstr "Filtrado de imágenes:" #: tools/editor/project_export.cpp msgid "Images:" @@ -5632,7 +5689,7 @@ msgstr "Imágenes:" #: tools/editor/project_export.cpp msgid "Select None" -msgstr "No Seleccionar Ninguno" +msgstr "Deseleccionar todo" #: tools/editor/project_export.cpp msgid "Group" @@ -5640,11 +5697,11 @@ msgstr "Grupo" #: tools/editor/project_export.cpp msgid "Samples" -msgstr "Muestras" +msgstr "Sonidos" #: tools/editor/project_export.cpp msgid "Sample Conversion Mode: (.wav files):" -msgstr "Modo de Conversión de Muestras: (archivos .wav):" +msgstr "Modo de conversión de muestreo: (archivos .wav):" #: tools/editor/project_export.cpp msgid "Keep" @@ -5656,7 +5713,7 @@ msgstr "Comprimir (RAM - IMA-ADPCM)" #: tools/editor/project_export.cpp msgid "Sampling Rate Limit (Hz):" -msgstr "Limite de Tasa de Sampleo (Hz):" +msgstr "Tasa de muestreo máxima (Hz):" #: tools/editor/project_export.cpp msgid "Trim" @@ -5664,7 +5721,7 @@ msgstr "Recortar" #: tools/editor/project_export.cpp msgid "Trailing Silence:" -msgstr "Silencio Sobrante al Final:" +msgstr "Silencio sobrante al final:" #: tools/editor/project_export.cpp msgid "Script" @@ -5672,7 +5729,7 @@ msgstr "Script" #: tools/editor/project_export.cpp msgid "Script Export Mode:" -msgstr "Modo de Exportación de Scipts:" +msgstr "Modo de exportación de scipts:" #: tools/editor/project_export.cpp msgid "Text" @@ -5688,7 +5745,7 @@ msgstr "Encriptado (Proveer la Clave Debajo)" #: tools/editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" -msgstr "Clave de Encriptación de Script (256-bits como hex):" +msgstr "Clave de cifrado de scripts (256-bits en hexadecimal):" #: tools/editor/project_export.cpp msgid "Export PCK/Zip" @@ -5696,7 +5753,7 @@ msgstr "Exportar PCK/Zip" #: tools/editor/project_export.cpp msgid "Export Project PCK" -msgstr "Exportar PCK de Proyecto" +msgstr "Exportar PCK del proyecto" #: tools/editor/project_export.cpp msgid "Export.." @@ -5704,7 +5761,7 @@ msgstr "Exportar.." #: tools/editor/project_export.cpp msgid "Project Export" -msgstr "Exportar Proyecto" +msgstr "Exportar proyecto" #: tools/editor/project_export.cpp msgid "Export Preset:" @@ -5712,23 +5769,23 @@ msgstr "Presets de Exportación:" #: tools/editor/project_manager.cpp msgid "Invalid project path, the path must exist!" -msgstr "Ruta de proyecto inválida, la ruta debe existir!" +msgstr "¡La ruta del proyecto no es correcta, tiene que existir!" #: tools/editor/project_manager.cpp msgid "Invalid project path, engine.cfg must not exist." -msgstr "Ruta de proyecto inválida, engine.cfg no debe existir." +msgstr "La ruta del proyecto no es correcta, engine.cfg no debe existir." #: tools/editor/project_manager.cpp msgid "Invalid project path, engine.cfg must exist." -msgstr "Ruta de proyecto inválida, engine.cfg debe existir." +msgstr "¡La ruta del proyecto no es correcta, engine.cfg debe existir." #: tools/editor/project_manager.cpp msgid "Imported Project" -msgstr "Proyecto Importado" +msgstr "Proyecto importado" #: tools/editor/project_manager.cpp msgid "Invalid project path (changed anything?)." -msgstr "Ruta de proyecto inválida (cambiaste algo?)." +msgstr "La ruta del proyecto no es correcta (¿has cambiado algo?)." #: tools/editor/project_manager.cpp msgid "Couldn't create engine.cfg in project path." @@ -5740,31 +5797,31 @@ msgstr "Los siguientes archivos no se pudieron extraer del paquete:" #: tools/editor/project_manager.cpp msgid "Package Installed Successfully!" -msgstr "El Paquete se Instaló Exitosamente!" +msgstr "¡El paquete se ha instalado correctamente!" #: tools/editor/project_manager.cpp msgid "Import Existing Project" -msgstr "Importar Proyecto Existente" +msgstr "Importar proyecto existente" #: tools/editor/project_manager.cpp msgid "Project Path (Must Exist):" -msgstr "Ruta del Proyecto (Debe Existir):" +msgstr "Ruta del proyecto (debe existir):" #: tools/editor/project_manager.cpp msgid "Project Name:" -msgstr "Nombre del Proyecto:" +msgstr "Nombre del proyecto:" #: tools/editor/project_manager.cpp msgid "Create New Project" -msgstr "Crear Proyecto Nuevo" +msgstr "Crear proyecto nuevo" #: tools/editor/project_manager.cpp msgid "Project Path:" -msgstr "Ruta del Proyecto:" +msgstr "Ruta del proyecto:" #: tools/editor/project_manager.cpp msgid "Install Project:" -msgstr "Instalar Proyecto:" +msgstr "Instalar proyecto:" #: tools/editor/project_manager.cpp msgid "Install" @@ -5776,7 +5833,7 @@ msgstr "Examinar" #: tools/editor/project_manager.cpp msgid "New Game Project" -msgstr "Nuevo Proyecto de Juego" +msgstr "Nuevo proyecto de juego" #: tools/editor/project_manager.cpp msgid "That's a BINGO!" @@ -5784,37 +5841,37 @@ msgstr "BINGO!" #: tools/editor/project_manager.cpp msgid "Unnamed Project" -msgstr "Proyecto Sin Nombre" +msgstr "Proyecto sin nombre" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to open more than one project?" -msgstr "¿Estás seguro/a que querés abrir mas de un proyecto?" +msgstr "¿Seguro que quieres abrir más de un proyecto?" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run more than one project?" -msgstr "¿Estás seguro/a que queres ejecutar mas de un proyecto?" +msgstr "¿Seguro que quieres ejecutar más de un proyecto?" #: tools/editor/project_manager.cpp msgid "Remove project from the list? (Folder contents will not be modified)" msgstr "" -"¿Quitar proyecto de la lista? (Los contenidos de la carpeta no serán " -"modificados)" +"¿Quieres quitar proyecto de la lista? (El contenido de la carpeta no se " +"modificarán)" #: tools/editor/project_manager.cpp msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" msgstr "" +"Estás a punto de analizar %s carpetas en busca de proyectos de Godot. " +"¿Quieres continuar?" #: tools/editor/project_manager.cpp msgid "Project Manager" -msgstr "Gestor de Proyectos" +msgstr "Administrador de proyectos" #: tools/editor/project_manager.cpp msgid "Project List" -msgstr "Listado de Proyectos" +msgstr "Lista de proyectos" #: tools/editor/project_manager.cpp msgid "Run" @@ -5822,16 +5879,15 @@ msgstr "Ejecutar" #: tools/editor/project_manager.cpp msgid "Scan" -msgstr "Escanear" +msgstr "Analizar" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Select a Folder to Scan" -msgstr "Seleccionar un Nodo" +msgstr "Selecciona la carpeta a analizar" #: tools/editor/project_manager.cpp msgid "New Project" -msgstr "Proyecto Nuevo" +msgstr "Proyecto nuevo" #: tools/editor/project_manager.cpp msgid "Exit" @@ -5843,31 +5899,31 @@ msgstr "Tecla " #: tools/editor/project_settings.cpp msgid "Joy Button" -msgstr "Bottón de Joystick" +msgstr "Botón del mando" #: tools/editor/project_settings.cpp msgid "Joy Axis" -msgstr "Eje de Joystick" +msgstr "Eje del mando" #: tools/editor/project_settings.cpp msgid "Mouse Button" -msgstr "Botón de Mouse" +msgstr "Botón del ratón" #: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." -msgstr "Acción Invalida (cualquier cosa va menos '/' o ':')." +msgstr "La acción no es correcta (no puedes utilizar «/» o «:»)." #: tools/editor/project_settings.cpp msgid "Action '%s' already exists!" -msgstr "La acción '%s' ya existe!" +msgstr "¡La acción «%s» ya existe!" #: tools/editor/project_settings.cpp msgid "Rename Input Action Event" -msgstr "Renombrar Evento de Acción de Entrada" +msgstr "Renombrar evento de acción de entrada" #: tools/editor/project_settings.cpp msgid "Add Input Action Event" -msgstr "Agregar Evento de Acción de Entrada" +msgstr "Añadir evento de acción de entrada" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "Control+" @@ -5875,31 +5931,31 @@ msgstr "Control+" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "Press a Key.." -msgstr "Presionar una Tecla.." +msgstr "Presiona una tecla..." #: tools/editor/project_settings.cpp msgid "Mouse Button Index:" -msgstr "Indice de Botones de Mouse:" +msgstr "Índice de botón del ratón:" #: tools/editor/project_settings.cpp msgid "Left Button" -msgstr "Botón Izquierdo" +msgstr "Botón izquierdo" #: tools/editor/project_settings.cpp msgid "Right Button" -msgstr "Botón Derecho" +msgstr "Botón derecho" #: tools/editor/project_settings.cpp msgid "Middle Button" -msgstr "Botón del Medio" +msgstr "Botón del medio" #: tools/editor/project_settings.cpp msgid "Wheel Up Button" -msgstr "Botón Rueda Arriba" +msgstr "Botón rueda arriba" #: tools/editor/project_settings.cpp msgid "Wheel Down Button" -msgstr "Botón Rueda Abajo" +msgstr "Botón rueda abajo" #: tools/editor/project_settings.cpp msgid "Button 6" @@ -5919,23 +5975,23 @@ msgstr "Botón 9" #: tools/editor/project_settings.cpp msgid "Joystick Axis Index:" -msgstr "Indice de Ejes de Joystick:" +msgstr "Índice de ejes del mando:" #: tools/editor/project_settings.cpp msgid "Joystick Button Index:" -msgstr "Indice de Botones de Joystick:" +msgstr "Índice de botones del mando:" #: tools/editor/project_settings.cpp msgid "Add Input Action" -msgstr "Agregar Acción de Entrada" +msgstr "Añadir acción de entrada" #: tools/editor/project_settings.cpp msgid "Erase Input Action Event" -msgstr "Borrar Evento de Acción de Entrada" +msgstr "Borrar evento de acción de entrada" #: tools/editor/project_settings.cpp msgid "Toggle Persisting" -msgstr "Act/Desact. Persistente" +msgstr "Des/activar persistencia" #: tools/editor/project_settings.cpp msgid "Error saving settings." @@ -5943,39 +5999,39 @@ msgstr "Error al guardar los ajustes." #: tools/editor/project_settings.cpp msgid "Settings saved OK." -msgstr "Ajustes guardados satisfactoriamente." +msgstr "Los ajustes se han guardado correctamente." #: tools/editor/project_settings.cpp msgid "Add Translation" -msgstr "Agregar Traducción" +msgstr "Añadir traducción" #: tools/editor/project_settings.cpp msgid "Remove Translation" -msgstr "Quitar Traducción" +msgstr "Quitar traducción" #: tools/editor/project_settings.cpp msgid "Add Remapped Path" -msgstr "Agregar Path Remapeado" +msgstr "Añadir ruta remapeada" #: tools/editor/project_settings.cpp msgid "Resource Remap Add Remap" -msgstr "Remapear Recurso Agregar Remap" +msgstr "Añadir remapeo de recursos" #: tools/editor/project_settings.cpp msgid "Change Resource Remap Language" -msgstr "Cambiar Lenguaje de Remapeo de Recursos" +msgstr "Cambiar idioma de remapeo de recursos" #: tools/editor/project_settings.cpp msgid "Remove Resource Remap" -msgstr "Remover Remapeo de Recursos" +msgstr "Quitar remapeo de recursos" #: tools/editor/project_settings.cpp msgid "Remove Resource Remap Option" -msgstr "Remover Opción de Remapeo de Recursos" +msgstr "Quitar opción de remapeo de recursos" #: tools/editor/project_settings.cpp msgid "Project Settings (engine.cfg)" -msgstr "Ajustes de Proyecto (engine.cfg)" +msgstr "Ajustes de proyecto (engine.cfg)" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "General" @@ -5991,11 +6047,11 @@ msgstr "Eliminar" #: tools/editor/project_settings.cpp msgid "Copy To Platform.." -msgstr "Copiar A Plataforma.." +msgstr "Copiar a plataforma.." #: tools/editor/project_settings.cpp msgid "Input Map" -msgstr "Mapa de Entradas" +msgstr "Mapa de entradas" #: tools/editor/project_settings.cpp msgid "Action:" @@ -6007,11 +6063,11 @@ msgstr "Dispositivo:" #: tools/editor/project_settings.cpp msgid "Index:" -msgstr "Indice:" +msgstr "Índice:" #: tools/editor/project_settings.cpp msgid "Localization" -msgstr "Localización" +msgstr "Traducciones" #: tools/editor/project_settings.cpp msgid "Translations" @@ -6023,7 +6079,7 @@ msgstr "Traducciones:" #: tools/editor/project_settings.cpp msgid "Add.." -msgstr "Agregar.." +msgstr "Añadir..." #: tools/editor/project_settings.cpp msgid "Remaps" @@ -6035,11 +6091,11 @@ msgstr "Recursos:" #: tools/editor/project_settings.cpp msgid "Remaps by Locale:" -msgstr "Remapeos por Locale:" +msgstr "Remapeos por idioma:" #: tools/editor/project_settings.cpp msgid "Locale" -msgstr "Locale" +msgstr "Idioma" #: tools/editor/project_settings.cpp msgid "AutoLoad" @@ -6051,27 +6107,27 @@ msgstr "Plugins" #: tools/editor/property_editor.cpp msgid "Preset.." -msgstr "Preseteo.." +msgstr "Ajuste.." #: tools/editor/property_editor.cpp msgid "Ease In" -msgstr "Ease In" +msgstr "Transición entrada" #: tools/editor/property_editor.cpp msgid "Ease Out" -msgstr "Ease Out" +msgstr "Transición salida" #: tools/editor/property_editor.cpp msgid "Zero" -msgstr "Zero" +msgstr "Cero" #: tools/editor/property_editor.cpp msgid "Easing In-Out" -msgstr "Easing In-Out" +msgstr "Transición entrada-salida" #: tools/editor/property_editor.cpp msgid "Easing Out-In" -msgstr "Easing Out-In" +msgstr "Transición salida-entrada" #: tools/editor/property_editor.cpp msgid "File.." @@ -6091,7 +6147,7 @@ msgstr "Asignar" #: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" -msgstr "Error al cargar el archivo: No es un recurso!" +msgstr "Error al cargar el archivo: ¡No es un recurso!" #: tools/editor/property_editor.cpp msgid "Couldn't load image" @@ -6099,15 +6155,15 @@ msgstr "No se pudo cargar la imagen" #: tools/editor/property_editor.cpp msgid "Bit %d, val %d." -msgstr "Bit %d, val %d." +msgstr "Bit %d, valor %d." #: tools/editor/property_editor.cpp msgid "On" -msgstr "On" +msgstr "Activado" #: tools/editor/property_editor.cpp msgid "Set" -msgstr "Setear" +msgstr "Establecer" #: tools/editor/property_editor.cpp msgid "Properties:" @@ -6121,6 +6177,16 @@ msgstr "Global" msgid "Sections:" msgstr "Selecciones:" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Seleccionar puntos" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Modo de selección" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "No se pudo ejecutar la herramienta PVRTC:" @@ -6132,15 +6198,15 @@ msgstr "" #: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp msgid "Reparent Node" -msgstr "Reemparentar Nodo" +msgstr "Reemparentar nodo" #: tools/editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "Reemparentar Ubicación (Seleccionar nuevo Padre):" +msgstr "Reemparentar ubicación (selecciona un nuevo padre):" #: tools/editor/reparent_dialog.cpp msgid "Keep Global Transform" -msgstr "Mantener Transformación Global" +msgstr "Mantener transformación global" #: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp msgid "Reparent" @@ -6148,56 +6214,55 @@ msgstr "Reemparentar" #: tools/editor/resources_dock.cpp msgid "Create New Resource" -msgstr "Crear Nuevo Recurso" +msgstr "Crear recurso nuevo" #: tools/editor/resources_dock.cpp msgid "Open Resource" -msgstr "Abrir Recurso" +msgstr "Abrir recurso" #: tools/editor/resources_dock.cpp msgid "Save Resource" -msgstr "Guardar Recurso" +msgstr "Guardar recurso" #: tools/editor/resources_dock.cpp msgid "Resource Tools" -msgstr "Herramientas de Recursos" +msgstr "Herramientas de recursos" #: tools/editor/resources_dock.cpp msgid "Make Local" -msgstr "Crear Local" +msgstr "Crear local" #: tools/editor/run_settings_dialog.cpp msgid "Run Mode:" -msgstr "Modo de Ejecución:" +msgstr "Modo de ejecución:" #: tools/editor/run_settings_dialog.cpp msgid "Current Scene" -msgstr "Escena Actual" +msgstr "Escena actual" #: tools/editor/run_settings_dialog.cpp msgid "Main Scene" -msgstr "Escena Principal" +msgstr "Escena principal" #: tools/editor/run_settings_dialog.cpp msgid "Main Scene Arguments:" -msgstr "Argumentos de Escena Principal:" +msgstr "Argumentos de escena principal:" #: tools/editor/run_settings_dialog.cpp msgid "Scene Run Settings" -msgstr "Ajustes de Ejecución de Escena" +msgstr "Ajustes de ejecución de escena" #: tools/editor/scene_tree_dock.cpp msgid "OK :(" -msgstr "OK :(" +msgstr "Muy bien :(" #: tools/editor/scene_tree_dock.cpp msgid "No parent to instance a child at." msgstr "No hay padre al que instanciarle un hijo." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "No parent to instance the scenes at." -msgstr "No hay padre al que instanciarle un hijo." +msgstr "No hay padre donde instanciar la escena." #: tools/editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -6209,7 +6274,7 @@ msgstr "Error al instanciar escena desde %s" #: tools/editor/scene_tree_dock.cpp msgid "Ok" -msgstr "Ok" +msgstr "Aceptar" #: tools/editor/scene_tree_dock.cpp msgid "" @@ -6221,7 +6286,7 @@ msgstr "" #: tools/editor/scene_tree_dock.cpp msgid "Instance Scene(s)" -msgstr "Instanciar Escena(s)" +msgstr "Instanciar escenas" #: tools/editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -6237,15 +6302,15 @@ msgstr "Mover Nodos Dentro del Padre" #: tools/editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" -msgstr "Duplicar Nodo(s)" +msgstr "Duplicar nodos" #: tools/editor/scene_tree_dock.cpp msgid "Delete Node(s)?" -msgstr "Eliminar Nodo(s)?" +msgstr "¿Quieres borrar los nodos?" #: tools/editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "Esta operación no puede hacerse sin una escena." +msgstr "Esta operación no puede realizarse sin una escena." #: tools/editor/scene_tree_dock.cpp msgid "This operation requires a single selected node." @@ -6253,39 +6318,38 @@ msgstr "Esta operación requiere un solo nodo seleccionado." #: tools/editor/scene_tree_dock.cpp msgid "This operation can't be done on instanced scenes." -msgstr "Esta operación no puede ser realizada en escenas instanciadas." +msgstr "Esta operación no puede realizarse en escenas instanciadas." #: tools/editor/scene_tree_dock.cpp msgid "Save New Scene As.." -msgstr "Guardar Nueva Escena Como.." +msgstr "Guardar nueva escena como.." #: tools/editor/scene_tree_dock.cpp msgid "Makes Sense!" -msgstr "Tiene Sentido!" +msgstr "¡Entendido!" #: tools/editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" -msgstr "No se puede operar sobre los nodos de una escena externa!" +msgstr "¡No se puede operar sobre los nodos de una escena externa!" #: tools/editor/scene_tree_dock.cpp msgid "Can't operate on nodes the current scene inherits from!" -msgstr "" -"No se puede operar sobre los nodos de los cual hereda la escena actual!" +msgstr "¡No se puede operar sobre los nodos heredados por la escena actual!" #: tools/editor/scene_tree_dock.cpp msgid "Remove Node(s)" -msgstr "Quitar Nodo(s)" +msgstr "Borrar nodos" #: tools/editor/scene_tree_dock.cpp msgid "Create Node" -msgstr "Crear Nodo" +msgstr "Crear nodo" #: tools/editor/scene_tree_dock.cpp msgid "" "Couldn't save new scene. Likely dependencies (instances) couldn't be " "satisfied." msgstr "" -"No se pudo guardar la escena nueva. Probablemente no se hayan podido " +"No se pudo guardar la escena nueva. Es posible que no se hayan podido " "satisfacer las dependencias (instancias)." #: tools/editor/scene_tree_dock.cpp @@ -6298,48 +6362,47 @@ msgstr "Error al duplicar escena para guardarla." #: tools/editor/scene_tree_dock.cpp msgid "Edit Groups" -msgstr "Editar Grupos" +msgstr "Editar grupos" #: tools/editor/scene_tree_dock.cpp msgid "Edit Connections" -msgstr "Editar Conexiones" +msgstr "Editar conexiones" #: tools/editor/scene_tree_dock.cpp msgid "Delete Node(s)" -msgstr "Eliminar Nodo(s)" +msgstr "Borrar nodos" #: tools/editor/scene_tree_dock.cpp msgid "Add Child Node" -msgstr "Agregar Nodo Hijo" +msgstr "Añadir nodo hijo" #: tools/editor/scene_tree_dock.cpp msgid "Instance Child Scene" -msgstr "Instanciar Escena Hija" +msgstr "Instanciar escena hija" #: tools/editor/scene_tree_dock.cpp msgid "Change Type" -msgstr "Cambiar Tipo" +msgstr "Cambiar tipo" #: tools/editor/scene_tree_dock.cpp msgid "Add Script" -msgstr "Agregar Script" +msgstr "Añadir script" #: tools/editor/scene_tree_dock.cpp msgid "Merge From Scene" -msgstr "Mergear Desde Escena" +msgstr "Unir desde escena" #: tools/editor/scene_tree_dock.cpp msgid "Save Branch as Scene" msgstr "Guardar Rama como Escena" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "Confirmá, por favor..." +msgstr "Eliminar (sin confirmar)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" -msgstr "Agregar/Crear un Nuevo Nodo" +msgstr "Añadir/crear nodo nuevo" #: tools/editor/scene_tree_dock.cpp msgid "" @@ -6350,10 +6413,8 @@ msgstr "" "existe ningún nodo raíz." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Create a new script for the selected node." -msgstr "" -"Instanciar la(s) escena(s) seleccionadas como hijas del nodo seleccionado." +msgstr "Crear un nuevo script para el nodo seleccionado." #: tools/editor/scene_tree_editor.cpp msgid "" @@ -6377,59 +6438,60 @@ msgstr "Instancia:" #: tools/editor/scene_tree_editor.cpp msgid "Invalid node name, the following characters are not allowed:" -msgstr "Nobre de nodo inválido, los siguientes caracteres no estan permitidos:" +msgstr "" +"El nombre del nodo no es correcto, las siguientes letras no están permitidas:" #: tools/editor/scene_tree_editor.cpp msgid "Rename Node" -msgstr "Renombrar Nodo" +msgstr "Renombrar nodo" #: tools/editor/scene_tree_editor.cpp msgid "Scene Tree (Nodes):" -msgstr "Arbol de Escenas (Nodos):" +msgstr "Árbol de escenas (nodos):" #: tools/editor/scene_tree_editor.cpp msgid "Editable Children" -msgstr "Hijos Editables" +msgstr "Hijos editables" #: tools/editor/scene_tree_editor.cpp msgid "Load As Placeholder" -msgstr "Cargar Como Placeholder" +msgstr "Cargar como temporal" #: tools/editor/scene_tree_editor.cpp msgid "Discard Instancing" -msgstr "Descartar Instanciado" +msgstr "Descartar instancia" #: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" -msgstr "Abrir en Editor" +msgstr "Abrir en el editor" #: tools/editor/scene_tree_editor.cpp msgid "Clear Inheritance" -msgstr "Limpiar Herencia" +msgstr "Limpiar heredado" #: tools/editor/scene_tree_editor.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "Limpiar Herencia? (Imposible Deshacer!)" +msgstr "¿Quieres limpiar la herencia? (No se puede deshacer)" #: tools/editor/scene_tree_editor.cpp msgid "Clear!" -msgstr "Limpiar!" +msgstr "¡Borrar!" #: tools/editor/scene_tree_editor.cpp msgid "Select a Node" -msgstr "Seleccionar un Nodo" +msgstr "Selecciona un nodo" #: tools/editor/script_create_dialog.cpp msgid "Invalid parent class name" -msgstr "Nombre de clase padre inválido" +msgstr "El nombre de clase padre no es correcto" #: tools/editor/script_create_dialog.cpp msgid "Valid chars:" -msgstr "Caracteres válidos:" +msgstr "Letras permitidas:" #: tools/editor/script_create_dialog.cpp msgid "Invalid class name" -msgstr "Nombre de clase inválido" +msgstr "El nombre de clase no es correcto" #: tools/editor/script_create_dialog.cpp msgid "Valid name" @@ -6437,19 +6499,19 @@ msgstr "Nombre válido" #: tools/editor/script_create_dialog.cpp msgid "N/A" -msgstr "N/A" +msgstr "N/D" #: tools/editor/script_create_dialog.cpp msgid "Class name is invalid!" -msgstr "El nombre de clase es inválido!" +msgstr "¡El nombre de clase no es correcto!" #: tools/editor/script_create_dialog.cpp msgid "Parent class name is invalid!" -msgstr "El nombre de la clase padre es inválido!" +msgstr "¡El nombre de clase padre no es correcto!" #: tools/editor/script_create_dialog.cpp msgid "Invalid path!" -msgstr "Ruta inválida!" +msgstr "¡Ruta incorrecta!" #: tools/editor/script_create_dialog.cpp msgid "Could not create script in filesystem." @@ -6465,31 +6527,31 @@ msgstr "La ruta no es local" #: tools/editor/script_create_dialog.cpp msgid "Invalid base path" -msgstr "Ruta base inválida" +msgstr "Ruta base incorrecta" #: tools/editor/script_create_dialog.cpp msgid "File exists" -msgstr "El archivo existe" +msgstr "El archivo ya existe" #: tools/editor/script_create_dialog.cpp msgid "Invalid extension" -msgstr "Extensión invalida" +msgstr "La extensión no es correcta" #: tools/editor/script_create_dialog.cpp msgid "Valid path" -msgstr "Ruta inválida" +msgstr "Ruta válida" #: tools/editor/script_create_dialog.cpp msgid "Class Name:" -msgstr "Nombre de Clase:" +msgstr "Nombre de clase:" #: tools/editor/script_create_dialog.cpp msgid "Built-In Script" -msgstr "Script Integrado (Built-In)" +msgstr "Script integrado" #: tools/editor/script_create_dialog.cpp msgid "Create Node Script" -msgstr "Crear Script de Nodo" +msgstr "Crear script de nodo" #: tools/editor/script_editor_debugger.cpp msgid "Bytes:" @@ -6509,7 +6571,7 @@ msgstr "Fuente:" #: tools/editor/script_editor_debugger.cpp msgid "Function:" -msgstr "Funcion:" +msgstr "Función:" #: tools/editor/script_editor_debugger.cpp msgid "Errors" @@ -6521,11 +6583,11 @@ msgstr "Proceso Hijo Conectado" #: tools/editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" -msgstr "Inspeccionar Instancia Previa" +msgstr "Inspeccionar instancia anterior" #: tools/editor/script_editor_debugger.cpp msgid "Inspect Next Instance" -msgstr "Inspeccionar Instancia Siguiente" +msgstr "Inspeccionar instancia siguiente" #: tools/editor/script_editor_debugger.cpp msgid "Stack Frames" @@ -6549,7 +6611,7 @@ msgstr "Inspector Remoto" #: tools/editor/script_editor_debugger.cpp msgid "Live Scene Tree:" -msgstr "Arbos de Escenas en Vivo:" +msgstr "Árbol de Escenas en Vivo:" #: tools/editor/script_editor_debugger.cpp msgid "Remote Object Properties: " @@ -6581,11 +6643,11 @@ msgstr "Total:" #: tools/editor/script_editor_debugger.cpp msgid "Video Mem" -msgstr "Mem. de Video" +msgstr "Memoria de vídeo" #: tools/editor/script_editor_debugger.cpp msgid "Resource Path" -msgstr "Ruta de Recursos" +msgstr "Ruta de recursos" #: tools/editor/script_editor_debugger.cpp msgid "Type" @@ -6597,15 +6659,15 @@ msgstr "Uso" #: tools/editor/script_editor_debugger.cpp msgid "Misc" -msgstr "Misc" +msgstr "Otros" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control:" -msgstr "Controles Cliqueados:" +msgstr "Controles seleccionados:" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control Type:" -msgstr "Tipo de Controles Cliqueados:" +msgstr "Tipo de controles seleccionados:" #: tools/editor/script_editor_debugger.cpp msgid "Live Edit Root:" @@ -6613,7 +6675,7 @@ msgstr "Raíz de Edición en Vivo:" #: tools/editor/script_editor_debugger.cpp msgid "Set From Tree" -msgstr "Setear Desde Arbol" +msgstr "Establecer desde árbol" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" @@ -6649,12 +6711,19 @@ msgstr "Cambiar Altura de Shape Cápsula" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "Cambiar Largo de Shape Rayo" +msgstr "Cambiar longitud de forma de rayo" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" msgstr "Cambiar Alcances de Notificadores" +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "El nodo personalizado no tiene ningún _get_output_port_unsequenced(idx," +#~ "wmem), pero se especificaron puertos no secuenciados." + #~ msgid "Cannot go into subdir:" #~ msgstr "No se puede acceder al subdir:" diff --git a/tools/translations/es_AR.po b/tools/translations/es_AR.po index c8f75f121a..7a430aa695 100644 --- a/tools/translations/es_AR.po +++ b/tools/translations/es_AR.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the Godot source code. # # Lisandro Lorea <lisandrolorea@gmail.com>, 2016. +# Sebastian Silva <sebastian@sugarlabs.org>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-07-15 07:17+0000\n" -"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" +"PO-Revision-Date: 2016-08-23 11:49+0000\n" +"Last-Translator: Sebastian Silva <sebastian@sugarlabs.org>\n" "Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/" "godot-engine/godot/es_AR/>\n" "Language: es_AR\n" @@ -70,40 +71,45 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Un nodo rindió(yielded) sin memoria de trabajo, por favor lee los docs sobre " +"como usar yield correctamente!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"El nodo rindió(yielded), pero no retornó un estado de función en la primera " +"memoria de trabajo." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"El valor de retorno debe ser asignado al primer elemento de la memoria de " +"trabajo nodos! Arreglá tu nodo, por favor." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "El nodo retornó una secuencia de salida inválida: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" +"Se encontró un bit de secuencia pero no el nodo en el stack, reportá el bug!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Stack overflow con la profundidad del stack: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Funcion:" +msgstr "Funciones:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Variable" +msgstr "Variables:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -111,86 +117,102 @@ msgstr "Señales:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "El nombre no es un identificador válido:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "El nombre ya esta en uso por otra func/var/señal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Crear Función" +msgstr "Renombrar Función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Renombrar Muestra" +msgstr "Renombrar Variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Renombrar Muestra" +msgstr "Renombrar Señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Funcion:" +msgstr "Agregar Función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Variable" +msgstr "Agregar Variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Señales" +msgstr "Agregar Señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Quitar Selección" +msgstr "Quitar Función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Variable" +msgstr "Quitar Variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Variable" +msgstr "Editando Variable:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Quitar Selección" +msgstr "Quitar Señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Conectando Señal:" +msgstr "Editando Señal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "Agregar Nodo Hijo" +msgstr "Agregar Nodo" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Node(s) From Tree" -msgstr "Nodo desde Escena" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Agregar Nodo Hijo" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Agregar Nodo(s) Desde Arbol" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Agregar Propiedad Getter" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Agregar Propiedad Setter" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -200,22 +222,20 @@ msgid "Edit" msgstr "Editar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Tipo de Datos:" +msgstr "Tipo Base:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" msgstr "Miembros:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Available Nodes:" -msgstr "Nodo TimeScale" +msgstr "Nodos Disponibles:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Seleccioná o creá una función para editar el grafo" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -231,24 +251,20 @@ msgid "Close" msgstr "Cerrar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "Argumentos de Llamada Extras:" +msgstr "Editar Argumentos de Señal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Variable" +msgstr "Editar Variable:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Cambiar Tipo" +msgstr "Cambiar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Eliminar archivos seleccionados?" +msgstr "Eliminar Seleccionados" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -257,72 +273,81 @@ msgstr "Act/Desact. Breakpoint" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Encontrar Siguiente" +msgid "Find Node Type" +msgstr "Encontrar Tipo de Nodo" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Copiar Pose" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Crear Nodo" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Pegar Pose" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Tipo de input no iterable: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "El iterador se volvió inválido" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "El iterador se volvió inválido: " #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Invalid index property name." -msgstr "Nombre de clase padre inválido" +msgstr "Nombre de propiedad indíce inválido." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "El objeto base no es un Nodo!" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "La ruta no es local" +msgstr "La ruta no apunta a un Nodo!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Nombre de propiedad índice '%s' inválido en nodo %s." #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid argument of type: " -msgstr "Nombre de clase padre inválido" +msgstr ": Argumento inválido de tipo: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Nombre de clase padre inválido" +msgstr ": Argumentos inválidos: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet no encontrado en el script: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet no encontrado en el script: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" +"El nodo personalizado no tiene ningún método _step(), no se puede procesar " +"el grafo." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"Valor de retorno inválido de _step(), debe ser un entero (seq out), o string " +"(error)." #: scene/2d/animated_sprite.cpp msgid "" @@ -563,7 +588,8 @@ msgstr "Todos los Archivos (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Abrir" @@ -1055,6 +1081,7 @@ msgstr "Optimizar" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." msgstr "" +"Seleccioná un AnimationPlayer de el Arbol de Escenas para editar animaciones." #: tools/editor/animation_editor.cpp msgid "Key" @@ -1106,7 +1133,8 @@ msgstr "Cambiar Valor del Array" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Buscar:" @@ -1264,7 +1292,7 @@ msgstr "Zoom Out" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Resetear el Zoom" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1355,10 +1383,16 @@ msgid "Create New" msgstr "Crear Nuevo" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Coincidencias:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Descripción:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "Buscar Reemplazo Para:" @@ -1686,10 +1720,6 @@ msgstr "Items de Tema de la GUI:" msgid "Constants:" msgstr "Constantes:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Descripción:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Descripción de Métodos:" @@ -3669,9 +3699,8 @@ msgid "Paste Pose" msgstr "Pegar Pose" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "Seleccionar Modo (Q)" +msgstr "Seleccionar Modo" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3692,14 +3721,12 @@ msgid "Alt+RMB: Depth list selection" msgstr "Alt+Click Der.: Selección en depth list" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "Modo Mover (W)" +msgstr "Modo Mover" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate Mode" -msgstr "Modo Rotar (E)" +msgstr "Modo Rotar" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -4513,9 +4540,8 @@ msgid "Save Theme As" msgstr "Guardar Tema Como" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "Clonar hacia Abajo" +msgstr "Cerrar Docs" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -5787,14 +5813,12 @@ msgid "Unnamed Project" msgstr "Proyecto Sin Nombre" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to open more than one project?" msgstr "¿Estás seguro/a que querés abrir mas de un proyecto?" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run more than one project?" -msgstr "¿Estás seguro/a que queres ejecutar mas de un proyecto?" +msgstr "¿Estás seguro/a que querés ejecutar mas de un proyecto?" #: tools/editor/project_manager.cpp msgid "Remove project from the list? (Folder contents will not be modified)" @@ -5807,6 +5831,8 @@ msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" msgstr "" +"Estas a punto de examinar %s carpetas en busca de proyectos de Godot. " +"Confirmar?" #: tools/editor/project_manager.cpp msgid "Project Manager" @@ -5825,9 +5851,8 @@ msgid "Scan" msgstr "Escanear" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Select a Folder to Scan" -msgstr "Seleccionar un Nodo" +msgstr "Seleccionar una Carpeta para Examinar" #: tools/editor/project_manager.cpp msgid "New Project" @@ -6121,6 +6146,16 @@ msgstr "Global" msgid "Sections:" msgstr "Selecciones:" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Seleccionar Puntos" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Seleccionar Modo" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "No se pudo ejecutar la herramienta PVRTC:" @@ -6195,9 +6230,8 @@ msgid "No parent to instance a child at." msgstr "No hay padre al que instanciarle un hijo." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "No parent to instance the scenes at." -msgstr "No hay padre al que instanciarle un hijo." +msgstr "No hay padre donde instanciar la escena." #: tools/editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -6333,9 +6367,8 @@ msgid "Save Branch as Scene" msgstr "Guardar Rama como Escena" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "Confirmá, por favor..." +msgstr "Eliminar (Sin Confirmación)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" @@ -6350,10 +6383,8 @@ msgstr "" "existe ningún nodo raíz." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Create a new script for the selected node." -msgstr "" -"Instanciar la(s) escena(s) seleccionadas como hijas del nodo seleccionado." +msgstr "Crear un nuevo script para el nodo seleccionado." #: tools/editor/scene_tree_editor.cpp msgid "" @@ -6549,7 +6580,7 @@ msgstr "Inspector Remoto" #: tools/editor/script_editor_debugger.cpp msgid "Live Scene Tree:" -msgstr "Arbos de Escenas en Vivo:" +msgstr "Árbol de Escenas en Vivo:" #: tools/editor/script_editor_debugger.cpp msgid "Remote Object Properties: " @@ -6655,6 +6686,13 @@ msgstr "Cambiar Largo de Shape Rayo" msgid "Change Notifier Extents" msgstr "Cambiar Alcances de Notificadores" +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "El nodo personalizado no tiene ningún _get_output_port_unsequenced(idx," +#~ "wmem), pero se especificaron puertos no secuenciados." + #~ msgid "Cannot go into subdir:" #~ msgstr "No se puede acceder al subdir:" diff --git a/tools/translations/fa.po b/tools/translations/fa.po index b058fcb10e..dcc29135af 100644 --- a/tools/translations/fa.po +++ b/tools/translations/fa.po @@ -3,11 +3,13 @@ # This file is distributed under the same license as the Godot source code. # # alabd14313 <alabd14313@yahoo.com>, 2016. +# hamed nasib <cghamed752@chmail.ir>, 2016. +# rezapouya <r.pouya@chmail.ir>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-08-10 15:27+0000\n" +"PO-Revision-Date: 2016-08-12 12:55+0000\n" "Last-Translator: alabd14313 <alabd14313@yahoo.com>\n" "Language-Team: Persian <https://hosted.weblate.org/projects/godot-engine/" "godot/fa/>\n" @@ -21,181 +23,222 @@ msgstr "" #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" +"نوع آرگومان برای متد ()convert نامعتبر است ، از ثابت های *_TYPE استفاده " +"کنید ." #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." msgstr "" +"تعداد بایت های مورد نظر برای رمزگشایی بایت ها کافی نیست ، و یا فرمت نامعتبر " +"است ." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" -msgstr "" +msgstr "آرگومان step صفر است!" #: modules/gdscript/gd_functions.cpp +#, fuzzy msgid "Not a script with an instance" -msgstr "" +msgstr "اسکریپتی با یک نمونه نیست ." #: modules/gdscript/gd_functions.cpp msgid "Not based on a script" -msgstr "" +msgstr "بر اساس یک اسکریپت نیست." #: modules/gdscript/gd_functions.cpp msgid "Not based on a resource file" -msgstr "" +msgstr "بر اساس یک فایل منبع نیست." #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "فرمت دیکشنری نمونهی نامعتبر (pass@ مفقود)" +msgstr "فرمت دیکشنری نمونه نامعتبر (pass@ مفقود)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" -msgstr "فرمت دیکشنری نمونهی نامعتبر (اسکریپت نمیتواند در path@ بارگذاری شود)" +msgstr "" +"فرمت نمونه ی دیکشنری نامعتبر است . ( نمی توان اسکریپت را از مسیر path@ " +"بارگذاری کرد.)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "فرمت دیکشنری نمونهی نامعتبر (اسکریپت نامعتبر در path@)" +msgstr "فرمت دیکشنری نمونه نامعتبر (اسکریپت نامعتبر در path@)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" -msgstr "دیکشنری نمونهی نامعتبر (زیرکلاسهای نامعتبر)" +msgstr "نمونه ی دیکشنری نامعتبر است . (زیرکلاسهای نامعتبر)" #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"یک گره بدون قرارگیری در حافظه ، متوقف شده است. لطفا اسناد رسمی Godot را برای " +"یادگیری درست متوقف کردن(yield کردن بازی)، مطالعه کنید." #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"گره متوقف شده است، ولی وضعیت تابع را به اولین حافظهی فعال برنگردانده است." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"مقدار بازگشتی باید به اولین المان گره فعال در حافظه ،تخصیص یابد! لطفا گره " +"خود را اصلاح کنید." #: modules/visual_script/visual_script.cpp +#, fuzzy msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "گره ، یک سلسله خروجی نامعتبر را برگردانده است: " #: modules/visual_script/visual_script.cpp +#, fuzzy msgid "Found sequence bit but not the node in the stack, report bug!" -msgstr "" +msgstr "بیت دنباله پیدا شد ولی گره موجود در پشته نه، باگ را گزارش کن!" #: modules/visual_script/visual_script.cpp +#, fuzzy msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "سرریزی پشته با عمق پشته: " #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "وظایف:" #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" -msgstr "" +msgstr "متغیرها:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" -msgstr "" +msgstr "سیگنال ها:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "نام یک شناسهی معتبر نیست:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "نام هماکنون توسط تابع/متغیر/سیگنال استفاده شده است:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "انتخاب شده را حذف کن" +msgstr "تغییر نام نقش" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "" +msgstr "تغییر متغیر" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "Signal را تغییر نام بده" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function" -msgstr "" +msgstr "افزودن وظیفه" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" -msgstr "" +msgstr "افزودن متغیر" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "Signal را اضافه کن" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "انتخاب شده را حذف کن" +msgstr "برداشتن نقش" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Variable" -msgstr "" +msgstr "برداشتن متغیر" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Variable:" -msgstr "" +msgstr "ویرایش متغیر:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "انتخاب شده را حذف کن" +msgstr "برداشتن موج" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "" +msgstr "ویرایش سیگنال:" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" +msgstr "افزودن گره" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Meta to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "افزودن گره" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "گره(ها) را از درخت اضافه کن" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "دارایی Getter را اضافه کن" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "دارایی Setter را اضافه کن" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Edit" -msgstr "" +msgstr "ویرایش کردن" #: modules/visual_script/visual_script_editor.cpp msgid "Base Type:" -msgstr "" +msgstr "نوع پایه:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" -msgstr "" +msgstr "عضوها:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "گره های موجود:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "یک تابع انتخاب یا ایجاد کنید تا گراف را ویرایش کنید" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -208,92 +251,105 @@ msgstr "" #: tools/editor/project_settings.cpp tools/editor/property_editor.cpp #: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp msgid "Close" -msgstr "" +msgstr "بستن" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Signal Arguments:" -msgstr "" +msgstr "آرگومانهای سیگنال را ویرایش کن" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Variable:" -msgstr "" +msgstr "متغیر را ویرایش کن:" #: modules/visual_script/visual_script_editor.cpp msgid "Change" -msgstr "" +msgstr "تغییر بده" #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" -msgstr "" +msgstr "انتخاب شده را حذف کن" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" +msgstr "یک Breakpoint درج کن" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "پیدا کردن نوع گره" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Cut Nodes" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "مسیر به سمت گره:" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "نوع ورودی قابل تکرار نیست: " #: modules/visual_script/visual_script_flow_control.cpp +#, fuzzy msgid "Iterator became invalid" -msgstr "" +msgstr "تکرارگر نامعتبر شد" #: modules/visual_script/visual_script_flow_control.cpp +#, fuzzy msgid "Iterator became invalid: " -msgstr "" +msgstr "تکرارگر نامعتبر شد: " #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name." -msgstr "" +msgstr "نام دارایی ایندکس نامعتبر." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "شیء پایه یک گره نیست!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "" +msgstr "مسیربه یک گره نمی رسد!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "نام دارایی ایندکس نامعتبر 's%' در گره s%." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "" +msgstr ": آرگومان نوع نامعتبر " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr "" +msgstr ": آرگومانهای نامعتبر: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet در اسکریپت پیدا نشد: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet در اسکریپت پیدا نشد: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." -msgstr "" +msgstr "گره سفارشی بدون متد ()step_ نمیتواند گراف را پردازش کند." #: modules/visual_script/visual_script_nodes.cpp +#, fuzzy msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"مقدار بازگشتی نامعتبر از ()step_ ، باید integer (seq out) ، یا string " +"(error) باشد." #: scene/2d/animated_sprite.cpp msgid "" @@ -434,7 +490,7 @@ msgstr "" #: scene/3d/baked_light_instance.cpp msgid "BakedLightInstance does not contain a BakedLight resource." -msgstr "" +msgstr "BakedLightInstance محتوی یک منبع BakedLight نیست." #: scene/3d/body_shape.cpp msgid "" @@ -526,9 +582,8 @@ msgid "File Exists, Overwrite?" msgstr "فایل وجود دارد، آیا بازنویسی شود؟" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp -#, fuzzy msgid "All Recognized" -msgstr "تمام پسوندها تشخیص داده شد" +msgstr "همه ی موارد شناخته شده اند." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" @@ -537,7 +592,8 @@ msgstr "تمام پروندهها (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "باز کن" @@ -582,7 +638,7 @@ msgstr "مسیر:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" -msgstr "پوشهها و پروندهها" +msgstr "پوشهها و پروندهها:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/script_editor_debugger.cpp @@ -698,7 +754,6 @@ msgstr "پاک کردن" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp -#, fuzzy msgid "Undo" msgstr "خنثی کردن (Undo)" @@ -749,29 +804,28 @@ msgid "Disabled" msgstr "غیرفعال شده" #: tools/editor/animation_editor.cpp -#, fuzzy msgid "All Selection" -msgstr "همهی انتخاب شده" +msgstr "همهی انتخاب ها" #: tools/editor/animation_editor.cpp msgid "Move Add Key" -msgstr "" +msgstr "کلید Add را جابجا کن" #: tools/editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "انتقال را در انیمیشن تغییر بده" #: tools/editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "" +msgstr "انتقال را در انیمیشن تغییر بده" #: tools/editor/animation_editor.cpp msgid "Anim Change Value" -msgstr "" +msgstr "مقدار را در انیمیشن تغییر بده" #: tools/editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "فراخوانی را در انیمیشن تغییر بده" #: tools/editor/animation_editor.cpp msgid "Anim Add Track" @@ -819,21 +873,20 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "" +msgstr "کلیدها را در انیمیشن حذف کن" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "" +msgstr "انتخاب شده را به دو تا تکثیر کن" #: tools/editor/animation_editor.cpp msgid "Duplicate Transposed" -msgstr "" +msgstr "ترانهاده را به دو تا تکثیر کن" #: tools/editor/animation_editor.cpp -#, fuzzy msgid "Remove Selection" -msgstr "انتخاب شده را حذف کن" +msgstr "برداشتن انتخاب شده" #: tools/editor/animation_editor.cpp msgid "Continuous" @@ -849,72 +902,73 @@ msgstr "تریگر" #: tools/editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "" +msgstr "یک کلید در انیمیشن اضافه کن" #: tools/editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "" +msgstr "کلیدها را در انیمیشن جابجا کن" #: tools/editor/animation_editor.cpp msgid "Scale Selection" -msgstr "" +msgstr "انتخاب شده را تغییر مقیاس بده" #: tools/editor/animation_editor.cpp msgid "Scale From Cursor" -msgstr "" +msgstr "از مکاننما تغییر مقیاس بده" #: tools/editor/animation_editor.cpp msgid "Goto Next Step" -msgstr "" +msgstr "به گام بعدی برو" #: tools/editor/animation_editor.cpp msgid "Goto Prev Step" -msgstr "" +msgstr "به گام قبلی برو" #: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp msgid "Linear" -msgstr "" +msgstr "خطی" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Constant" -msgstr "" +msgstr "ثابت" #: tools/editor/animation_editor.cpp msgid "In" -msgstr "" +msgstr "داخل" #: tools/editor/animation_editor.cpp msgid "Out" -msgstr "" +msgstr "خارج" #: tools/editor/animation_editor.cpp msgid "In-Out" -msgstr "" +msgstr "داخل-خارج" #: tools/editor/animation_editor.cpp msgid "Out-In" -msgstr "" +msgstr "خارج-داخل" #: tools/editor/animation_editor.cpp msgid "Transitions" -msgstr "" +msgstr "انتقالها" #: tools/editor/animation_editor.cpp msgid "Optimize Animation" -msgstr "" +msgstr "انیمیشن را بهینهسازی کن" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "" +msgstr "انیمیشن را پاکسازی کن" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Create NEW track for %s and insert key?" -msgstr "" +msgstr "یک ترک جدید برای s% ایجاد کن و کلید را درج کن؟" #: tools/editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "" +msgstr "تعداد d% ترک جدید ایجاد، و کلیدها را درج کن؟" #: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -923,267 +977,269 @@ msgstr "" #: tools/editor/plugins/particles_editor_plugin.cpp #: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp msgid "Create" -msgstr "" +msgstr "ایجاد کن" #: tools/editor/animation_editor.cpp msgid "Anim Create & Insert" -msgstr "" +msgstr "ایجاد و درج در انیمیشن" #: tools/editor/animation_editor.cpp msgid "Anim Insert Track & Key" -msgstr "" +msgstr "درج ترک و کلید در انیمیشن" #: tools/editor/animation_editor.cpp msgid "Anim Insert Key" -msgstr "" +msgstr "کلید را در انیمیشن درج کن" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "" +msgstr "طول انیمیشن را تغییر بده" #: tools/editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "" +msgstr "حلقه انیمیشن را تغییر بده" #: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" -msgstr "" +msgstr "کلید مقدار دارای نوع را در انیمیشن ایجاد کن" #: tools/editor/animation_editor.cpp msgid "Anim Insert" -msgstr "" +msgstr "در انیمیشن درج کن" #: tools/editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "" +msgstr "کلیدها را در انیمیشن تغییر مقیاس بده" #: tools/editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "" +msgstr "ترک فراخوانی را در انیمیشن اضافه کن" #: tools/editor/animation_editor.cpp msgid "Animation zoom." -msgstr "" +msgstr "بزرگنمایی در انیمیشن." #: tools/editor/animation_editor.cpp msgid "Length (s):" -msgstr "" +msgstr "طول(ها):" #: tools/editor/animation_editor.cpp msgid "Animation length (in seconds)." -msgstr "" +msgstr "طول انیمیشن (به ثانیه)." #: tools/editor/animation_editor.cpp msgid "Step (s):" -msgstr "" +msgstr "گام(ها):" #: tools/editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." -msgstr "" +msgstr "گام چسبندهی مکاننما (به ثانیه)." #: tools/editor/animation_editor.cpp msgid "Enable/Disable looping in animation." -msgstr "" +msgstr "ایجاد حلقه را در انیمیشن فعال/غیر فعال کن." #: tools/editor/animation_editor.cpp msgid "Add new tracks." -msgstr "" +msgstr "ترکهای جدید اضافه کن." #: tools/editor/animation_editor.cpp msgid "Move current track up." -msgstr "" +msgstr "ترک جاری را به بالا جابجا کن." #: tools/editor/animation_editor.cpp msgid "Move current track down." -msgstr "" +msgstr "ترک جاری را به پایین جابجا کن." #: tools/editor/animation_editor.cpp msgid "Remove selected track." -msgstr "" +msgstr "ترک انتخاب شده را حذف کن." #: tools/editor/animation_editor.cpp msgid "Track tools" -msgstr "" +msgstr "ابزارهای ترک" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "" +msgstr "ویرایش کلیدهای انفرادی با کلیک بر روی آنها را فعال کن." #: tools/editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "" +msgstr "بهینهساز انیمیشن" #: tools/editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr "" +msgstr "خطای Max. Linear:" #: tools/editor/animation_editor.cpp msgid "Max. Angular Error:" -msgstr "" +msgstr "خطای Max. Angular:" #: tools/editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "" +msgstr "زاویهی قابل بهینهسازی بیشینه:" #: tools/editor/animation_editor.cpp msgid "Optimize" -msgstr "" +msgstr "بهینهسازی کن" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." msgstr "" +"یک AnimationPlayer از درخت صحنه انتخاب کنید تا انیمیشنها را ویرایش کنید." #: tools/editor/animation_editor.cpp msgid "Key" -msgstr "" +msgstr "کلید" #: tools/editor/animation_editor.cpp msgid "Transition" -msgstr "" +msgstr "انتقال" #: tools/editor/animation_editor.cpp msgid "Scale Ratio:" -msgstr "" +msgstr "نسبت تغییر مقیاس:" #: tools/editor/animation_editor.cpp msgid "Call Functions in Which Node?" -msgstr "" +msgstr "توابع را در کدام گره فراخوانی کند؟" #: tools/editor/animation_editor.cpp msgid "Remove invalid keys" -msgstr "" +msgstr "کلیدهای نامعتبر را حذف کن" #: tools/editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "" +msgstr "ترکهای حل نشده و خالی را حذف کن" #: tools/editor/animation_editor.cpp msgid "Clean-up all animations" -msgstr "" +msgstr "تمام انیمیشنها را پاکسازی کن" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "" +msgstr "انیمیشن(ها) را پاکسازی کن (نه UNDO !)" #: tools/editor/animation_editor.cpp msgid "Clean-Up" -msgstr "" +msgstr "پاکسازی" #: tools/editor/array_property_edit.cpp msgid "Resize Array" -msgstr "" +msgstr "آرایه را تغییر اندازه بده" #: tools/editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "" +msgstr "نوع مقدار آرایه را تغییر بده" #: tools/editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "" +msgstr "مقدار آرایه را تغییر بده" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" -msgstr "" +msgstr "جستجو:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Sort:" -msgstr "" +msgstr "مرتبسازی:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Reverse" -msgstr "" +msgstr "معکوس" #: tools/editor/asset_library_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Category:" -msgstr "" +msgstr "طبقهبندی:" #: tools/editor/asset_library_editor_plugin.cpp msgid "All" -msgstr "" +msgstr "همه" #: tools/editor/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "تارنما:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Support.." -msgstr "" +msgstr "پشتیبانی.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "دفتری" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "انجمن" #: tools/editor/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "" +msgstr "آزمودن" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "" +msgstr "فایل های ZIP منابع بازی" #: tools/editor/call_dialog.cpp msgid "Method List For '%s':" -msgstr "" +msgstr "لیست متد برای 's%' :" #: tools/editor/call_dialog.cpp msgid "Call" -msgstr "" +msgstr "فراخوانی" #: tools/editor/call_dialog.cpp msgid "Method List:" -msgstr "" +msgstr "فهرست متدها:" #: tools/editor/call_dialog.cpp msgid "Arguments:" -msgstr "" +msgstr "نشانوندها:" #: tools/editor/call_dialog.cpp msgid "Return:" -msgstr "" +msgstr "بازگشت:" #: tools/editor/code_editor.cpp msgid "Go to Line" -msgstr "" +msgstr "برو به خط" #: tools/editor/code_editor.cpp msgid "Line Number:" -msgstr "" +msgstr "شماره خط:" #: tools/editor/code_editor.cpp msgid "No Matches" -msgstr "" +msgstr "تطبیقی ندارد" #: tools/editor/code_editor.cpp msgid "Replaced %d Ocurrence(s)." -msgstr "" +msgstr "تعداد d% رخداد جایگزین شد." #: tools/editor/code_editor.cpp msgid "Replace" -msgstr "" +msgstr "جایگزینی" #: tools/editor/code_editor.cpp msgid "Replace All" -msgstr "" +msgstr "جایگزینی همه" #: tools/editor/code_editor.cpp msgid "Match Case" -msgstr "" +msgstr "بین حروف کوچک و بزرگ لاتین تمایز قائل شو" #: tools/editor/code_editor.cpp msgid "Whole Words" -msgstr "" +msgstr "عین کلمات (بدون هیچ کم و کاستی)" #: tools/editor/code_editor.cpp msgid "Selection Only" -msgstr "" +msgstr "تنها در قسمت انتخاب شده" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -1191,73 +1247,73 @@ msgstr "" #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Search" -msgstr "" +msgstr "جستجو" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp msgid "Find" -msgstr "" +msgstr "یافتن" #: tools/editor/code_editor.cpp msgid "Next" -msgstr "" +msgstr "بعدی" #: tools/editor/code_editor.cpp msgid "Replaced %d ocurrence(s)." -msgstr "" +msgstr "تعداد d% رخداد جایگزین شد." #: tools/editor/code_editor.cpp msgid "Not found!" -msgstr "" +msgstr "چیزی یافت نشد!" #: tools/editor/code_editor.cpp msgid "Replace By" -msgstr "" +msgstr "جایگزین کردن با" #: tools/editor/code_editor.cpp msgid "Case Sensitive" -msgstr "" +msgstr "حساس به حالت (حروف لاتین)" #: tools/editor/code_editor.cpp msgid "Backwards" -msgstr "" +msgstr "به سمت عقب" #: tools/editor/code_editor.cpp msgid "Prompt On Replace" -msgstr "" +msgstr "موقع جایگزینی از کاربر بپرس" #: tools/editor/code_editor.cpp msgid "Skip" -msgstr "" +msgstr "رد کردن" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom In" -msgstr "" +msgstr "بزرگنمایی بیشتر" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Out" -msgstr "" +msgstr "بزرگنمایی کمتر" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "بازنشانی بزرگنمایی" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" -msgstr "" +msgstr "خط:" #: tools/editor/code_editor.cpp msgid "Col:" -msgstr "" +msgstr "ستون:" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "" +msgstr "متد در گره مقصد باید مشخص شده باشد!" #: tools/editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "" +msgstr "اتصال به گره:" #: tools/editor/connections_dialog.cpp #: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp @@ -1265,50 +1321,51 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Add" -msgstr "" +msgstr "افزودن" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Remove" -msgstr "" +msgstr "برداشتن" #: tools/editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "" +msgstr "آرگومان اضافی فراخوانی را اضافه کن:" #: tools/editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "" +msgstr "آرگومانهای اضافی فراخوانی:" #: tools/editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "" +msgstr "مسیر به سمت گره:" #: tools/editor/connections_dialog.cpp msgid "Make Function" -msgstr "" +msgstr "تابع را بساز" #: tools/editor/connections_dialog.cpp msgid "Deferred" -msgstr "" +msgstr "معوق" #: tools/editor/connections_dialog.cpp +#, fuzzy msgid "Oneshot" -msgstr "" +msgstr "تک شات" #: tools/editor/connections_dialog.cpp msgid "Connect" -msgstr "" +msgstr "اتصال" #: tools/editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "" +msgstr "'s%' را به 's%' متصل کن" #: tools/editor/connections_dialog.cpp msgid "Connecting Signal:" -msgstr "" +msgstr "اتصال سیگنال:" #: tools/editor/connections_dialog.cpp msgid "Create Subscription" @@ -1316,78 +1373,89 @@ msgstr "" #: tools/editor/connections_dialog.cpp msgid "Connect.." -msgstr "" +msgstr "در حال اتصال..." #: tools/editor/connections_dialog.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Disconnect" -msgstr "" +msgstr "عدم اتصال" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "سیگنالها" #: tools/editor/create_dialog.cpp msgid "Create New" -msgstr "" +msgstr "جدید ایجاد کن" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" -msgstr "" +msgstr "تطبیقها:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "توضیح:" #: tools/editor/dependency_editor.cpp +#, fuzzy msgid "Search Replacement For:" -msgstr "" +msgstr "جستجو کن جایگزینی را برای:" #: tools/editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "" +msgstr "بستگیها برای:" #: tools/editor/dependency_editor.cpp msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" +"صحنهی 's%' در حال حاضر ویرایش شده است.\n" +"تغییرات مؤثر نخواهد بود مگر با بارگذاری مجدد." #: tools/editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will take effect when reloaded." msgstr "" +"منابع 's%' در حال استفاده است.\n" +"تغییرات با بارگذاری مجدد مؤثر خواهد بود." #: tools/editor/dependency_editor.cpp msgid "Dependencies" -msgstr "" +msgstr "بستگیها" #: tools/editor/dependency_editor.cpp msgid "Resource" -msgstr "" +msgstr "منبع" #: tools/editor/dependency_editor.cpp tools/editor/editor_autoload_settings.cpp #: tools/editor/project_manager.cpp tools/editor/project_settings.cpp msgid "Path" -msgstr "" +msgstr "مسیر" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" -msgstr "" +msgstr "بستگیها:" #: tools/editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "" +msgstr "(بستگی) معیوب را تعمیر کن" #: tools/editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "" +msgstr "ویرایشگر بستگی" #: tools/editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "" +msgstr "منبع جایگزینی را جستجو کن:" #: tools/editor/dependency_editor.cpp msgid "Owners Of:" -msgstr "" +msgstr "مالکانِ:" #: tools/editor/dependency_editor.cpp msgid "" @@ -1395,105 +1463,109 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" +"پروندههایی که میخواهید حذف شوند برای منابع دیگر مورد نیاز هستند تا کار " +"کنند.\n" +"آیا در هر صورت حذف شوند (بدون undo)؟" #: tools/editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" -msgstr "" +msgstr "آیا پروندههای انتخاب شده از پروژه حذف شوند؟ (بدون undo)" #: tools/editor/dependency_editor.cpp msgid "Error loading:" -msgstr "" +msgstr "خطا در بارگذاری:" #: tools/editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "" +msgstr "خطا در بارگذاری صحنه به دلیل بستگیهای مفقود:" #: tools/editor/dependency_editor.cpp msgid "Open Anyway" -msgstr "" +msgstr "در هر صورت باز کن" #: tools/editor/dependency_editor.cpp msgid "Which action should be taken?" -msgstr "" +msgstr "کدام عمل باید اجرا شود؟" #: tools/editor/dependency_editor.cpp msgid "Fix Dependencies" -msgstr "" +msgstr "بستگیها را تعمیر کن" #: tools/editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "" +msgstr "خطا در بارگذاری!" #: tools/editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "" +msgstr "به طور دائمی تعداد 'd%' آیتم را حذف کند؟ (بدون undo !)" #: tools/editor/dependency_editor.cpp +#, fuzzy msgid "Owns" -msgstr "" +msgstr "مال خود" #: tools/editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "" +msgstr "منابع بدون مالکیت صریح:" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "" +msgstr "پویندهی منبع جدا افتاده" #: tools/editor/dependency_editor.cpp msgid "Delete selected files?" -msgstr "" +msgstr "آیا پروندههای انتخاب شده حذف شود؟" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/scene_tree_dock.cpp msgid "Delete" -msgstr "" +msgstr "حذف کن" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name." -msgstr "" +msgstr "نام نامعتبر." #: tools/editor/editor_autoload_settings.cpp msgid "Valid characters:" -msgstr "" +msgstr "کاراکترهای معتبر:" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing engine class name." -msgstr "" +msgstr "نام نامعتبر. نباید با یک نام کلاس موجود در موتور برخوردی داشته باشد." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." -msgstr "" +msgstr "نام نامعتبر. نباید یا یک نام نوع توکار برخوردی داشته باشد." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." -msgstr "" +msgstr "نام نامعتبر. نباید با نام یک ثابت سراسری موجود برخوردی داشته باشد." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid Path." -msgstr "" +msgstr "مسیر نامعتبر." #: tools/editor/editor_autoload_settings.cpp msgid "File does not exist." -msgstr "" +msgstr "پرونده موجود نیست." #: tools/editor/editor_autoload_settings.cpp msgid "Not in resource path." -msgstr "" +msgstr "در مسیرِ منبع نیست." #: tools/editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "" +msgstr "بارگذاری خودکار (AutoLoad) را اضافه کن" #: tools/editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "" +msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!" #: tools/editor/editor_autoload_settings.cpp msgid "Rename Autoload" -msgstr "" +msgstr "بارگذاری خودکار را تغییر نام بده" #: tools/editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" @@ -1616,28 +1688,28 @@ msgstr "" #: tools/editor/editor_help.cpp msgid "Class List:" -msgstr "" +msgstr "فهرست کلاس:" #: tools/editor/editor_help.cpp msgid "Search Classes" -msgstr "" +msgstr "جستجوی کلاسها" #: tools/editor/editor_help.cpp tools/editor/property_editor.cpp msgid "Class:" -msgstr "" +msgstr "کلاس:" #: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp #: tools/editor/script_create_dialog.cpp msgid "Inherits:" -msgstr "" +msgstr "میراث:" #: tools/editor/editor_help.cpp msgid "Inherited by:" -msgstr "" +msgstr "به ارث رسیده به وسیله:" #: tools/editor/editor_help.cpp msgid "Brief Description:" -msgstr "" +msgstr "خلاصه توضیحات:" #: tools/editor/editor_help.cpp msgid "Public Methods:" @@ -1651,25 +1723,21 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" #: tools/editor/editor_help.cpp msgid "Search Text" -msgstr "" +msgstr "جستجوی متن" #: tools/editor/editor_import_export.cpp msgid "Added:" -msgstr "" +msgstr "افزوده شده:" #: tools/editor/editor_import_export.cpp msgid "Removed:" -msgstr "" +msgstr "برداشته شده:" #: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp msgid "Error saving atlas:" @@ -1697,11 +1765,11 @@ msgstr "" #: tools/editor/editor_log.cpp msgid " Output:" -msgstr "" +msgstr " خروجی:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" -msgstr "" +msgstr "در حال وارد کردن دوباره..." #: tools/editor/editor_node.cpp msgid "Importing:" @@ -1721,11 +1789,11 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp msgid "Save Resource As.." -msgstr "" +msgstr "ذخیره منبع از ..." #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "I see.." -msgstr "" +msgstr "من میبینم ..." #: tools/editor/editor_node.cpp msgid "Can't open file for writing:" @@ -1741,11 +1809,11 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "ذخیره سازی صحنه" #: tools/editor/editor_node.cpp msgid "Analyzing" -msgstr "" +msgstr "در حال پردازش" #: tools/editor/editor_node.cpp msgid "Creating Thumbnail" @@ -1827,7 +1895,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Open in Help" -msgstr "" +msgstr "باز کردن راهنما" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1864,7 +1932,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "باز کردن صحنه" #: tools/editor/editor_node.cpp msgid "Open Base Scene" @@ -1880,7 +1948,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Yes" -msgstr "" +msgstr "تایید" #: tools/editor/editor_node.cpp msgid "Close scene? (Unsaved changes will be lost)" @@ -1888,7 +1956,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Save Scene As.." -msgstr "" +msgstr "ذخیره صحنه در ..." #: tools/editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" @@ -1912,11 +1980,11 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "خروج" #: tools/editor/editor_node.cpp msgid "Exit the editor?" -msgstr "" +msgstr "از ویرایشگر خارج می شوید؟" #: tools/editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" @@ -1976,7 +2044,7 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" -msgstr "" +msgstr "پیشفرض" #: tools/editor/editor_node.cpp msgid "Switch Scene Tab" @@ -1993,7 +2061,7 @@ msgstr "" #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Scene" -msgstr "" +msgstr "صحنه" #: tools/editor/editor_node.cpp msgid "Go to previously opened scene." @@ -2001,7 +2069,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Fullscreen Mode" -msgstr "" +msgstr "حالت تمام صفحه" #: tools/editor/editor_node.cpp msgid "Distraction Free Mode" @@ -2009,11 +2077,11 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Next tab" -msgstr "" +msgstr "زبانه بعدی" #: tools/editor/editor_node.cpp msgid "Previous tab" -msgstr "" +msgstr "زبانه قبلی" #: tools/editor/editor_node.cpp msgid "Operations with scene files." @@ -2021,7 +2089,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "صحنه جدید" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." @@ -2114,7 +2182,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Tools" -msgstr "" +msgstr "ابزارها" #: tools/editor/editor_node.cpp msgid "Export the project to many platforms." @@ -2131,7 +2199,7 @@ msgstr "" #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Play" -msgstr "" +msgstr "پخش" #: tools/editor/editor_node.cpp msgid "Pause the scene" @@ -2156,15 +2224,15 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Play Scene" -msgstr "" +msgstr "پخش صحنه" #: tools/editor/editor_node.cpp msgid "Play custom scene" -msgstr "" +msgstr "پخش سفارشی صحنه" #: tools/editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "" +msgstr "پخش سفارشی صحنه" #: tools/editor/editor_node.cpp msgid "Debug options" @@ -2240,11 +2308,11 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" -msgstr "" +msgstr "ترجیحات" #: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "" +msgstr "ویرایشگر ترجیحات" #: tools/editor/editor_node.cpp msgid "Editor Layout" @@ -2256,7 +2324,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "معرفی" #: tools/editor/editor_node.cpp msgid "Alerts when an external resource has changed." @@ -2268,7 +2336,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Update Always" -msgstr "" +msgstr "به روز رسانی دامی" #: tools/editor/editor_node.cpp msgid "Update Changes" @@ -2292,7 +2360,7 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "" +msgstr "ذخیره در..." #: tools/editor/editor_node.cpp msgid "Go to the previous edited object in history." @@ -2316,7 +2384,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Output" -msgstr "" +msgstr "خروجی" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Import" @@ -2324,7 +2392,7 @@ msgstr "" #: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp msgid "Update" -msgstr "" +msgstr "بروز رسانی" #: tools/editor/editor_node.cpp msgid "Thanks from the Godot community!" @@ -2332,51 +2400,51 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Thanks!" -msgstr "" +msgstr "تشکرات!" #: tools/editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "" +msgstr "واردکردن قالب ها از درون یک فایل ZIP" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export Project" -msgstr "" +msgstr "صادر کردن پروژه" #: tools/editor/editor_node.cpp msgid "Export Library" -msgstr "" +msgstr "صادکردن فایل کتابخانه ای" #: tools/editor/editor_node.cpp msgid "Merge With Existing" -msgstr "" +msgstr "ترکیب کردن با نمونه ی موجود" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Password:" -msgstr "" +msgstr "گذرواژه:" #: tools/editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "" +msgstr "باز کردن و اجرای یک اسکریپت" #: tools/editor/editor_node.cpp msgid "Load Errors" -msgstr "" +msgstr "خطاهای بارگذاری" #: tools/editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "" +msgstr "افزونه های نصب شده:" #: tools/editor/editor_plugin_settings.cpp msgid "Version:" -msgstr "" +msgstr "نسخه:" #: tools/editor/editor_plugin_settings.cpp msgid "Author:" -msgstr "" +msgstr "خالق:" #: tools/editor/editor_plugin_settings.cpp msgid "Status:" -msgstr "" +msgstr "وضعیت:" #: tools/editor/editor_profiler.cpp msgid "Stop Profiling" @@ -2408,7 +2476,7 @@ msgstr "" #: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp msgid "Time:" -msgstr "" +msgstr "زمان:" #: tools/editor/editor_profiler.cpp msgid "Inclusive" @@ -2673,6 +2741,8 @@ msgstr "" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "The quick brown fox jumps over the lazy dog." msgstr "" +"کلاغ فرز و چابک، ظهر هر روز با صدای ضخیم و عذابآورش بـه جستجوی یک مثقال گنج " +"پنهان در حیاط رژه می رفت." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Test:" @@ -3584,9 +3654,8 @@ msgid "Paste Pose" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "انتخاب همه" +msgstr "انتخاب حالت" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -5539,7 +5608,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Samples" -msgstr "" +msgstr "نمونه ها" #: tools/editor/project_export.cpp msgid "Sample Conversion Mode: (.wav files):" @@ -5702,6 +5771,8 @@ msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" msgstr "" +"شما درخواست بررسی پوشه های ٪ را برای پیدا کردن پروژه های Godot را داده اید. " +"آیا انجام این عمل را تایید می کنید!؟" #: tools/editor/project_manager.cpp msgid "Project Manager" @@ -6015,6 +6086,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "دارایی Setter را اضافه کن" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "انتخاب حالت" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6220,9 +6301,8 @@ msgid "Save Branch as Scene" msgstr "" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "لطفا تأیید کنید..." +msgstr "خذف(تایید نشده)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" @@ -6535,3 +6615,10 @@ msgstr "" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" msgstr "" + +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "گره سفارشی دارای get_output_port_unsequenced(idx,wmem)_ نیست، اما پورتهای " +#~ "نامتوالی مشخص شده است." diff --git a/tools/translations/fr.po b/tools/translations/fr.po index fd80de3c83..354934fefa 100644 --- a/tools/translations/fr.po +++ b/tools/translations/fr.po @@ -8,14 +8,17 @@ # Hugo Locurcio <hugo.l@openmailbox.org>, 2016. # Marc <marc.gilleron@gmail.com>, 2016. # Onyx Steinheim <thevoxelmanonyx@gmail.com>, 2016. +# rafeu <duchainer@gmail.com>, 2016. # Rémi Verschelde <rverschelde@gmail.com>, 2016. +# Roger BR <drai_kin@hotmail.com>, 2016. +# Thomas Baijot <thomasbaijot@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-08-09 20:42+0000\n" -"Last-Translator: Hugo Locurcio <hugo.l@openmailbox.org>\n" +"PO-Revision-Date: 2016-08-29 13:56+0000\n" +"Last-Translator: Thomas Baijot <thomasbaijot@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -37,7 +40,7 @@ msgstr "Pas assez d'octets pour les octets de décodage, ou format non valide." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" -msgstr "" +msgstr "L'argument du pas est zéro!" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" @@ -91,7 +94,7 @@ msgstr "" #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Le nœud a retourné une séquence de sortie invalide " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" @@ -102,66 +105,57 @@ msgid "Stack overflow with stack depth: " msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" msgstr "Fonction :" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Variable" +msgstr "Variables:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" msgstr "Signaux :" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Le nom n'est pas un identifiant valide" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Le nom est déjà utilisé dans une autre func/var/signal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Créer une fonction" +msgstr "Renommer la fonction" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Renommer l'échantillon" +msgstr "Renommer la variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Renommer l'échantillon" +msgstr "Renommer le signal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Fonction :" +msgstr "Ajouter une fonction" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Variable" +msgstr "Ajouter une variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Signaux" +msgstr "Ajouter un signal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Supprimer la sélection" +msgstr "Supprimer la fonction" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Variable" +msgstr "Supprimer la variable" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -169,9 +163,8 @@ msgid "Editing Variable:" msgstr "Variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Supprimer la sélection" +msgstr "Supprimer le signal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -179,21 +172,48 @@ msgid "Editing Signal:" msgstr "Connecter un signal :" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "Ajouter un nœud enfant" +msgstr "Ajouter un nœud" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Preload Node" +msgstr "Ajouter un nœud enfant" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" -msgstr "Nœud à partir d'une scène" +msgstr "Ajouter un nœud à partir de l'arbre" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -206,22 +226,20 @@ msgid "Edit" msgstr "Modifier" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Type de données :" +msgstr "Type de base" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" msgstr "Membres :" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Available Nodes:" -msgstr "Nœud TimeScale" +msgstr "Nœuds disponibles:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Sélectionner ou créer une fonction pour éditer le graph" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -237,24 +255,20 @@ msgid "Close" msgstr "Fermer" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "Arguments supplémentaires :" +msgstr "Editer les arguments du signal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Variable" +msgstr "Editer la variable" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Changer le type" +msgstr "Changer" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Supprimer les fichiers sélectionnés ?" +msgstr "Supprimer la selection" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -263,8 +277,23 @@ msgstr "Placer un point d'arrêt" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Trouver le suivant" +msgid "Find Node Type" +msgstr "Trouver le type du noeud" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Copier la pose" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Créer un nœud" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Coller la pose" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -272,11 +301,11 @@ msgstr "" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "L'itérateur est devenu invalide" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "L'itérateur est devenu invalide " #: modules/visual_script/visual_script_func_nodes.cpp #, fuzzy @@ -285,12 +314,11 @@ msgstr "Nom de classe parent invalide" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "L'objet de base n'est pas un nœud !" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "Le chemin n'est pas local" +msgstr "Le chemin ne mène pas au nœud !" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." @@ -302,9 +330,8 @@ msgid ": Invalid argument of type: " msgstr "Nom de classe parent invalide" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Nom de classe parent invalide" +msgstr ": Arguments invalides " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -315,12 +342,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -575,7 +596,8 @@ msgstr "Tous les fichiers (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Ouvrir" @@ -1110,18 +1132,17 @@ msgid "Resize Array" msgstr "Redimensionner le tableau" #: tools/editor/array_property_edit.cpp -#, fuzzy msgid "Change Array Value Type" -msgstr "Changer les valeurs types d'un tableau" +msgstr "Changer les types des valeurs du tableau" #: tools/editor/array_property_edit.cpp -#, fuzzy msgid "Change Array Value" -msgstr "Changer la valeur d'un tableau" +msgstr "Changer les valeurs du tableau" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Rechercher :" @@ -1279,7 +1300,7 @@ msgstr "Dézoomer" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Réinitialiser le zoom" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1370,10 +1391,16 @@ msgid "Create New" msgstr "Créer un nouveau" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Correspondances :" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Description :" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "Rechercher un remplacement pour :" @@ -1534,9 +1561,8 @@ msgid "File does not exist." msgstr "Le fichier n'existe pas." #: tools/editor/editor_autoload_settings.cpp -#, fuzzy msgid "Not in resource path." -msgstr "Chemin de la ressource" +msgstr "Pas dans le chemin de la ressource." #: tools/editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -1707,10 +1733,6 @@ msgstr "Items de thème GUI :" msgid "Constants:" msgstr "Constantes :" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Description :" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Description de la méthode :" @@ -2019,9 +2041,8 @@ msgstr "" "(les modifications non sauvegardées seront perdues)" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pick a Main Scene" -msgstr "Scène principale" +msgstr "Choisir une scène principale" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" @@ -2082,19 +2103,16 @@ msgid "Fullscreen Mode" msgstr "Mode plein écran" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Distraction Free Mode" -msgstr "Mode distraction libre" +msgstr "Mode sans distraction" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Next tab" -msgstr "Suivant" +msgstr "Onglet suivant" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Previous tab" -msgstr "Répertoire précédent" +msgstr "Onglet precedent" #: tools/editor/editor_node.cpp msgid "Operations with scene files." @@ -2117,9 +2135,8 @@ msgid "Save Scene" msgstr "Enregistrer la scène" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Save all Scenes" -msgstr "Enregistrer la scène" +msgstr "Enregistrer toutes les scènes" #: tools/editor/editor_node.cpp msgid "Close Scene" @@ -2258,12 +2275,11 @@ msgid "Deploy with Remote Debug" msgstr "Déployer avec le débogage distant" #: tools/editor/editor_node.cpp -#, fuzzy msgid "" "When exporting or deploying, the resulting executable will attempt to " "connect to the IP of this computer in order to be debugged." msgstr "" -"Lors de l'exportation ou du déploiement, l'exécutable tentera de se " +"Lors de l'exportation ou du déploiement, l'exécutable produit tentera de se " "connecter à l'adresse IP de cet ordinateur afin de procéder au débogage." #: tools/editor/editor_node.cpp @@ -2307,12 +2323,11 @@ msgid "Visible Navigation" msgstr "Navigation visible" #: tools/editor/editor_node.cpp -#, fuzzy msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" -"la navigation des maillages et des polygones sera visible en jeu si cette " +"Les maillages et polygones de navigation seront visibles en jeu si cette " "option est activée." #: tools/editor/editor_node.cpp @@ -2321,7 +2336,6 @@ msgid "Sync Scene Changes" msgstr "Changement de synchronisation de scène" #: tools/editor/editor_node.cpp -#, fuzzy msgid "" "When this option is turned on, any changes made to the scene in the editor " "will be replicated in the running game.\n" @@ -2330,8 +2344,8 @@ msgid "" msgstr "" "Lorsque cette option est activée, toutes les modifications apportées à la " "scène dans l'éditeur seront reproduites en jeu.\n" -"Lorsque c'est utilisé à distance sur un périphérique, c'est plus efficace " -"avec le système de fichiers réseau." +"Lorsqu'elle est utilisée à distance sur un périphérique, l'efficacité est " +"meilleure avec le système de fichiers réseau." #: tools/editor/editor_node.cpp msgid "Sync Script Changes" @@ -2491,29 +2505,24 @@ msgid "Status:" msgstr "État :" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Stop Profiling" -msgstr "Arrêt du profilage" +msgstr "Arrêter le profilage" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Start Profiling" -msgstr "Démarrage du profilage" +msgstr "Démarrer le profilage" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Measure:" -msgstr "Quantité:" +msgstr "Mesure:" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Frame Time (sec)" -msgstr "Image par seconde" +msgstr "Temps image (en seconde)" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Average Time (sec)" -msgstr "Temps moyen (sec)" +msgstr "Temps moyen (seconde)" #: tools/editor/editor_profiler.cpp #, fuzzy @@ -3369,9 +3378,9 @@ msgid "ERROR: No animation to edit!" msgstr "ERREUR : Pas d'animation à modifier !" #: tools/editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Play selected animation backwards from current pos. (A)" -msgstr "Lire l'animation sélectionnée à rebours de la position actuelle. (A)" +msgstr "" +"Jouer l'animation sélectionnée à l'envers depuis la position actuelle. (A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -6214,6 +6223,16 @@ msgstr "Global" msgid "Sections:" msgstr "Sections :" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Sélectionner des points" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Mode sélection (Q)" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "Impossible d'exécuter l'outil PVRTC :" diff --git a/tools/translations/id.po b/tools/translations/id.po index 0b8c1db749..0478612745 100644 --- a/tools/translations/id.po +++ b/tools/translations/id.po @@ -2,191 +2,239 @@ # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. # -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# Abdul Aziz Muslim Alqudsy <abdul.aziz.muslim.alqudsy@gmail.com>, 2016. +# Andinawan Asa <asaandinawan@gmail.com>, 2016. +# Khairul Hidayat <khairulcyber4rt@gmail.com>, 2016. +# yursan9 <rizal.sagi@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-08-27 02:11+0000\n" +"Last-Translator: yursan9 <rizal.sagi@gmail.com>\n" +"Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" +"godot/id/>\n" "Language: id\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.8-dev\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" +"Tipe argument salah dalam menggunakan convert(), gunakan konstanta TYPE_*." #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "" +msgstr "Tidak cukup bytes untuk menerjemahkan, atau format tidak sah." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" -msgstr "" +msgstr "Langkah argumen adalah nol!" #: modules/gdscript/gd_functions.cpp +#, fuzzy msgid "Not a script with an instance" -msgstr "" +msgstr "Skrip tidak mempunyai turunannya" #: modules/gdscript/gd_functions.cpp msgid "Not based on a script" -msgstr "" +msgstr "Tidak berbasis skrip" #: modules/gdscript/gd_functions.cpp msgid "Not based on a resource file" -msgstr "" +msgstr "Tidak berbasis resource file" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "" +msgstr "Format kamus acuan tidak sah (@path hilang)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" -msgstr "" +msgstr "Format kamus acuan tidak sah (tidak dapat memuat script pada @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "" +msgstr "Format kamus acuan tidak sah (skrip tidak sah pada @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" -msgstr "" +msgstr "Kamus acuan tidak sah (sub kelas tidak sah)" #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Sebuah node dihasilkan tanpa kerja memori, silahkan baca dokumentasi tentang " +"bagaimana menggunakannya dengan benar!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"Node dihasilkan, tetapi keadaan sebuah fungsi tidak kembali saat kerja " +"memori pertama." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"Nilai pengembalian harus ditetapkan pada elemen pertama dari node kerja " +"memori! Silahkan perbaiki node anda." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Node mengembalikan sebuah keluaran urutan yang tidak sah: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" +"Telah ditemukan urutan dalam jumlah sedikit tetapi bukan node dalam jumlah " +"besar, laporkan bug!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Tumpukan melimpah dengan kedalaman tumpukan: " #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "Fungsi-fungsi:" #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" -msgstr "" +msgstr "Variabel-variabel:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" -msgstr "" +msgstr "Sinyal-sinyal:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Nama bukan sebuah pengidentifikasi yang sah:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Nama telah digunakan oleh fungsi/variabel/sinyal yang lain:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" -msgstr "" +msgstr "Namai kembali Fungsi" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "" +msgstr "Namai kembali Variabel" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "Namai kembali Sinyal" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function" -msgstr "" +msgstr "Tambahkan Fungsi" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" -msgstr "" +msgstr "Tambahkan Variabel" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "Tambahkan Sinyal" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" -msgstr "" +msgstr "Hapus Fungsi" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Variable" -msgstr "" +msgstr "Hapus Variabel" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Variable:" -msgstr "" +msgstr "Mengedit Variabel:" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Signal" -msgstr "" +msgstr "Hapus Sinyal" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "" +msgstr "Mengedit Sinyal:" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" +msgstr "Tambahkan Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Meta to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Tambahkan Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Tambahkan Node (Node-node) dari Tree" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Tambahkan Properti Getter" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Tambahkan Properti Setter" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Edit" -msgstr "" +msgstr "Edit" #: modules/visual_script/visual_script_editor.cpp msgid "Base Type:" -msgstr "" +msgstr "Tipe Dasar:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" -msgstr "" +msgstr "Member-member:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "Node-node yang Tersedia:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Pilih atau ciptakan sebuah fungsi untuk mengedit grafik" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -199,104 +247,121 @@ msgstr "" #: tools/editor/project_settings.cpp tools/editor/property_editor.cpp #: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp msgid "Close" -msgstr "" +msgstr "Tutup" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Signal Arguments:" -msgstr "" +msgstr "Edit Argumen-argumen Sinyal:" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Variable:" -msgstr "" +msgstr "Edit Variabel:" #: modules/visual_script/visual_script_editor.cpp msgid "Change" -msgstr "" +msgstr "Ubah" #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" -msgstr "" +msgstr "Hapus yang Dipilih" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" -msgstr "" +msgstr "Beralih Breakpoint" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "Cari Tipe Node" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Salin Resource" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Cut Nodes" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Path ke Node:" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Tipe masukan tidak iterable: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "Iterator menjadi tidak sah" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "Iterator menjadi tidak sah: " #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name." -msgstr "" +msgstr "Nama properti index tidak sah." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "Objek dasar bukan sebuah Node!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "" +msgstr "Path tidak menunjukkan Node!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Nama properti index '%s' tidak sah dalam node %s." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "" +msgstr ": Argumen tidak sah dari tipe: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr "" +msgstr ": Argumen-argumen tidak sah: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet tidak ditemukan dalam script: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet tidak ditemukan dalam script: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" +"Node modifikasi tidak memiliki method _step(), tidak bisa memproses grafik." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"Nilai kembali dari _step() tidak sah, seharusnya integer (seq out), atau " +"string (error)." #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite to display frames." msgstr "" +"Sebuah resource SpriteFrames seharusnya diciptakan atau diatur dalam " +"properti 'Frames' agar AnimatedSprite menampilkan frame-frame." #: scene/2d/canvas_modulate.cpp msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" +"Hanya satu visible CanvasModulate yang diizinkan per scene (atau atur pada " +"scene-scene yang diacu). Yang diciptakan pertama akan bekerja, sedangkan " +"sisanya akan diabaikan." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -304,10 +369,15 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionPolygon2D hanya berfungsi untuk menyediakan sebuah bentuk collision " +"pada sebuah CollisionObject2D node asal. Mohon hanya gunakan itu sebagai " +"sebuah child dari Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, dll. " +"untuk memberikan mereka sebuah bentuk." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." msgstr "" +"Sebuah CollisionPolygon2D yang kosong tidak memiliki efek pada collision." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -315,84 +385,113 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionShape2D hanya berfungsi untuk menyediakan sebuah bentuk collision " +"pada sebuah CollisionObject2D node asal. Mohon hanya gunakan itu sebagai " +"sebuah child dari Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, dll. " +"untuk memberikan mereka sebuah bentuk." #: scene/2d/collision_shape_2d.cpp msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" +"Sebuah bentuk harus disediakan untuk CollisionShape2D untuk fungsi. Mohon " +"ciptakan resource bentuk untuk itu!" #: scene/2d/light_2d.cpp msgid "" "A texture with the shape of the light must be supplied to the 'texture' " "property." msgstr "" +"Sebuah tekstur dengan bentuk cahaya harus disuplai ke properti 'texture'." #: scene/2d/light_occluder_2d.cpp msgid "" "An occluder polygon must be set (or drawn) for this occluder to take effect." msgstr "" +"Sebuah polygon occluder harus diatur (atau digambar) untuk occluder ini " +"berpengaruh." #: scene/2d/light_occluder_2d.cpp msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" msgstr "" +"Polygon occluder untuk occluder ini kosong. Mohon gambar dulu sebuah polygon!" #: scene/2d/navigation_polygon.cpp msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" +"Sebuah resource NavigationPolygon harus diatur atau diciptakan untuk node " +"ini bekerja. Mohon atur sebuah properti atau gambar sebuah polygon." #: scene/2d/navigation_polygon.cpp msgid "" "NavigationPolygonInstance must be a child or grandchild to a Navigation2D " "node. It only provides navigation data." msgstr "" +"NavigationPolygonInstance harus menjadi sebuah child atau grandchild ke " +"sebuah node Navigation2D. Ini hanya menyediakan data navigasi." #: scene/2d/parallax_layer.cpp msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +"Node ParallaxLayer hanya bekerja ketika diatur sebagai child dari sebuah " +"node ParallaxBackground." #: scene/2d/particles_2d.cpp msgid "Path property must point to a valid Particles2D node to work." msgstr "" +"Properti path harus menunjuk ke sebuah node Particles2D yang sah agar " +"bekerja." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." msgstr "" +"PathFollow2D hanya bekerja ketika diatur sebagai sebuah child dari sebuah " +"node Path2D." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." msgstr "" +"Properti path harus menunjuk pada sebuah node Node2D yang sah untuk bekerja." #: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SamplePlayer to play sound." msgstr "" +"Sebuah resource SampleLibrary harus diciptakan atau diatur didalam properti " +"'samples' agar SamplePlayer memainkan suara." #: scene/2d/sprite.cpp msgid "" "Path property must point to a valid Viewport node to work. Such Viewport " "must be set to 'render target' mode." msgstr "" +"Properti path harus menunjuk pada node Viewport yang sah untuk bekerja. " +"Viewport tersebut harus diatur ke mode 'render target'." #: scene/2d/sprite.cpp msgid "" "The Viewport set in the path property must be set as 'render target' in " "order for this sprite to work." msgstr "" +"Pengaturan Vieport dalam properti path harus diatur sebagai 'render target' " +"agar sprite bekerja." #: scene/2d/visibility_notifier_2d.cpp msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" +"VisibilityEnable2D bekerja dengan sangat baik ketika digunakan dengan " +"mengedit root scene secara langsung sebagai parent." #: scene/3d/baked_light_instance.cpp msgid "BakedLightInstance does not contain a BakedLight resource." -msgstr "" +msgstr "BakedLightInstance tidak berisi resource BakedLight." #: scene/3d/body_shape.cpp msgid "" @@ -400,12 +499,18 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" +"CollisionShape hanya berfungsi untuk memberikan sebuah bentuk collision ke " +"node CollisionObject asal. Mohon hanya gunakan ini sebagai child dari Area, " +"StaticBody, RigidBody, KinematicBody, dll. untuk memberi mereka sebuah " +"bentuk." #: scene/3d/body_shape.cpp msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it!" msgstr "" +"Sebuah bentuk harus disediakan untuk CollisionShape untuk fungsi. Mohon " +"ciptakan sebuah resource bentuk untuk itu!" #: scene/3d/collision_polygon.cpp msgid "" @@ -413,203 +518,220 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" +"CollisionPolygon hanya berfungsi untuk menyediakan sebuah bentuk collision " +"ke node CollisionObject asal. Mohon hanya gunakan ini sebagai child dari " +"Area, StaticBody, RigidBody, KinematicBody, dll. untuk memberi mereka bentuk." #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." msgstr "" +"Sebuah CollisionPolygon yang kosong tidak memiliki efek pada collision." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." msgstr "" +"Sebuah resource NavigationMesh harus diatur atau diciptakan untuk node ini " +"bekerja." #: scene/3d/navigation_mesh.cpp msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" +"NavigationMeshInstance harus menjadi child atau grandchild untuk sebuah node " +"Navigation. Ini hanya menyediakan data navigasi." #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." msgstr "" +"Hanya satu WorldEnvironment yang diizinkan per scene (atau atur scene-scene " +"yang diacu)." #: scene/3d/spatial_sample_player.cpp msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SpatialSamplePlayer to play sound." msgstr "" +"Sebuah resource SampleLibrary harus dibuat atau diatur didalam properti " +"'samples' agar SpatialSamplePlayer memainkan suara." #: scene/3d/sprite_3d.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" +"Sebuah resource SpriteFrames harus diciptakan atau diatur didalam properti " +"'Frames' agar AnimatedSprite3D menampilkan frame-frame." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" -msgstr "" +msgstr "Batal" #: scene/gui/dialogs.cpp tools/editor/scene_tree_dock.cpp msgid "OK" -msgstr "" +msgstr "Oke" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "" +msgstr "Peringatan!" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "" +msgstr "Mohon konfirmasi..." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "File Exists, Overwrite?" -msgstr "" +msgstr "File telah ada, Overwrite?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "" +msgstr "Semua diakui" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" -msgstr "" +msgstr "Semua File-file (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" -msgstr "" +msgstr "Buka" #: scene/gui/file_dialog.cpp msgid "Open a File" -msgstr "" +msgstr "Buka sebuah File" #: scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "" +msgstr "Buka File (File-file)" #: scene/gui/file_dialog.cpp msgid "Open a Directory" -msgstr "" +msgstr "Buka sebuah Direktori" #: scene/gui/file_dialog.cpp msgid "Open a File or Directory" -msgstr "" +msgstr "Buka sebuah File atau Direktori" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save" -msgstr "" +msgstr "Simpan" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Save a File" -msgstr "" +msgstr "Simpan sebuah File" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp msgid "Create Folder" -msgstr "" +msgstr "Buat Folder" #: scene/gui/file_dialog.cpp tools/editor/editor_autoload_settings.cpp #: tools/editor/editor_file_dialog.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp #: tools/editor/script_create_dialog.cpp msgid "Path:" -msgstr "" +msgstr "Path:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" -msgstr "" +msgstr "Direktori-direktori & File-file:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/script_editor_debugger.cpp msgid "File:" -msgstr "" +msgstr "File:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Filter:" -msgstr "" +msgstr "Filter:" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Name:" -msgstr "" +msgstr "Nama:" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp msgid "Could not create folder." -msgstr "" +msgstr "Tidak dapat membuat folder." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Must use a valid extension." -msgstr "" +msgstr "Harus menggunakan ekstensi yang sah." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Shift+" -msgstr "" +msgstr "Shift+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Alt+" -msgstr "" +msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Meta+" -msgstr "" +msgstr "Meta+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Device" -msgstr "" +msgstr "Perangkat" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Button" -msgstr "" +msgstr "Tombol" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Left Button." -msgstr "" +msgstr "Tombol Kiri." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Right Button." -msgstr "" +msgstr "Tombol Kanan." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Middle Button." -msgstr "" +msgstr "Tombol Tengah." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#, fuzzy msgid "Wheel Up." -msgstr "" +msgstr "Scroll keatas." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#, fuzzy msgid "Wheel Down." -msgstr "" +msgstr "Scroll kebawah." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Axis" -msgstr "" +msgstr "Axis" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Cut" -msgstr "" +msgstr "Potong" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp msgid "Copy" -msgstr "" +msgstr "Kopy" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -618,27 +740,27 @@ msgstr "" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp #: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp msgid "Paste" -msgstr "" +msgstr "Tempel" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_export.cpp msgid "Select All" -msgstr "" +msgstr "Pilih Semua" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/rich_text_editor_plugin.cpp #: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Clear" -msgstr "" +msgstr "Bersihkan" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Undo" -msgstr "" +msgstr "Batal" #: scene/gui/popup.cpp msgid "" @@ -646,90 +768,109 @@ msgid "" "functions. Making them visible for editing is fine though, but they will " "hide upon running." msgstr "" +"Popup-popup akan sembunyi secara default kecuali panggil popup() atau apapun " +"dari fungsi-fungsi popup*(). Meskipun membuat mereka terlihat untuk mengedit " +"itu baik, tetapi mereka akan sembunyi saat berjalan." #: scene/main/viewport.cpp +#, fuzzy msgid "" "This viewport is not set as render target. If you intend for it to display " "its contents directly to the screen, make it a child of a Control so it can " "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" +"Viewport ini tidak diatur sebagai target render. Jika anda berniat untuk " +"menampilkan konten-kontennya secara langsung ke layar, buatlah sebuah child " +"dari kontrol jadi hal tersebut bisa memperoleh ukuran. Jika tidak, buatlah " +"sebuah RenderTarget dan tetapkannya tekstur internal untuk beberapa node " +"untuk ditampilkan." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error initializing FreeType." -msgstr "" +msgstr "Error menginisialisasi FreeType." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Unknown font format." -msgstr "" +msgstr "Format font tidak diketahui." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error loading font." -msgstr "" +msgstr "Error memuat font." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Invalid font size." -msgstr "" +msgstr "Ukuran font tidak sah." #: tools/editor/animation_editor.cpp msgid "Disabled" -msgstr "" +msgstr "Dinonaktifkan" #: tools/editor/animation_editor.cpp msgid "All Selection" -msgstr "" +msgstr "Semua pilihan" #: tools/editor/animation_editor.cpp msgid "Move Add Key" -msgstr "" +msgstr "Pindahkan Kunci Tambah" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Change Transition" -msgstr "" +msgstr "Ubah Transisi Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Change Transform" -msgstr "" +msgstr "Ubah Transformasi Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Change Value" -msgstr "" +msgstr "Ubah Nilai Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Change Call" -msgstr "" +msgstr "Ubah Panggilan Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Add Track" -msgstr "" +msgstr "Tambah Track Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Duplicate Keys" -msgstr "" +msgstr "Duplikat Tombol Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Move Anim Track Up" -msgstr "" +msgstr "Pindahkan Track Anim ke Atas" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Move Anim Track Down" -msgstr "" +msgstr "Pindahkan Track Anim ke Bawah" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Remove Anim Track" -msgstr "" +msgstr "Hapus Track Anim" #: tools/editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "" +msgstr "Atur transisi ke:" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Track Rename" -msgstr "" +msgstr "Namai Kembali Track Anim" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Interpolation" @@ -737,113 +878,117 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "" +msgstr "Ganti Mode Nilai Track Anim" #: tools/editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "" +msgstr "Edit Kurva Node" #: tools/editor/animation_editor.cpp msgid "Edit Selection Curve" -msgstr "" +msgstr "Edit Kurva Pilihan" #: tools/editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "" +msgstr "Hapus Kunci Anim" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "" +msgstr "Duplikat Pilihan" #: tools/editor/animation_editor.cpp msgid "Duplicate Transposed" -msgstr "" +msgstr "Duplikat Dialihkan" #: tools/editor/animation_editor.cpp msgid "Remove Selection" -msgstr "" +msgstr "Hapus Pilihan" #: tools/editor/animation_editor.cpp msgid "Continuous" -msgstr "" +msgstr "Lanjut" #: tools/editor/animation_editor.cpp msgid "Discrete" -msgstr "" +msgstr "Berlainan" #: tools/editor/animation_editor.cpp msgid "Trigger" -msgstr "" +msgstr "Pemicu" #: tools/editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "" +msgstr "Tambah Kunci Anim" #: tools/editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "" +msgstr "Pindahkan Kunci Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Scale Selection" -msgstr "" +msgstr "Beri Skala Seleksi" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Scale From Cursor" -msgstr "" +msgstr "Beri Skala dari Kursor" #: tools/editor/animation_editor.cpp msgid "Goto Next Step" -msgstr "" +msgstr "Lanjut ke Langkah Berikutnya" #: tools/editor/animation_editor.cpp msgid "Goto Prev Step" -msgstr "" +msgstr "Lanjut ke Langkah Sebelumnya" #: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp msgid "Linear" -msgstr "" +msgstr "Linier" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Constant" -msgstr "" +msgstr "Konstan" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "In" -msgstr "" +msgstr "Kedalam" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Out" -msgstr "" +msgstr "Keluar" #: tools/editor/animation_editor.cpp msgid "In-Out" -msgstr "" +msgstr "Masuk-Keluar" #: tools/editor/animation_editor.cpp msgid "Out-In" -msgstr "" +msgstr "Keluar-Masuk" #: tools/editor/animation_editor.cpp msgid "Transitions" -msgstr "" +msgstr "Transisi" #: tools/editor/animation_editor.cpp msgid "Optimize Animation" -msgstr "" +msgstr "Optimalkan Animasi" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "" +msgstr "Bersihkan Animasi" #: tools/editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "" +msgstr "Buat track BARU untuk %s dan masukkan tombol?" #: tools/editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "" +msgstr "Buat track BARU %d dan masukkan tombol-tombol?" #: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -852,267 +997,275 @@ msgstr "" #: tools/editor/plugins/particles_editor_plugin.cpp #: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp msgid "Create" -msgstr "" +msgstr "Buat" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Create & Insert" -msgstr "" +msgstr "Anim Buat & Masukan" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Insert Track & Key" -msgstr "" +msgstr "Masukkan Track & Tombol Anim" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Insert Key" -msgstr "" +msgstr "Anim Masukkan Tombol" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "" +msgstr "Ubah Panjang Animasi" #: tools/editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "" +msgstr "Ubah Perulangan Animasi" #: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" -msgstr "" +msgstr "Buat Nilai Kunci Animasi Tertulis" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim Insert" -msgstr "" +msgstr "Anim Masukkan" #: tools/editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "" +msgstr "Skala Kunci Anim" #: tools/editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "" +msgstr "Tambah Pemanggilan Track Anim" #: tools/editor/animation_editor.cpp msgid "Animation zoom." -msgstr "" +msgstr "Zoom animasi." #: tools/editor/animation_editor.cpp msgid "Length (s):" -msgstr "" +msgstr "Panjang:" #: tools/editor/animation_editor.cpp msgid "Animation length (in seconds)." -msgstr "" +msgstr "Panjang animasi (dalam detik)." #: tools/editor/animation_editor.cpp msgid "Step (s):" -msgstr "" +msgstr "Langkah:" #: tools/editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." -msgstr "" +msgstr "Langkah kursor sekejap (dalam detik)." #: tools/editor/animation_editor.cpp msgid "Enable/Disable looping in animation." -msgstr "" +msgstr "Aktifkan/Nonaktifkan pengulangan dalam animasi." #: tools/editor/animation_editor.cpp msgid "Add new tracks." -msgstr "" +msgstr "Tambah tracks baru." #: tools/editor/animation_editor.cpp msgid "Move current track up." -msgstr "" +msgstr "Pindahkan track sekarang ke atas." #: tools/editor/animation_editor.cpp msgid "Move current track down." -msgstr "" +msgstr "Pindahkan track sekarang ke bawah." #: tools/editor/animation_editor.cpp msgid "Remove selected track." -msgstr "" +msgstr "Hapus track yang dipilih." #: tools/editor/animation_editor.cpp msgid "Track tools" -msgstr "" +msgstr "Alat track" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "" +msgstr "Aktifkan penyuntingan tombol-tombol individual dengan mengkliknya." #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Anim. Optimizer" -msgstr "" +msgstr "Anim. Optimisasi" #: tools/editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr "" +msgstr "Maks. Linier Error:" #: tools/editor/animation_editor.cpp msgid "Max. Angular Error:" -msgstr "" +msgstr "Maks. Angular Error:" #: tools/editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "" +msgstr "Maksimal Angle yang dapat Dioptimalkan:" #: tools/editor/animation_editor.cpp msgid "Optimize" -msgstr "" +msgstr "Optimasi" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." -msgstr "" +msgstr "Pilih sebuah AnimationPlayer dari Scene Tree untuk menyunting animasi." #: tools/editor/animation_editor.cpp msgid "Key" -msgstr "" +msgstr "Tombol" #: tools/editor/animation_editor.cpp msgid "Transition" -msgstr "" +msgstr "Transisi" #: tools/editor/animation_editor.cpp msgid "Scale Ratio:" -msgstr "" +msgstr "Skala Rasio:" #: tools/editor/animation_editor.cpp msgid "Call Functions in Which Node?" -msgstr "" +msgstr "Memanggil Fungsi-Fungsi dalam Node yang Mana?" #: tools/editor/animation_editor.cpp msgid "Remove invalid keys" -msgstr "" +msgstr "Hapus Tombol-tombol yang tidak sah" #: tools/editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "" +msgstr "Hapus tracks yang kosong dan belum diselesaikan" #: tools/editor/animation_editor.cpp msgid "Clean-up all animations" -msgstr "" +msgstr "Bersihkan semua animasi" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "" +msgstr "Bersihkan Animasi (Tidak Dapat Dikembalikan!)" #: tools/editor/animation_editor.cpp msgid "Clean-Up" -msgstr "" +msgstr "Bersihkan" #: tools/editor/array_property_edit.cpp msgid "Resize Array" -msgstr "" +msgstr "Ubah ukuran Array" #: tools/editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "" +msgstr "Ubah Tipe Nilai Array" #: tools/editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "" +msgstr "Ubah Nilai Array" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" -msgstr "" +msgstr "Cari:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Sort:" -msgstr "" +msgstr "Sortir:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Reverse" -msgstr "" +msgstr "Terbalik" #: tools/editor/asset_library_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Category:" -msgstr "" +msgstr "Kategori:" #: tools/editor/asset_library_editor_plugin.cpp msgid "All" -msgstr "" +msgstr "Semua" #: tools/editor/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "Situs:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Support.." -msgstr "" +msgstr "Dukungan.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Resmi" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Komunitas" #: tools/editor/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "" +msgstr "Menguji" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "" +msgstr "Aset-aset File ZIP" #: tools/editor/call_dialog.cpp msgid "Method List For '%s':" -msgstr "" +msgstr "Daftar Fungsi Untuk '%s':" #: tools/editor/call_dialog.cpp msgid "Call" -msgstr "" +msgstr "Panggil" #: tools/editor/call_dialog.cpp msgid "Method List:" -msgstr "" +msgstr "Daftar Fungsi:" #: tools/editor/call_dialog.cpp msgid "Arguments:" -msgstr "" +msgstr "Argumen:" #: tools/editor/call_dialog.cpp +#, fuzzy msgid "Return:" -msgstr "" +msgstr "Kembali:" #: tools/editor/code_editor.cpp msgid "Go to Line" -msgstr "" +msgstr "Pergi ke Barisan" #: tools/editor/code_editor.cpp msgid "Line Number:" -msgstr "" +msgstr "Nomor Barisan:" #: tools/editor/code_editor.cpp msgid "No Matches" -msgstr "" +msgstr "Tidak ada yang cocok" #: tools/editor/code_editor.cpp +#, fuzzy msgid "Replaced %d Ocurrence(s)." -msgstr "" +msgstr "Diganti Kejadian (Kejadian-kejadian) %d." #: tools/editor/code_editor.cpp msgid "Replace" -msgstr "" +msgstr "Tukar" #: tools/editor/code_editor.cpp msgid "Replace All" -msgstr "" +msgstr "Tukar Semua" #: tools/editor/code_editor.cpp msgid "Match Case" -msgstr "" +msgstr "Kasus Kecocokan" #: tools/editor/code_editor.cpp msgid "Whole Words" -msgstr "" +msgstr "Semua Kata" #: tools/editor/code_editor.cpp msgid "Selection Only" -msgstr "" +msgstr "Hanya yang Dipilih" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -1120,73 +1273,76 @@ msgstr "" #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Search" -msgstr "" +msgstr "Cari" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp msgid "Find" -msgstr "" +msgstr "Cari" #: tools/editor/code_editor.cpp msgid "Next" -msgstr "" +msgstr "Berikutnya" #: tools/editor/code_editor.cpp +#, fuzzy msgid "Replaced %d ocurrence(s)." -msgstr "" +msgstr "Diganti kejadian (kejadian-kejadian) %d." #: tools/editor/code_editor.cpp msgid "Not found!" -msgstr "" +msgstr "Tidak ditemukan!" #: tools/editor/code_editor.cpp msgid "Replace By" -msgstr "" +msgstr "Ganti dengan" #: tools/editor/code_editor.cpp +#, fuzzy msgid "Case Sensitive" -msgstr "" +msgstr "Case Sensitive" #: tools/editor/code_editor.cpp msgid "Backwards" -msgstr "" +msgstr "Ke belakang" #: tools/editor/code_editor.cpp +#, fuzzy msgid "Prompt On Replace" -msgstr "" +msgstr "Cepat Pada Penggantian" #: tools/editor/code_editor.cpp msgid "Skip" -msgstr "" +msgstr "Lalui" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom In" -msgstr "" +msgstr "Perbesar Pandangan" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Out" -msgstr "" +msgstr "Perkecil Pandangan" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Kebalikan Semula Pandangan" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" -msgstr "" +msgstr "Baris:" #: tools/editor/code_editor.cpp msgid "Col:" -msgstr "" +msgstr "Kolom:" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "" +msgstr "Method dalam Node target harus spesifik!" #: tools/editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "" +msgstr "Sambungkan Ke Node:" #: tools/editor/connections_dialog.cpp #: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp @@ -1194,573 +1350,598 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_settings.cpp msgid "Add" -msgstr "" +msgstr "Tambah" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Remove" -msgstr "" +msgstr "Hapus" #: tools/editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "" +msgstr "Tambah Argumen Panggilan Ekstra:" #: tools/editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "" +msgstr "Argumen-argumen Panggilan Ekstra:" #: tools/editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "" +msgstr "Path ke Node:" #: tools/editor/connections_dialog.cpp msgid "Make Function" -msgstr "" +msgstr "Buat Fungsi" #: tools/editor/connections_dialog.cpp msgid "Deferred" -msgstr "" +msgstr "Ditunda" #: tools/editor/connections_dialog.cpp msgid "Oneshot" -msgstr "" +msgstr "Satu Waktu" #: tools/editor/connections_dialog.cpp msgid "Connect" -msgstr "" +msgstr "Menghubungkan" #: tools/editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "" +msgstr "Sambungkan '%s' ke '%s'" #: tools/editor/connections_dialog.cpp msgid "Connecting Signal:" -msgstr "" +msgstr "Menyambungkan Sinyal:" #: tools/editor/connections_dialog.cpp msgid "Create Subscription" -msgstr "" +msgstr "Buat Subskribsi" #: tools/editor/connections_dialog.cpp msgid "Connect.." -msgstr "" +msgstr "Menyambungkan.." #: tools/editor/connections_dialog.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Disconnect" -msgstr "" +msgstr "Tidak tersambung" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "Sinyal-sinyal" #: tools/editor/create_dialog.cpp msgid "Create New" -msgstr "" +msgstr "Buat Baru" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +#, fuzzy msgid "Matches:" -msgstr "" +msgstr "Kecocokan:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Deskripsi:" #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" -msgstr "" +msgstr "Cari Ganti Untuk:" #: tools/editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "" +msgstr "Ketergantungan Untuk:" #: tools/editor/dependency_editor.cpp msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" +"Scene '%s' sedang disunting saat ini.\n" +"Perubahan-perubahan tidak akan berefek kecuali dimuat ulang." #: tools/editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will take effect when reloaded." msgstr "" +"Resource '%s' sedang digunakan.\n" +"Perubahan-perubahan akan terjadi ketika dimuat ulang." #: tools/editor/dependency_editor.cpp msgid "Dependencies" -msgstr "" +msgstr "Ketergantungan" #: tools/editor/dependency_editor.cpp msgid "Resource" -msgstr "" +msgstr "Resource" #: tools/editor/dependency_editor.cpp tools/editor/editor_autoload_settings.cpp #: tools/editor/project_manager.cpp tools/editor/project_settings.cpp msgid "Path" -msgstr "" +msgstr "Path" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" -msgstr "" +msgstr "Ketergantungan:" #: tools/editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "" +msgstr "Perbaiki yang Rusak" #: tools/editor/dependency_editor.cpp +#, fuzzy msgid "Dependency Editor" -msgstr "" +msgstr "Editor Ketergantungan" #: tools/editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "" +msgstr "Cari Resource Pengganti:" #: tools/editor/dependency_editor.cpp msgid "Owners Of:" -msgstr "" +msgstr "Pemilik Dari:" #: tools/editor/dependency_editor.cpp +#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" "Remove them anyway? (no undo)" msgstr "" +"File-file yang telah dihapus diperlukan oleh resource-resource lainnya agar " +"mereka bekerja.\n" +"Hapus saja mereka? (tanpa membatalkan/undo)" #: tools/editor/dependency_editor.cpp +#, fuzzy msgid "Remove selected files from the project? (no undo)" -msgstr "" +msgstr "Hapus file-file yang dipilih dari proyek? (tanpa membatalkan/undo)" #: tools/editor/dependency_editor.cpp msgid "Error loading:" -msgstr "" +msgstr "Error memuat:" #: tools/editor/dependency_editor.cpp +#, fuzzy msgid "Scene failed to load due to missing dependencies:" -msgstr "" +msgstr "Scene gagal memuat disebabkan oleh ketergantungan yang hilang:" #: tools/editor/dependency_editor.cpp msgid "Open Anyway" -msgstr "" +msgstr "Buka Saja" #: tools/editor/dependency_editor.cpp msgid "Which action should be taken?" -msgstr "" +msgstr "Tindakan mana yang seharusnya diambil?" #: tools/editor/dependency_editor.cpp +#, fuzzy msgid "Fix Dependencies" -msgstr "" +msgstr "Perbaiki Ketergantungan" #: tools/editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "" +msgstr "Gagal memuat!" #: tools/editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "" +msgstr "Hapus secara permanen %d item? (Tidak dapat dikembalikan!)" #: tools/editor/dependency_editor.cpp msgid "Owns" -msgstr "" +msgstr "Memiliki" #: tools/editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "" +msgstr "Resource-resource tanpa kepemilikan yang jelas:" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#, fuzzy msgid "Orphan Resource Explorer" -msgstr "" +msgstr "Penjelajah Resource Orphan" #: tools/editor/dependency_editor.cpp msgid "Delete selected files?" -msgstr "" +msgstr "Hapus file yang dipilih?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/scene_tree_dock.cpp msgid "Delete" -msgstr "" +msgstr "Hapus" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name." -msgstr "" +msgstr "Nama tidak sah." #: tools/editor/editor_autoload_settings.cpp msgid "Valid characters:" -msgstr "" +msgstr "Karakter sah:" #: tools/editor/editor_autoload_settings.cpp +#, fuzzy msgid "Invalid name. Must not collide with an existing engine class name." -msgstr "" +msgstr "Nama tidak sah. Harus tidak serupa dengan class name engine yang ada." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." -msgstr "" +msgstr "Nama tidak sah. Tidak boleh serupa dengan nama bawaan." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." msgstr "" +"Nama tidak sah. Tidak boleh serupa dengan nama konstanta global yang ada." #: tools/editor/editor_autoload_settings.cpp msgid "Invalid Path." -msgstr "" +msgstr "Path Tidak Sah." #: tools/editor/editor_autoload_settings.cpp msgid "File does not exist." -msgstr "" +msgstr "File tidak ada." #: tools/editor/editor_autoload_settings.cpp msgid "Not in resource path." -msgstr "" +msgstr "Tidak didalam path resource." #: tools/editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "" +msgstr "Tambahkan AutoLoad" #: tools/editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "" +msgstr "Autoload '%s' telah ada!" #: tools/editor/editor_autoload_settings.cpp msgid "Rename Autoload" -msgstr "" +msgstr "Namai kembali Autoload" #: tools/editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" -msgstr "" +msgstr "Beralih AutoLoad Globals" #: tools/editor/editor_autoload_settings.cpp msgid "Move Autoload" -msgstr "" +msgstr "Pindahkan Autoload" #: tools/editor/editor_autoload_settings.cpp msgid "Remove Autoload" -msgstr "" +msgstr "Hapus Autoload" #: tools/editor/editor_autoload_settings.cpp +#, fuzzy msgid "Enable" -msgstr "" +msgstr "Aktifkan" #: tools/editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" -msgstr "" +msgstr "Mengatur kembali Autoload-autoload" #: tools/editor/editor_autoload_settings.cpp msgid "Node Name:" -msgstr "" +msgstr "Nama Node:" #: tools/editor/editor_autoload_settings.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Name" -msgstr "" +msgstr "Nama" #: tools/editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "" +msgstr "Singleton" #: tools/editor/editor_autoload_settings.cpp msgid "List:" -msgstr "" +msgstr "Daftar:" #: tools/editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "Memperbaharui Scene" #: tools/editor/editor_data.cpp msgid "Storing local changes.." -msgstr "" +msgstr "Menyimpan perubahan-perubahan lokal.." #: tools/editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "Memperbaharui scene.." #: tools/editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "" +msgstr "Pilih sebuah Direktori" #: tools/editor/editor_dir_dialog.cpp msgid "Choose" -msgstr "" +msgstr "Pilih" #: tools/editor/editor_file_dialog.cpp +#, fuzzy msgid "Go Back" -msgstr "" +msgstr "Mundur" #: tools/editor/editor_file_dialog.cpp +#, fuzzy msgid "Go Forward" -msgstr "" +msgstr "Maju" #: tools/editor/editor_file_dialog.cpp +#, fuzzy msgid "Go Up" -msgstr "" +msgstr "Naik" #: tools/editor/editor_file_dialog.cpp msgid "Refresh" -msgstr "" +msgstr "Segarkan" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "" +msgstr "Beralih File Tersembunyi" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "" +msgstr "Beralih Favorit" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "" +msgstr "Beralih Mode" #: tools/editor/editor_file_dialog.cpp msgid "Focus Path" -msgstr "" +msgstr "Garis Fokus" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "" +msgstr "Pindahkan Favorit Keatas" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "" +msgstr "Pindahkan Favorit Kebawah" #: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp msgid "Favorites:" -msgstr "" +msgstr "Favorit:" #: tools/editor/editor_file_dialog.cpp msgid "Recent:" -msgstr "" +msgstr "Saat ini:" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "" +msgstr "Pratinjau:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" -msgstr "" +msgstr "Sumber Pemindaian" #: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Search Help" -msgstr "" +msgstr "Mencari Bantuan" #: tools/editor/editor_help.cpp msgid "Class List:" -msgstr "" +msgstr "Daftar Class:" #: tools/editor/editor_help.cpp msgid "Search Classes" -msgstr "" +msgstr "Cari Kelas" #: tools/editor/editor_help.cpp tools/editor/property_editor.cpp msgid "Class:" -msgstr "" +msgstr "Kelas:" #: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp #: tools/editor/script_create_dialog.cpp msgid "Inherits:" -msgstr "" +msgstr "Turunan:" #: tools/editor/editor_help.cpp msgid "Inherited by:" -msgstr "" +msgstr "Diturunkan oleh:" #: tools/editor/editor_help.cpp msgid "Brief Description:" -msgstr "" +msgstr "Deskripsi Singkat:" #: tools/editor/editor_help.cpp msgid "Public Methods:" -msgstr "" +msgstr "Metode Publik:" #: tools/editor/editor_help.cpp msgid "GUI Theme Items:" -msgstr "" +msgstr "Item-item Tema GUI:" #: tools/editor/editor_help.cpp msgid "Constants:" -msgstr "" - -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" +msgstr "Konstanta:" #: tools/editor/editor_help.cpp msgid "Method Description:" -msgstr "" +msgstr "Deskripsi Metode:" #: tools/editor/editor_help.cpp msgid "Search Text" -msgstr "" +msgstr "Mencari Teks" #: tools/editor/editor_import_export.cpp msgid "Added:" -msgstr "" +msgstr "Ditambahkan:" #: tools/editor/editor_import_export.cpp msgid "Removed:" -msgstr "" +msgstr "Dihapus:" #: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp msgid "Error saving atlas:" -msgstr "" +msgstr "Gagal menyimpan atlas:" #: tools/editor/editor_import_export.cpp msgid "Could not save atlas subtexture:" -msgstr "" +msgstr "Tidak dapat menyimpan sub tekstur atlas:" #: tools/editor/editor_import_export.cpp msgid "Storing File:" -msgstr "" +msgstr "Menyimpan File:" #: tools/editor/editor_import_export.cpp msgid "Packing" -msgstr "" +msgstr "Mengemas" #: tools/editor/editor_import_export.cpp msgid "Exporting for %s" -msgstr "" +msgstr "Mengekspor untuk %s" #: tools/editor/editor_import_export.cpp msgid "Setting Up.." -msgstr "" +msgstr "Mengatur.." #: tools/editor/editor_log.cpp msgid " Output:" -msgstr "" +msgstr " Keluaran:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" -msgstr "" +msgstr "Mengimpor ulang" #: tools/editor/editor_node.cpp msgid "Importing:" -msgstr "" +msgstr "Mengimpor:" #: tools/editor/editor_node.cpp msgid "Node From Scene" -msgstr "" +msgstr "Node Dari Scene" #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp msgid "Error saving resource!" -msgstr "" +msgstr "Error menyimpan resource!" #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp msgid "Save Resource As.." -msgstr "" +msgstr "Simpan Resource Sebagai.." #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +#, fuzzy msgid "I see.." -msgstr "" +msgstr "Aku tahu.." #: tools/editor/editor_node.cpp msgid "Can't open file for writing:" -msgstr "" +msgstr "Tidak dapat membuka file untuk menulis:" #: tools/editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "" +msgstr "Format file yang diminta tidak diketahui:" #: tools/editor/editor_node.cpp msgid "Error while saving." -msgstr "" +msgstr "Error saat menyimpan." #: tools/editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "Menyimpan Scene" #: tools/editor/editor_node.cpp msgid "Analyzing" -msgstr "" +msgstr "Menganalisis" #: tools/editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "" +msgstr "Membuat Thumbnail" #: tools/editor/editor_node.cpp msgid "" "Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." msgstr "" +"Tidak dapat menyimpan scene. Dependensi (instance) mungkin tidak terpenuhi." #: tools/editor/editor_node.cpp msgid "Failed to load resource." -msgstr "" +msgstr "Gagal memuat resource." #: tools/editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "" +msgstr "Tidak dapat memuat MeshLibrary untuk menggabungkan!" #: tools/editor/editor_node.cpp +#, fuzzy msgid "Error saving MeshLibrary!" -msgstr "" +msgstr "Error menyimpan MeshLibrary!" #: tools/editor/editor_node.cpp msgid "Can't load TileSet for merging!" -msgstr "" +msgstr "Tidak dapat memuat TileSet untuk menggabungkan!" #: tools/editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "" +msgstr "Error menyimpan TileSet!" #: tools/editor/editor_node.cpp msgid "Can't open export templates zip." -msgstr "" +msgstr "Tidak dapat membuka ekspor template-template zip." #: tools/editor/editor_node.cpp msgid "Loading Export Templates" -msgstr "" +msgstr "Memuat Ekspor Template-template." #: tools/editor/editor_node.cpp msgid "Error trying to save layout!" -msgstr "" +msgstr "Error mencoba untuk menyimpan layout!" #: tools/editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "" +msgstr "Layout editor default ditimpa." #: tools/editor/editor_node.cpp msgid "Layout name not found!" -msgstr "" +msgstr "Nama layout tidak ditemukan!" #: tools/editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "" +msgstr "Mengembalikan semula layout default ke pengaturan-pengaturan awal." #: tools/editor/editor_node.cpp msgid "Copy Params" -msgstr "" +msgstr "Salin Parameter" #: tools/editor/editor_node.cpp msgid "Paste Params" -msgstr "" +msgstr "Tempel Parameter" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "" +msgstr "Tempel Resource" #: tools/editor/editor_node.cpp msgid "Copy Resource" -msgstr "" +msgstr "Salin Resource" #: tools/editor/editor_node.cpp msgid "Make Built-In" -msgstr "" +msgstr "Buat Menjadi Bawaan" #: tools/editor/editor_node.cpp msgid "Make Sub-Resources Unique" -msgstr "" +msgstr "Membuat sub-Resource Unik" #: tools/editor/editor_node.cpp msgid "Open in Help" -msgstr "" +msgstr "Buka di Bantuan" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "" +msgstr "Tidak ada definisi scene untuk dijalankan." #: tools/editor/editor_node.cpp msgid "" @@ -1768,6 +1949,9 @@ msgid "" "You can change it later in later in \"Project Settings\" under the " "'application' category." msgstr "" +"Tidak ada scene utama yang pernah didefinisikan, pilih satu?\n" +"Anda dapat mengubahnya nanti di akhir dalam \"Project Settings\" dibawah " +"kategori 'application'." #: tools/editor/editor_node.cpp msgid "" @@ -1775,6 +1959,9 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" +"Scene '%s' tidak tersedia, pilih yang sah?\n" +"Anda dapat menggantinya kemudian di \"Pengaturan Proyek\" di bawah kategori " +"'aplikasi'." #: tools/editor/editor_node.cpp msgid "" @@ -1782,187 +1969,197 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" +"Scene '%s' bukanlah sebuah file scene, pilih yang sah?\n" +"Anda dapat menggantinya kemudian di \"Pengaturan Proyek\" di bawah kategori " +"'aplikasi'." #: tools/editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." msgstr "" +"Scene saat ini belum pernah disimpan, mohon simpat dahulu untuk " +"menjalankannya." #: tools/editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "" +msgstr "Tidak dapat memulai subprocess!" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "Buka Scene" #: tools/editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "Buka Scene Dasar" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "" +msgstr "Buka Cepat Scene.." #: tools/editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "" +msgstr "Buka Cepat Script.." #: tools/editor/editor_node.cpp msgid "Yes" -msgstr "" +msgstr "Ya" #: tools/editor/editor_node.cpp msgid "Close scene? (Unsaved changes will be lost)" -msgstr "" +msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)" #: tools/editor/editor_node.cpp msgid "Save Scene As.." -msgstr "" +msgstr "Simpan Scene Sebagai.." #: tools/editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "" +msgstr "Scene ini belum pernah disimpan. Simpan sebelum menjalankan?" #: tools/editor/editor_node.cpp msgid "Please save the scene first." -msgstr "" +msgstr "Mohon simpan scene terlebih dahulu." #: tools/editor/editor_node.cpp msgid "Save Translatable Strings" -msgstr "" +msgstr "Simpan Kalimat yang Dapat Diterjemahkan" #: tools/editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "Ekspor Mesh Library" #: tools/editor/editor_node.cpp msgid "Export Tile Set" -msgstr "" +msgstr "Ekspor Tile Set" #: tools/editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "Keluar" #: tools/editor/editor_node.cpp msgid "Exit the editor?" -msgstr "" +msgstr "Keluar editor?" #: tools/editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "" +msgstr "Scene saat ini tidak disimpan. Buka saja?" #: tools/editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "" +msgstr "Tidak bisa memuat ulang scene yang tidak pernah disimpan." #: tools/editor/editor_node.cpp msgid "Revert" -msgstr "" +msgstr "Pulihkan" #: tools/editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" -msgstr "" +msgstr "Tindakan ini tidak dapat dibatalkan. Pulihkan saja?" #: tools/editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "" +msgstr "Jalankan Cepat Scene.." #: tools/editor/editor_node.cpp msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" msgstr "" +"Buka Manajer Proyek?\n" +"(Perubahan yang tidak disimpan akan hilang)" #: tools/editor/editor_node.cpp msgid "Pick a Main Scene" -msgstr "" +msgstr "Pilih sebuah Scene Utama" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +#, fuzzy msgid "Ugh" -msgstr "" +msgstr "Wadoo" #: tools/editor/editor_node.cpp msgid "" "Error loading scene, it must be inside the project path. Use 'Import' to " "open the scene, then save it inside the project path." msgstr "" +"Gagal memuat scene, harus dalam alamat proyek. Gunakan 'Impor\" untuk " +"membuka scene tersebut, kemudian simpan di dalam alamat proyek." #: tools/editor/editor_node.cpp msgid "Error loading scene." -msgstr "" +msgstr "Gagal memuat scene." #: tools/editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "" +msgstr "Scene '%s' memiliki dependensi yang rusak:" #: tools/editor/editor_node.cpp msgid "Save Layout" -msgstr "" +msgstr "Simpan Penampilan" #: tools/editor/editor_node.cpp msgid "Delete Layout" -msgstr "" +msgstr "Hapus Penampilan" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" -msgstr "" +msgstr "Bawaan" #: tools/editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "" +msgstr "Pilih Tab Scene" #: tools/editor/editor_node.cpp msgid "%d more file(s)" -msgstr "" +msgstr "%d file lagi" #: tools/editor/editor_node.cpp msgid "%d more file(s) or folder(s)" -msgstr "" +msgstr "%d file atau folder lagi" #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Scene" -msgstr "" +msgstr "Suasana" #: tools/editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "" +msgstr "Pergi ke scene yang dibuka sebelumnya." #: tools/editor/editor_node.cpp msgid "Fullscreen Mode" -msgstr "" +msgstr "Mode Layar Penuh" #: tools/editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "" +msgstr "Mode Tanpa Gangguan" #: tools/editor/editor_node.cpp msgid "Next tab" -msgstr "" +msgstr "Tab selanjutnya" #: tools/editor/editor_node.cpp msgid "Previous tab" -msgstr "" +msgstr "Tab sebelumnya" #: tools/editor/editor_node.cpp msgid "Operations with scene files." -msgstr "" +msgstr "Operasi dengan file scene." #: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "Scene Baru" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "" +msgstr "Scene Turunan Baru.." #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "" +msgstr "Buka Scene.." #: tools/editor/editor_node.cpp msgid "Save Scene" -msgstr "" +msgstr "Simpan Scene" #: tools/editor/editor_node.cpp msgid "Save all Scenes" @@ -5943,6 +6140,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Tambahkan Properti Setter" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Metode Publik:" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6462,3 +6669,10 @@ msgstr "" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" msgstr "" + +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "Node modifikasi tidak memiliki _get_output_port_unsequenced(idx,wmem), " +#~ "tetapi port-port unsequenced dispesifikasikan." diff --git a/tools/translations/it.po b/tools/translations/it.po index c1d2686b2e..6f268298a7 100644 --- a/tools/translations/it.po +++ b/tools/translations/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-07-15 12:38+0000\n" +"PO-Revision-Date: 2016-08-29 11:05+0000\n" "Last-Translator: Dario Bonfanti <bonfi.96@hotmail.it>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" @@ -69,40 +69,44 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Un nodo ha ceduto senza memoria di lavoro, si prega di leggere la " +"documentazione riguardo a come cedere in maniera corretta!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"Il nodo ha ceduto, ma non ha ritornato uno stato di funzione nella prima " +"memoria di lavoro." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"Il valore di return deve essere assegnato al primo elemento della memoria di " +"lavoro del nodo! Si prega di aggiustare il nodo." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Il nodo ha ritornato una sequenza di output invalida: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" -msgstr "" +msgstr "Trovato bit di sequenza ma non il nodo nello stack, segnalare il bug!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Overflow dello stack con profondità dello stack: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Funzione:" +msgstr "Funzioni:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Valiabile" +msgstr "Valiabili:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -110,86 +114,102 @@ msgstr "Segnali:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Il nome non è un identificatore valido:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Nome già in uso da un altro funz/var/segnale:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Rendi Funzione" +msgstr "Rinomina Funzione" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Rinomina Sample" +msgstr "Rinomina Variabile" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Rinomina Sample" +msgstr "Rinomina Segnale" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Funzione:" +msgstr "Aggiungi Funzione" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Valiabile" +msgstr "Aggiungi Variabile" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Segnali" +msgstr "Aggiungi Segnale" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Rimuovi Selezione" +msgstr "Rimuovi Funzione" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Valiabile" +msgstr "Rimuovi Variabile" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Valiabile" +msgstr "Modifica Variabile:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Rimuovi Selezione" +msgstr "Rimuovi Segnale" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Connessione Segnali:" +msgstr "Modifica Segnale:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "Aggiungi Nodo Figlio" +msgstr "Aggiungi Nodo" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Node(s) From Tree" -msgstr "Nodo Da Scena" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Aggiungi Nodo Figlio" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Aggiungi Nodo(i) Da Albero" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Aggiungi Proprietà Getter" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Aggiungi Proprietà Setter" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -199,22 +219,20 @@ msgid "Edit" msgstr "Modifica" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Tipo Dato:" +msgstr "Tipo Base:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" msgstr "Membri:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Available Nodes:" -msgstr "Nodo TimeScale" +msgstr "Nodi Disponibili:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Seleziona o crea una funzione per modificare il grafico" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -230,24 +248,20 @@ msgid "Close" msgstr "Chiudi" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "Argomenti Chiamata Extra:" +msgstr "Modifica Argomenti Segnali:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Valiabile" +msgstr "Modifica Variabile:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Cambia Tipo" +msgstr "Cambia" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Eliminare i file selezionati?" +msgstr "Elimina selezionati" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -256,72 +270,81 @@ msgstr "Abilita Breakpoint" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Trova Successivo" +msgid "Find Node Type" +msgstr "Trova Tipo Nodo" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Copia Posa" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Crea Nodo" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Incolla Posa" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Il tipo di input non è iterabile: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "L'iteratore è diventato invalido" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "L'iteratore è diventato invalido: " #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Invalid index property name." -msgstr "Nome classe genitore invalido" +msgstr "Nome proprietà indice invalido." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "L'oggetto base non è un Nodo!" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "Percorso non locale" +msgstr "Il percorso non conduce ad un Nodo!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Nome proprietà indice invalido '%s' nel nodo %s." #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid argument of type: " -msgstr "Nome classe genitore invalido" +msgstr ": Argomento invalido di tipo: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Nome classe genitore invalido" +msgstr ": Argomenti invalidi: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet non trovato nello script: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet non trovato nello script: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" +"Il nodo personalizato non ha un metodo _step(), impossibile processare il " +"grafico." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"Valore di return invalido da _step(), deve esere intero (seq out), oppure " +"stringa (errore)." #: scene/2d/animated_sprite.cpp msgid "" @@ -573,7 +596,8 @@ msgstr "Tutti i File (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Apri" @@ -1065,6 +1089,7 @@ msgstr "Ottimizza" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." msgstr "" +"Seleziona un AnimationPlayer dallo Scene Tree per modificare le animazioni." #: tools/editor/animation_editor.cpp msgid "Key" @@ -1116,7 +1141,8 @@ msgstr "Cambia Valore Array" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Cerca:" @@ -1274,7 +1300,7 @@ msgstr "Zoom Out" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Resetta Zoom" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1365,10 +1391,16 @@ msgid "Create New" msgstr "Crea Nuovo" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Corrispondenze:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Descrizione:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "Cerca Rimpiazzo Per:" @@ -1697,10 +1729,6 @@ msgstr "Elementi Tema GUI:" msgid "Constants:" msgstr "Costanti:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Descrizione:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Descrizione Metodo:" @@ -3680,9 +3708,8 @@ msgid "Paste Pose" msgstr "Incolla Posa" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "Modalità di Selezione(Q)" +msgstr "Modalità di Selezione" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3703,14 +3730,12 @@ msgid "Alt+RMB: Depth list selection" msgstr "Alt+RMB: Selezione Lista Profondità" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "Modalità Movimento (W)" +msgstr "Modalità Movimento" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate Mode" -msgstr "Modalità Rotazione (E)" +msgstr "Modalità Rotazione" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -4525,9 +4550,8 @@ msgid "Save Theme As" msgstr "Salva Tema Come" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "Clona Sotto" +msgstr "Chiudi Documentazione" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -5799,12 +5823,10 @@ msgid "Unnamed Project" msgstr "Progetto Senza Nome" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to open more than one project?" msgstr "Sei sicuro di voler aprire più di un progetto?" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run more than one project?" msgstr "Sei sicuro di voler eseguire più di un progetto?" @@ -5818,7 +5840,7 @@ msgstr "" msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" -msgstr "" +msgstr "Stai per esaminare %s cartelle per progetti Godot esistenti. Confermi?" #: tools/editor/project_manager.cpp msgid "Project Manager" @@ -5837,9 +5859,8 @@ msgid "Scan" msgstr "Esamina" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Select a Folder to Scan" -msgstr "Scegli un Nodo" +msgstr "Scegli una Cartella da Scansionare" #: tools/editor/project_manager.cpp msgid "New Project" @@ -6133,6 +6154,16 @@ msgstr "Globale" msgid "Sections:" msgstr "Sezioni:" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Selezione Punti" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Modalità di Selezione" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "Impossibile eseguire lo strumento di PVRTC:" @@ -6206,9 +6237,8 @@ msgid "No parent to instance a child at." msgstr "Nessun genitore del quale istanziare un figlio." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "No parent to instance the scenes at." -msgstr "Nessun genitore del quale istanziare un figlio." +msgstr "Nessun genitore nel quale istanziare una scena." #: tools/editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -6343,9 +6373,8 @@ msgid "Save Branch as Scene" msgstr "Salva Ramo come Scena" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "Si Prega Di Confermare..." +msgstr "Elimina (Senza Conferma)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" @@ -6360,9 +6389,8 @@ msgstr "" "root esiste." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Create a new script for the selected node." -msgstr "Istanzia le scene selezionate come figlie del nodo selezionato." +msgstr "Crea un nuovo script per il nodo selezionato." #: tools/editor/scene_tree_editor.cpp msgid "" @@ -6664,6 +6692,13 @@ msgstr "Cambia lunghezza Ray Shape" msgid "Change Notifier Extents" msgstr "Cambia Estensione di Notifier" +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "Il nodo personalizzato non ha _get_output_port_unsequenced(idx,wmem), ma " +#~ "le porte unsequenced sono state specificate." + #~ msgid "Cannot go into subdir:" #~ msgstr "Impossibile accedere alla subdirectory:" diff --git a/tools/translations/ja.po b/tools/translations/ja.po index a576596025..1f0c073082 100644 --- a/tools/translations/ja.po +++ b/tools/translations/ja.po @@ -171,16 +171,44 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Add Node(s) From Tree" msgstr "シーンからのノード" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -245,9 +273,22 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "ノードへのパス:" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -293,12 +334,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -553,7 +588,8 @@ msgstr "すべてのファイル(*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "開く" @@ -1096,7 +1132,8 @@ msgstr "配列の値を変更" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "検索:" @@ -1346,10 +1383,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1667,10 +1710,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -6045,6 +6084,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "すべて選択" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "すべて選択" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/ko.po b/tools/translations/ko.po index 8199de00d4..72d9fc1167 100644 --- a/tools/translations/ko.po +++ b/tools/translations/ko.po @@ -2,13 +2,13 @@ # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. # -# volzhs <volzhs@gmail.com>, 2016. +# 박한얼 (volzhs) <volzhs@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-07-29 08:31+0000\n" +"PO-Revision-Date: 2016-08-17 10:07+0000\n" "Last-Translator: 박한얼 <volzhs@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -95,14 +95,12 @@ msgid "Stack overflow with stack depth: " msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" msgstr "함수:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "변수" +msgstr "변수:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -117,76 +115,92 @@ msgid "Name already in use by another func/var/signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "함수 만들기" +msgstr "함수명 변경" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "샘플 이름 변경" +msgstr "변수명 변경" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "샘플 이름 변경" +msgstr "시그널명 변경" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "함수:" +msgstr "함수 추가" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "변수" +msgstr "변수 추가" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "시그널" +msgstr "시그널 추가" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "선택 삭제" +msgstr "함수 제거" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "변수" +msgstr "변수 제거" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "변수" +msgstr "변수 편집:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "선택 삭제" +msgstr "시그널 제거" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "시그널 연결:" +msgstr "시그널 편집:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "자식 노드 추가" +msgstr "노드 추가" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Preload Node" +msgstr "자식 노드 추가" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" -msgstr "씬으로부터 노드 가져오기" +msgstr "트리에서 노드 추가" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -199,18 +213,16 @@ msgid "Edit" msgstr "편집" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "데이타 타입:" +msgstr "기본 타입:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" msgstr "멤버:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Available Nodes:" -msgstr "시간 크기 조절 노드" +msgstr "가능한 노드:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" @@ -230,24 +242,20 @@ msgid "Close" msgstr "닫기" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "별도의 호출 인자:" +msgstr "시그널 인자 편집:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "변수" +msgstr "변수 편집:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "타입 변경" +msgstr "변경" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "선택된 파일들을 삭제하시겠습니까?" +msgstr "선택 항목 삭제" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -256,8 +264,23 @@ msgstr "중단점 토글" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "다음 찾기" +msgid "Find Node Type" +msgstr "노드 타입 찾기" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "포즈 복사" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "노드 생성" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "포즈 붙여넣기" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -272,32 +295,28 @@ msgid "Iterator became invalid: " msgstr "" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Invalid index property name." -msgstr "유요하지 않은 부모 클래스명" +msgstr "유요하지 않은 인덱스 속성명." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" msgstr "" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "경로가 로컬이 아님" +msgstr "노드를 지칭하는 경로가 아닙니다!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid argument of type: " -msgstr "유요하지 않은 부모 클래스명" +msgstr ": 유효하지 않은 인자 타입: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "유요하지 않은 부모 클래스명" +msgstr ": 유효하지 인자: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -308,12 +327,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -555,7 +568,8 @@ msgstr "모든 파일 (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "열기" @@ -1097,7 +1111,8 @@ msgstr "배열 값 변경" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "검색:" @@ -1346,10 +1361,16 @@ msgid "Create New" msgstr "새로 만들기" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "일치:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "설명:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "대체할 대상 찾기:" @@ -1673,10 +1694,6 @@ msgstr "GUI 테마 항목:" msgid "Constants:" msgstr "상수:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "설명:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "함수 설명:" @@ -3644,9 +3661,8 @@ msgid "Paste Pose" msgstr "포즈 붙여넣기" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "선택 모드 (Q)" +msgstr "선택 모드" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3665,14 +3681,12 @@ msgid "Alt+RMB: Depth list selection" msgstr "알트+우클릭: 겹친 오브젝트 선택" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "이동 모드 (W)" +msgstr "이동 모드" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate Mode" -msgstr "회전 모드 (E)" +msgstr "회전 모드" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -4485,9 +4499,8 @@ msgid "Save Theme As" msgstr "테마 다른 이름으로 저장" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "아래로 복제" +msgstr "문서 닫기" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -5753,12 +5766,10 @@ msgid "Unnamed Project" msgstr "이름없는 프로젝트" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to open more than one project?" msgstr "두개 이상의 프로젝트를 열려는 것이 확실합니까?" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run more than one project?" msgstr "두개 이상의 프로젝트를 실행하려는 것이 확실합니까?" @@ -5790,9 +5801,8 @@ msgid "Scan" msgstr "스캔" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Select a Folder to Scan" -msgstr "노드 선택" +msgstr "스캔할 폴더를 선택하세요" #: tools/editor/project_manager.cpp msgid "New Project" @@ -6064,7 +6074,7 @@ msgstr "이미지를 로드할 수 없음" #: tools/editor/property_editor.cpp msgid "Bit %d, val %d." -msgstr "Bit %d, val %d." +msgstr "비트 %d, 값 %d." #: tools/editor/property_editor.cpp msgid "On" @@ -6086,6 +6096,16 @@ msgstr "Global" msgid "Sections:" msgstr "부문:" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "포인트 선택" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "선택 모드" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "PVRTC 도구를 실행할 수 없습니다:" @@ -6159,9 +6179,8 @@ msgid "No parent to instance a child at." msgstr "선택된 부모 노드가 없어서 자식노드를 인스턴스할 수 없습니다." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "No parent to instance the scenes at." -msgstr "선택된 부모 노드가 없어서 자식노드를 인스턴스할 수 없습니다." +msgstr "씬을 인스턴스할 수 있는 부모가 없습니다." #: tools/editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -6293,9 +6312,8 @@ msgid "Save Branch as Scene" msgstr "선택 노드를 다른 씬으로 저장" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "확인해주세요..." +msgstr "삭제 (확인 없음)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" @@ -6309,9 +6327,8 @@ msgstr "" "씬 파일을 노드로 추가합니다. 루트 노드가 없을 경우, 상속씬으로 만들어집니다." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Create a new script for the selected node." -msgstr "선택된 씬을 선택된 노드의 자식으로 인스턴스 합니다." +msgstr "선택된 노드에 새로운 스크립트를 생성합니다." #: tools/editor/scene_tree_editor.cpp msgid "" diff --git a/tools/translations/nb.po b/tools/translations/nb.po new file mode 100644 index 0000000000..41903096cf --- /dev/null +++ b/tools/translations/nb.po @@ -0,0 +1,6516 @@ +# Norwegian Bokmål translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# Jørgen Aarmo Lund <jorgen.aarmo@gmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-08-29 19:46+0000\n" +"Last-Translator: Jørgen Aarmo Lund <jorgen.aarmo@gmail.com>\n" +"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/godot-" +"engine/godot/nb/>\n" +"Language: nb\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.8-dev\n" + +#: modules/gdscript/gd_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Ugyldig argument til convert(), bruk TYPE_*-konstantene." + +#: modules/gdscript/gd_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"A node yielded without working memory, please read the docs on how to yield " +"properly!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Node yielded, but did not return a function state in the first working " +"memory." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Return value must be assigned to first element of node working memory! Fix " +"your node please." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Node returned an invalid sequence output: " +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Found sequence bit but not the node in the stack, report bug!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Stack overflow with stack depth: " +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Functions:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Variables:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name is not a valid identifier:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name already in use by another func/var/signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp +msgid "Members:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Available Nodes:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select or create a function to edit graph" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Signal Arguments:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Variable:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete Selected" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/plugins/script_text_editor.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Input type not iterable: " +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid: " +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name." +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Base object is not a Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Path does not lead Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name '%s' in node %s." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid argument of type: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid arguments: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableGet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableSet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Custom node has no _step() method, can't process graph." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/baked_light_instance.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/scene_tree_dock.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/filesystem_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +msgid "Open" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_autoload_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Select an AnimationPlayer from the Scene Tree to edit animations." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "" + +#: tools/editor/code_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "" + +#: tools/editor/code_editor.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_autoload_settings.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Path" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/filesystem_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Delete" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Invalid Path." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "File does not exist." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Not in resource path." +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Add AutoLoad" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Rearrange Autoloads" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Name" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/editor_autoload_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Back" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Forward" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Go Up" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Refresh" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Hidden Files" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Favorite" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Toggle Mode" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Focus Path" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Move Favorite Up" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Move Favorite Down" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined, select one?\n" +"You can change it later in later in \"Project Settings\" under the " +"'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Selected scene '%s' does not exist, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Selected scene '%s' is not a scene file, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pick a Main Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Next tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Previous tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save all Scenes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Custom Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/filesystem_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"Invalid file extension.\n" +"Please use .fnt." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has not surface to create outlines from!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Next script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Previous script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close Docs" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"Built-in scripts can only be edited when the scene they belong to is loaded" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Switch Perspective/Orthogonal view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Insert Animation Key" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Selection" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align Selection With View" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "<None>" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Pixel Snap" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Snap" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Auto Slice" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Offset:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Separation:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "The following files failed extraction from package:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Package Installed Successfully!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Install Project:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Install" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one project?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "" +"You are about the scan %s folders for existing Godot projects. Do you " +"confirm?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Select a Folder to Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance the scenes at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete (No Confirm)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create a new script for the selected node." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" diff --git a/tools/translations/pl.po b/tools/translations/pl.po index 6e1652675a..23966ce78c 100644 --- a/tools/translations/pl.po +++ b/tools/translations/pl.po @@ -7,12 +7,13 @@ # Kamil Lewan <lewan.kamil@gmail.com>, 2016. # Karol Walasek <coreconviction@gmail.com>, 2016. # Mietek Szcześniak <ravaging@go2.pl>, 2016. +# Rafal Brozio <rafal.brozio@gmail.com>, 2016. # siatek papieros <sbigneu@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-08-10 13:18+0000\n" +"PO-Revision-Date: 2016-08-16 18:01+0000\n" "Last-Translator: Mietek Szcześniak <ravaging@go2.pl>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" @@ -35,7 +36,7 @@ msgstr "Brak miejsca dla bajtów dekodujących, lub zły format." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" -msgstr "Argument kroku jest zerowy!" +msgstr "argument kroku jest zerowy!" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" @@ -51,7 +52,7 @@ msgstr "Nie bazuje na pliku zasobów" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "Niepoprawna instancja formatu słownika (brakujący @path)" +msgstr "Niepoprawna instancja formatu słownika (brak @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" @@ -83,10 +84,12 @@ msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"Zwrócona wartość musi być przypisana do pierwszego elementu węzła pamięci " +"roboczej! Proszę naprawić swój węzeł." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Węzeł zwrócił niewłaściwą sekwencję wyjściową: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" @@ -94,17 +97,15 @@ msgstr "" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Przepełnienie stosu z głębokością stosu: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Funkcja:" +msgstr "Funkcje:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Zmienna" +msgstr "Zmienne:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -112,83 +113,99 @@ msgstr "Sygnały:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Nazwa nie jest prawidłowym identyfikatorem:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Nazwa jest już użyta przez inną funkcję/zmienną/sygnał:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Stwórz Funkcję" +msgstr "Zmień nazwę funkcji" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Zmienna" +msgstr "Zmień nawę zmiennej" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Zmień nazwę" +msgstr "Zmień nazwę sygnału" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Funkcja:" +msgstr "Dodaj funkcję" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Zmienna" +msgstr "Dodaj zmienną" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Sygnały" +msgstr "Dodaj sygnał" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Usuń zaznaczone" +msgstr "Usuń funkcję" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Zmienna" +msgstr "Usuń zmienną" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Zmienna" +msgstr "Edytuj zmienną:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Usuń zaznaczone" +msgstr "Usuń sygnał" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Połączony sygnał:" +msgstr "Edytuj sygnał:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "Dodaj węzeł dziecko" +msgstr "Dodaj węzeł" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Preload Node" +msgstr "Dodaj dziecko węzła" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" -msgstr "Węzeł ze Sceny" +msgstr "Dodaj węzeł(y) z drzewa" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -201,9 +218,8 @@ msgid "Edit" msgstr "Edycja" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Zmień typ" +msgstr "Typ bazowy:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" @@ -211,11 +227,11 @@ msgstr "Członkowie:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "Dostępne węzły:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Wybierz lub utwórz funkcję, aby edytować wykres" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -231,34 +247,45 @@ msgid "Close" msgstr "Zamknij" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "Dodatkowe argumenty wywołania:" +msgstr "Edytuj argumenty sygnału:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Zmienna" +msgstr "Edytuj zmienną:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Zmień typ" +msgstr "Zmień" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Usunąć zaznaczone pliki?" +msgstr "Usuń zaznaczone" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" -msgstr "" +msgstr "Przełącz pułapkę" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Znajdź Następny" +msgid "Find Node Type" +msgstr "Znajdź typ węzła" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Skopiuj Pozę" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Utwórz węzeł" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Wklej Pozę" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -279,40 +306,31 @@ msgstr "Nieprawidłowa nazwa klasy bazowej" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "Obiekt bazowy nie jest węzłem!" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "Ścieżka nie jest lokalna" +msgstr "Ścieżka nie prowadzi do węzła!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Nieprawidłowy indeks we właściwości '%s' węzła %s." #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid argument of type: " -msgstr "Nieprawidłowa nazwa klasy bazowej" +msgstr ":nieprawidłowy argument typu: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Nieprawidłowa nazwa klasy bazowej" +msgstr ":nieprawidłowe argumenty: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "Nie znaleziono VariableGet w skrypcie: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "Nie znaleziono VariableSet w skrypcie: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." @@ -370,7 +388,7 @@ msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" -"Zasób shape jest niezbędny do działania CollisionPolygon2D. Proszę stworzyć " +"Zasób shape jest niezbędny do działania CollisionPolygon2D. Proszę utworzyć " "zasób shape!" #: scene/2d/light_2d.cpp @@ -393,12 +411,11 @@ msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" msgstr "Poligon zasłaniający jest pusty. Proszę narysować poligon!" #: scene/2d/navigation_polygon.cpp -#, fuzzy msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" -"Zasób typu NavigationPolygon musi być ustawiony lub stworzony, aby ten węzeł " +"Zasób typu NavigationPolygon musi być ustawiony lub utworzony, aby ten węzeł " "zadziałał." #: scene/2d/navigation_polygon.cpp @@ -482,7 +499,7 @@ msgid "" "shape resource for it!" msgstr "" "Kształt musi być określony dla CollisionShape, aby spełniał swoje zadanie. " -"Stwórz zasób typu CollisionShape w odpowiednim polu obiektu!" +"Utwórz zasób typu CollisionShape w odpowiednim polu obiektu!" #: scene/3d/collision_polygon.cpp msgid "" @@ -557,7 +574,7 @@ msgstr "Plik istnieje, nadpisać?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "Wszystko rozpoznane" +msgstr "Wszystkie rozpoznane" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" @@ -566,7 +583,8 @@ msgstr "Wszystkie pliki (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Otwórz" @@ -600,7 +618,7 @@ msgstr "Zapisz plik" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp msgid "Create Folder" -msgstr "Stwórz katalog" +msgstr "Utwórz katalog" #: scene/gui/file_dialog.cpp tools/editor/editor_autoload_settings.cpp #: tools/editor/editor_file_dialog.cpp @@ -631,7 +649,7 @@ msgstr "Nazwa:" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp msgid "Could not create folder." -msgstr "Nie można stworzyć katalogu." +msgstr "Nie można utworzyć katalogu." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Must use a valid extension." @@ -654,7 +672,7 @@ msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Meta+" -msgstr "" +msgstr "Meta+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Device" @@ -760,7 +778,7 @@ msgstr "Błąd przy inicjalizacji FreeType." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Unknown font format." -msgstr "Nieznany format fonta." +msgstr "Nieznany format fontu." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -823,7 +841,7 @@ msgstr "Usuń animację" #: tools/editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "" +msgstr "Ustaw przejścia na:" #: tools/editor/animation_editor.cpp msgid "Anim Track Rename" @@ -893,11 +911,11 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Goto Next Step" -msgstr "Idź do następnego kroku" +msgstr "Przejdź do następnego kroku" #: tools/editor/animation_editor.cpp msgid "Goto Prev Step" -msgstr "Idź do poprzedniego kroku" +msgstr "Przejdź do poprzedniego kroku" #: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp msgid "Linear" @@ -942,7 +960,7 @@ msgstr "Stworzyć NOWĄ ścieżkę dla %s i wstawić klatkę kluczową?" #: tools/editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "Stworzyć NOWĄ ścieżkę i dodać klatkę kluczową?" +msgstr "Utworzyć NOWĄ ścieżkę i dodać klatkę kluczową?" #: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -967,11 +985,11 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "" +msgstr "Zmień długość animacji" #: tools/editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "" +msgstr "Zmień pętlę animacji" #: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" @@ -979,7 +997,7 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Anim Insert" -msgstr "" +msgstr "Wstaw animację" #: tools/editor/animation_editor.cpp msgid "Anim Scale Keys" @@ -1091,7 +1109,7 @@ msgstr "Wyczyść wszystkie animacje" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "Oczyść Animacje (NIE MOŻNA COFNĄĆ!)" +msgstr "Oczyść animacje (NIE MOŻNA COFNĄĆ!)" #: tools/editor/animation_editor.cpp msgid "Clean-Up" @@ -1111,7 +1129,8 @@ msgstr "Zmień Wartość Tablicy" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Szukaj:" @@ -1135,7 +1154,7 @@ msgstr "Wszystko" #: tools/editor/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "Źródło:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Support.." @@ -1269,7 +1288,7 @@ msgstr "Oddal" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Wyzeruj przybliżenie" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1316,7 +1335,7 @@ msgstr "Ścieżka do węzła:" #: tools/editor/connections_dialog.cpp msgid "Make Function" -msgstr "Stwórz Funkcję" +msgstr "Utwórz funkcję" #: tools/editor/connections_dialog.cpp #, fuzzy @@ -1341,7 +1360,7 @@ msgstr "Połączony sygnał:" #: tools/editor/connections_dialog.cpp msgid "Create Subscription" -msgstr "Utwórz Subskrypcje" +msgstr "Utwórz subskrypcje" #: tools/editor/connections_dialog.cpp msgid "Connect.." @@ -1358,13 +1377,19 @@ msgstr "Sygnały" #: tools/editor/create_dialog.cpp msgid "Create New" -msgstr "Stwórz nowy" +msgstr "Utwórz nowy" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Pasujące:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Opis:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "Znajdź i zamień:" @@ -1396,7 +1421,7 @@ msgstr "Zasoby" #: tools/editor/dependency_editor.cpp tools/editor/editor_autoload_settings.cpp #: tools/editor/project_manager.cpp tools/editor/project_settings.cpp msgid "Path" -msgstr "Scieżka" +msgstr "Ścieżka" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" @@ -1469,7 +1494,7 @@ msgstr "Zasoby bez jawnych właścicieli:" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "" +msgstr "Eksplorator osieroconych zasobów" #: tools/editor/dependency_editor.cpp msgid "Delete selected files?" @@ -1520,12 +1545,10 @@ msgid "Add AutoLoad" msgstr "Dodaj AutoLoad" #: tools/editor/editor_autoload_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" msgstr "Autoload '%s' już istnieje!" #: tools/editor/editor_autoload_settings.cpp -#, fuzzy msgid "Rename Autoload" msgstr "Zmień nazwę Autoload" @@ -1606,7 +1629,7 @@ msgstr "Odśwież" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "Pokaż ukryte pliki" +msgstr "Przełącz ukryte pliki" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Favorite" @@ -1622,11 +1645,11 @@ msgstr "" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "Przesuń Ulubiony w Górę" +msgstr "Przesuń Ulubiony w górę" #: tools/editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "Przesuń Ulubiony w Dół" +msgstr "Przesuń Ulubiony w dół" #: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp msgid "Favorites:" @@ -1642,7 +1665,7 @@ msgstr "Podgląd:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" -msgstr "Przeszukaj Źródła" +msgstr "Przeszukaj źródła" #: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Search Help" @@ -1679,23 +1702,19 @@ msgstr "Metody Publiczne:" #: tools/editor/editor_help.cpp msgid "GUI Theme Items:" -msgstr "Elementy Tematu GUI:" +msgstr "Elementy motywu GUI:" #: tools/editor/editor_help.cpp msgid "Constants:" msgstr "Stałe:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Opis:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Opis Metody:" #: tools/editor/editor_help.cpp msgid "Search Text" -msgstr "Wyszukaj w tekscie" +msgstr "Wyszukaj w tekście" #: tools/editor/editor_import_export.cpp msgid "Added:" @@ -1731,7 +1750,7 @@ msgstr "Konfigurowanie .." #: tools/editor/editor_log.cpp msgid " Output:" -msgstr " Wyjście:" +msgstr " Konsola:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" @@ -1754,7 +1773,6 @@ msgstr "Błąd podczas zapisu zasobu!" #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp -#, fuzzy msgid "Save Resource As.." msgstr "Zapisz zasób jako..." @@ -1822,21 +1840,20 @@ msgid "Loading Export Templates" msgstr "Ładowanie szablonów eksportu" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Error trying to save layout!" -msgstr "Błąd podczas zapisu layoutu" +msgstr "Błąd podczas zapisu layoutu!" #: tools/editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "Domyślny układ edytora został nadpisany." +msgstr "Domyślny layout edytora został nadpisany." #: tools/editor/editor_node.cpp msgid "Layout name not found!" -msgstr "Nie znaleziono nazwy układu!" +msgstr "Nie znaleziono nazwy layoutu!" #: tools/editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "Przywrócono domyślny układ do ustawień bazowych." +msgstr "Przywrócono domyślny layout do ustawień bazowych." #: tools/editor/editor_node.cpp msgid "Copy Params" @@ -1990,7 +2007,7 @@ msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" msgstr "" -"Otworzyć menedżer projektów?\n" +"Otworzyć Menedżer Projektów?\n" "(Niezapisane zmiany zostaną utracone)" #: tools/editor/editor_node.cpp @@ -2021,11 +2038,11 @@ msgstr "Scena '%s' ma niespełnione zależności:" #: tools/editor/editor_node.cpp msgid "Save Layout" -msgstr "Zapisz Układ" +msgstr "Zapisz layout" #: tools/editor/editor_node.cpp msgid "Delete Layout" -msgstr "Usuń Układ" +msgstr "Usuń layout" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -2074,35 +2091,35 @@ msgstr "Operacja na plikach sceny." #: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "Nowa Scena" +msgstr "Nowa scena" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "Nowa Odziedziczona Scena.." +msgstr "Nowa odziedziczona scena.." #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "Otwórz Scene.." +msgstr "Otwórz scenę.." #: tools/editor/editor_node.cpp msgid "Save Scene" -msgstr "Zapisz Scene" +msgstr "Zapisz scenę" #: tools/editor/editor_node.cpp msgid "Save all Scenes" -msgstr "Zapisz wszystkie Sceny" +msgstr "Zapisz wszystkie sceny" #: tools/editor/editor_node.cpp msgid "Close Scene" -msgstr "Zamknij Scene" +msgstr "Zamknij scenę" #: tools/editor/editor_node.cpp msgid "Close Goto Prev. Scene" -msgstr "Zamknij i wróć do poprzedniej sceny" +msgstr "Zamknij i przejdź do poprzedniej sceny" #: tools/editor/editor_node.cpp msgid "Open Recent" -msgstr "Ostatnio Otwierane" +msgstr "Ostatnio otwierane" #: tools/editor/editor_node.cpp msgid "Quick Filter Files.." @@ -2110,7 +2127,7 @@ msgstr "Szybkie filtry plików.." #: tools/editor/editor_node.cpp msgid "Convert To.." -msgstr "Konwertuje Na.." +msgstr "Konwertuje na.." #: tools/editor/editor_node.cpp msgid "Translatable Strings.." @@ -2127,15 +2144,15 @@ msgstr "TileSet..." #: tools/editor/editor_node.cpp tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Redo" -msgstr "" +msgstr "Ponów" #: tools/editor/editor_node.cpp msgid "Run Script" -msgstr "Uruchom Skrypt" +msgstr "Uruchom skrypt" #: tools/editor/editor_node.cpp msgid "Project Settings" -msgstr "Ustawienia Projektu" +msgstr "Ustawienia projektu" #: tools/editor/editor_node.cpp msgid "Revert Scene" @@ -2188,11 +2205,11 @@ msgstr "Uruchom" #: tools/editor/editor_node.cpp msgid "Pause the scene" -msgstr "Pauzuj scenę" +msgstr "Zapauzuj scenę" #: tools/editor/editor_node.cpp msgid "Pause Scene" -msgstr "Pauzuj scenę" +msgstr "Zapauzuj scenę" #: tools/editor/editor_node.cpp msgid "Stop the scene." @@ -2225,7 +2242,7 @@ msgstr "Opcje debugowania" #: tools/editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "Uruchom z użyciem Zdalnego Debugowania" +msgstr "Uruchom z użyciem zdalnego debugowania" #: tools/editor/editor_node.cpp msgid "" @@ -2233,7 +2250,7 @@ msgid "" "connect to the IP of this computer in order to be debugged." msgstr "" "Podczas eksportu lub uruchomienia aplikacja wynikowa spróbuje połączyć się z " -"adresem IP tego komputera w celu zdebugowania." +"adresem IP tego komputera w celu debugowania." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" @@ -2248,7 +2265,7 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" -"Gdy ta opcja jest zaznaczona, eksportowanie stworzy jak najmniejszy plik " +"Gdy ta opcja jest zaznaczona, eksportowanie utworzy jak najmniejszy plik " "wykonywalny.\n" "System plików będzie udostępniony przez ten edytor poprzez sieć.\n" "Na Androidzie eksport użyje kabla USB dla lepszej wydajności. Opcja ta " @@ -2268,7 +2285,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Visible Navigation" -msgstr "Nawigacja Widoczna" +msgstr "Widoczna nawigacja" #: tools/editor/editor_node.cpp msgid "" @@ -2313,11 +2330,11 @@ msgstr "Ustawienia" #: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "Ustawienia Edytora" +msgstr "Ustawienia edytora" #: tools/editor/editor_node.cpp msgid "Editor Layout" -msgstr "Układ Edytora" +msgstr "Layout edytora" #: tools/editor/editor_node.cpp msgid "Install Export Templates" @@ -2349,7 +2366,7 @@ msgstr "Inspektor" #: tools/editor/editor_node.cpp msgid "Create a new resource in memory and edit it." -msgstr "Stwórz nowy zasób wewnątrz pamięci i edytuj go." +msgstr "Utwórz nowy zasób wewnątrz pamięci i edytuj go." #: tools/editor/editor_node.cpp msgid "Load an existing resource from disk and edit it." @@ -2385,7 +2402,7 @@ msgstr "System plików" #: tools/editor/editor_node.cpp msgid "Output" -msgstr "Wyjście" +msgstr "Konsola" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Import" @@ -2433,7 +2450,7 @@ msgstr "Wczytaj błędy" #: tools/editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "Zainstalowane Wtyczki:" +msgstr "Zainstalowane wtyczki:" #: tools/editor/editor_plugin_settings.cpp msgid "Version:" @@ -2456,7 +2473,6 @@ msgid "Start Profiling" msgstr "Rozpocznij profilowanie" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Measure:" msgstr "Zmierzono:" @@ -2519,7 +2535,7 @@ msgstr "Edytowana scena już istnieje." #: tools/editor/editor_run_script.cpp msgid "Couldn't instance script:" -msgstr "Nie udało się stworzyć instancji skryptu:" +msgstr "Nie udało się utworzyć instancji skryptu:" #: tools/editor/editor_run_script.cpp msgid "Did you forget the 'tool' keyword?" @@ -2543,11 +2559,11 @@ msgstr "Wybierz węzły do importu" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "Scieżka Sceny:" +msgstr "Ścieżka sceny:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" -msgstr "Zaimportuj z Węzła:" +msgstr "Zaimportuj z węzła:" #: tools/editor/file_type_cache.cpp msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" @@ -2560,7 +2576,6 @@ msgid "Same source and destination files, doing nothing." msgstr "" #: tools/editor/filesystem_dock.cpp -#, fuzzy msgid "Same source and destination paths, doing nothing." msgstr "" "Ścieżki źródłowa i docelowa są takie same, żadna akcja nie została wykonana." @@ -2627,17 +2642,16 @@ msgid "Next Directory" msgstr "Następny folder" #: tools/editor/filesystem_dock.cpp -#, fuzzy msgid "Re-Scan Filesystem" msgstr "Przeskanuj system plików ponownie" #: tools/editor/filesystem_dock.cpp msgid "Toggle folder status as Favorite" -msgstr "Ustaw folder jako Ulubiony" +msgstr "Ustaw folder jako ulubiony" #: tools/editor/filesystem_dock.cpp msgid "Instance the selected scene(s) as child of the selected node." -msgstr "Stwórz instancje wybranej sceny/scen jako dziecko wybranego węzła." +msgstr "Utwórz instancje wybranej sceny/scen jako dziecko wybranego węzła." #: tools/editor/filesystem_dock.cpp msgid "Move" @@ -2684,12 +2698,12 @@ msgstr "Ścieżka zapisu jest pusta!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Import BitMasks" -msgstr "" +msgstr "Importuj BitMasks" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s):" -msgstr "Źródłowe Tekstury:" +msgstr "Źródło tekstury:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp @@ -2698,7 +2712,7 @@ msgstr "Źródłowe Tekstury:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Target Path:" -msgstr "Docelowa Ścieżka:" +msgstr "Ścieżka docelowa:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -2711,7 +2725,7 @@ msgstr "Akceptuj" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "" +msgstr "BitMask" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" @@ -2739,7 +2753,7 @@ msgstr "Nie udało się zapisać czcionki." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font:" -msgstr "Źródłowa czcionka:" +msgstr "Źródło czcionki:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font Size:" @@ -2750,9 +2764,8 @@ msgid "Dest Resource:" msgstr "Wielkość docelowa czcionki:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp -#, fuzzy msgid "The quick brown fox jumps over the lazy dog." -msgstr "Zżółć gęślą jaźń." +msgstr "ŻżŹźĆćŃńĄąŁłĘęÓó." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Test:" @@ -2767,7 +2780,7 @@ msgstr "Opcje:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Font Import" -msgstr "Import Czcionki" +msgstr "Import czcionki" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "" @@ -2798,7 +2811,7 @@ msgstr "Importuj Mesh" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Source Mesh(es):" -msgstr "Meshe źródłowe:" +msgstr "Źródło Mesh:" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/plugins/mesh_instance_editor_plugin.cpp @@ -2811,7 +2824,7 @@ msgstr "Powierzchnia %d" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "No samples to import!" -msgstr "" +msgstr "Brak sampli do importu!" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Import Audio Samples" @@ -2819,7 +2832,7 @@ msgstr "Importuj pliki dźwiękowe" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Source Sample(s):" -msgstr "Dźwięki źródłowe:" +msgstr "Źródło dźwięku:" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Audio Sample" @@ -2827,11 +2840,11 @@ msgstr "Dźwięk" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "New Clip" -msgstr "" +msgstr "Nowy klip" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Animation Options" -msgstr "Opcje Animacji" +msgstr "Opcje animacji" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Flags" @@ -2843,15 +2856,15 @@ msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Optimizer" -msgstr "" +msgstr "Optymalizator" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Linear Error" -msgstr "" +msgstr "Maksymalny błąd liniowy" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angular Error" -msgstr "" +msgstr "Maksymalny błąd kątowy" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angle" @@ -2888,7 +2901,7 @@ msgstr "Nie udało się wczytać skryptu po imporcie." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import." -msgstr "" +msgstr "Niepoprawny/uszkodzony skrypt post-importu." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error importing scene." @@ -2900,7 +2913,7 @@ msgstr "Zaimportuj Scene 3D" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source Scene:" -msgstr "Źródłowa Scena:" +msgstr "Scena źródłowa:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Same as Target Scene" @@ -2988,7 +3001,7 @@ msgstr "Zapisywanie.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "3D Scene Animation" -msgstr "Scena Animacji 3D" +msgstr "Scena animacji 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Uncompressed" @@ -3064,15 +3077,15 @@ msgstr "Bazowa tekstura \"Atlas'u\"" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s)" -msgstr "Źródłowe Tekstury" +msgstr "Tekstura(y) źródłowe" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 2D" -msgstr "" +msgstr "Importuj tekstury dla 2D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 3D" -msgstr "" +msgstr "Importuj tekstury dla 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures" @@ -3144,11 +3157,11 @@ msgstr "Nie można załadować obrazu:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Converting Images" -msgstr "Konwersja Obrazów" +msgstr "Konwersja obrazków" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cropping Images" -msgstr "Przycinanie Obrazów" +msgstr "Przycinanie obrazków" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Blitting Images" @@ -3168,7 +3181,7 @@ msgstr "Wadliwe źródło!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Invalid translation source!" -msgstr "" +msgstr "Nieprawidłowe źródło tłumaczenia!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Column" @@ -3205,7 +3218,7 @@ msgstr "Źródłowy CSV:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Ignore First Row" -msgstr "Ignoruj Pierwszy Wiersz" +msgstr "Ignoruj pierwszy wiersz" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Compress" @@ -3213,7 +3226,7 @@ msgstr "Skompresuj" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Add to Project (engine.cfg)" -msgstr "Dodaj do Projektu (engine.cfg)" +msgstr "Dodaj do projektu (engine.cfg)" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Languages:" @@ -3241,24 +3254,24 @@ msgstr "Wybierz węzeł do edycji sygnałów i grup." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "Uruchom automatycznie" +msgstr "Ustaw automatycznie" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "Nowa Nazwa Animacji:" +msgstr "Nowa nazwa animacji:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "Nowa Animacja" +msgstr "Nowa animacja" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "Zmień Nazwę Animacji:" +msgstr "Zmień nazwę animacji:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "Usuń Animację" +msgstr "Usuń animację" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" @@ -3271,12 +3284,12 @@ msgstr "BŁĄD: animacja o takiej nazwie już istnieje!" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "Zmień nazwę Animacji" +msgstr "Zmień nazwę animacji" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "Dodaj Animację" +msgstr "Dodaj animację" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" @@ -3288,11 +3301,11 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "Wczytaj Animację" +msgstr "Wczytaj animację" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "Zduplikuj Animacje" +msgstr "Duplikuj animacje" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to copy!" @@ -3304,11 +3317,11 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" -msgstr "Wklejona Animacja" +msgstr "Wklejona animacja" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "Wklej Animację" +msgstr "Wklej animację" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to edit!" @@ -3316,7 +3329,7 @@ msgstr "BŁĄD: Brak animacji do edycji!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" -msgstr "" +msgstr "Odtwórz zaznaczoną animację od tyłu z aktualnej poz. (A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" @@ -3344,11 +3357,11 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create new animation in player." -msgstr "" +msgstr "Stwórz nową animację." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load animation from disk." -msgstr "" +msgstr "Załaduj animację z dysku." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." @@ -3364,7 +3377,7 @@ msgstr "Zapisz jako" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "" +msgstr "Wyświetl listę animacji w odtwarzaczu." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" @@ -3376,19 +3389,19 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "Narzędzia do Animacji" +msgstr "Narzędzia do animacji" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Copy Animation" -msgstr "Skopiuj Animacje" +msgstr "Skopiuj animacje" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "Nowa Animacja" +msgstr "Utwórz nową animację" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "Nazwa Animacji:" +msgstr "Nazwa animacji:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -3438,7 +3451,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix" -msgstr "" +msgstr "Mix" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Auto Restart:" @@ -3475,7 +3488,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "" +msgstr "Czas X-Fade (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Current:" @@ -3547,7 +3560,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." -msgstr "Zaimportuj Animacje.." +msgstr "Zaimportuj animacje.." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Edit Node Filters" @@ -3669,9 +3682,8 @@ msgid "Paste Pose" msgstr "Wklej Pozę" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "Zaznaczenie (Q)" +msgstr "Tryb zaznaczenia" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3693,14 +3705,12 @@ msgid "Alt+RMB: Depth list selection" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "Tryb Przesuwania (W)" +msgstr "Tryb przesuwania" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate Mode" -msgstr "Tryb Rotacji (E)" +msgstr "Tryb Rotacji" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3719,11 +3729,11 @@ msgstr "Tryb przesuwania" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Lock the selected object in place (can't be moved)." -msgstr "Zablokuj wybrany obiekt w miejscu (nie można nim poruszyć)." +msgstr "Zablokuj wybrany obiekt w miejscu (nie można go przesuwać)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Unlock the selected object (can be moved)." -msgstr "Odblokuj wybrany obiekt (można nim poruszyć)." +msgstr "Odblokuj wybrany obiekt (można go przesuwać)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." @@ -3736,7 +3746,7 @@ msgstr "Odblokuj selekcję węzłów podrzędnych." #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "Użyj Przyciągania" +msgstr "Użyj przyciągania" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp @@ -3770,7 +3780,7 @@ msgstr "Szkielet.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Bones" -msgstr "Stwórz Kości" +msgstr "Utwórz Kości" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" @@ -3778,7 +3788,7 @@ msgstr "Wyczyść Kości" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "Stwórz Łańcuch IK" +msgstr "Utwórz Łańcuch IK" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" @@ -3795,11 +3805,11 @@ msgstr "Wyzeruj przybliżenie" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Set.." -msgstr "" +msgstr "Ustaw przybliżenie..." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" -msgstr "Środek zaznaczenia" +msgstr "Wyśrodkowywanie na zaznaczeniu" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" @@ -3842,7 +3852,7 @@ msgstr "" #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Poly" -msgstr "Stwórz Polygon" +msgstr "Utwórz Polygon" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/collision_polygon_editor_plugin.cpp @@ -3891,50 +3901,50 @@ msgstr "" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Thumbnail.." -msgstr "" +msgstr "Miniatura.." #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" -msgstr "" +msgstr "Usuń element %d?" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Add Item" -msgstr "" +msgstr "Dodaj element" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove Selected Item" -msgstr "" +msgstr "Usuń zaznaczony element" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import from Scene" -msgstr "" +msgstr "Import ze sceny" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "" +msgstr "Aktualizuj ze sceny" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" -msgstr "" +msgstr "Element %d" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Items" -msgstr "" +msgstr "Elementy" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" -msgstr "" +msgstr "Edytor listy elementów" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" -msgstr "" +msgstr "Stwórz Occluder Polygon" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Edit existing polygon:" -msgstr "" +msgstr "Edytuj istniejący polygon:" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -4173,7 +4183,7 @@ msgstr "" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Generate AABB" -msgstr "" +msgstr "Generuj AABB" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter From Mesh" @@ -4205,7 +4215,7 @@ msgstr "Powierzchnia" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Volume" -msgstr "" +msgstr "Głośność" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" @@ -4270,7 +4280,7 @@ msgstr "Usuń Punkt" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Close Curve" -msgstr "Zamknij Krzywą" +msgstr "Zamknij krzywą" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" @@ -4298,7 +4308,7 @@ msgstr "Usuń punkt ścieżki" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" -msgstr "Stwórz Mapę UV" +msgstr "Utwórz Mapę UV" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -4376,7 +4386,7 @@ msgstr "Zmień nazwę Zasobu" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Resource" -msgstr "Usuń Zasób" +msgstr "Usuń zasób" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Resource clipboard is empty!" @@ -4417,24 +4427,24 @@ msgstr "" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "16 Bits" -msgstr "" +msgstr "16 Bits" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "8 Bits" -msgstr "" +msgstr "8 Bits" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Stereo" -msgstr "" +msgstr "Stereo" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Mono" -msgstr "" +msgstr "Mono" #: tools/editor/plugins/sample_library_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp msgid "Format" -msgstr "" +msgstr "Format" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Pitch" @@ -4442,7 +4452,7 @@ msgstr "Wysokość" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" -msgstr "Błąd podczas zapisywania tematu" +msgstr "Błąd podczas zapisywania motywu" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Error saving" @@ -4450,7 +4460,7 @@ msgstr "Błąd zapisywania" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Error importing theme" -msgstr "Błąd importowania tematu" +msgstr "Błąd importowania motywu" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Error importing" @@ -4458,11 +4468,11 @@ msgstr "Błąd importowania" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "Zaimportuj temat" +msgstr "Zaimportuj motyw" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save Theme As.." -msgstr "Zapisz Temat Jako.." +msgstr "Zapisz motyw jako.." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Next script" @@ -4484,7 +4494,7 @@ msgstr "Nowy" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save All" -msgstr "Zapisz Wszystko" +msgstr "Zapisz wszystko" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" @@ -4500,20 +4510,19 @@ msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "Przeładuj Temat" +msgstr "Przeładuj motyw" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save Theme" -msgstr "Zapisz Temat" +msgstr "Zapisz motyw" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Save Theme As" -msgstr "Zapisz Temat Jako" +msgstr "Zapisz motyw jako" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "Zamknij Scene" +msgstr "Zamknij pliki pomocy" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4525,7 +4534,7 @@ msgstr "Znajdź.." #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find Next" -msgstr "Znajdź Następny" +msgstr "Znajdź następny" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Debug" @@ -4553,7 +4562,7 @@ msgstr "Kontynuuj" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" -msgstr "" +msgstr "Pozostaw Debugger otwarty" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Window" @@ -4561,11 +4570,11 @@ msgstr "Okno" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Move Left" -msgstr "Przesuń w Lewo" +msgstr "Przesuń w lewo" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Move Right" -msgstr "Przesuń w Prawo" +msgstr "Przesuń w prawo" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Tutorials" @@ -4589,11 +4598,11 @@ msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Go to previous edited document." -msgstr "Idź do poprzednio edytowanego dokumentu." +msgstr "Przejdź do poprzednio edytowanego dokumentu." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "" +msgstr "Przejdź do następnego edytowanego dokumentu." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -4625,23 +4634,23 @@ msgstr "" #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" -msgstr "Przesuń w Górę" +msgstr "Przesuń w górę" #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Down" -msgstr "Przesuń w Dół" +msgstr "Przesuń w dół" #: tools/editor/plugins/script_text_editor.cpp msgid "Indent Left" -msgstr "" +msgstr "Wcięcie w lewo" #: tools/editor/plugins/script_text_editor.cpp msgid "Indent Right" -msgstr "" +msgstr "Wcięcie w prawo" #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Comment" -msgstr "" +msgstr "Ustaw komentarz" #: tools/editor/plugins/script_text_editor.cpp msgid "Clone Down" @@ -4661,20 +4670,20 @@ msgstr "" #: tools/editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "" +msgstr "Usuń wszystkie pułapki" #: tools/editor/plugins/script_text_editor.cpp msgid "Goto Next Breakpoint" -msgstr "" +msgstr "Przejdź do następnej pułapki" #: tools/editor/plugins/script_text_editor.cpp msgid "Goto Previous Breakpoint" -msgstr "" +msgstr "Przejdź do poprzedniej pułapki" #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find Previous" -msgstr "Znajdź Poprzedni" +msgstr "Znajdź poprzedni" #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4683,16 +4692,16 @@ msgstr "Zamień.." #: tools/editor/plugins/script_text_editor.cpp msgid "Goto Function.." -msgstr "Idź do Funkcji.." +msgstr "Przejdź do funkcji.." #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Goto Line.." -msgstr "Idź do Lini.." +msgstr "Przejdź do linii.." #: tools/editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "Pomoc Kontekstowa" +msgstr "Pomoc kontekstowa" #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Vertex" @@ -4776,7 +4785,7 @@ msgstr "" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Comment" -msgstr "" +msgstr "Zmień komentarz" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Add/Remove to Color Ramp" @@ -4804,7 +4813,7 @@ msgstr "" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Remove Shader Graph Node" -msgstr "" +msgstr "Usuń węzeł Shader Graph" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Move Shader Graph Node" @@ -4816,7 +4825,7 @@ msgstr "" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Delete Shader Graph Node(s)" -msgstr "" +msgstr "Usuń węzeł(y) Shader Graph" #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Error: Cyclic Connection Link" @@ -4996,7 +5005,7 @@ msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" -msgstr "" +msgstr "Wstaw klucz animacji" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" @@ -5024,7 +5033,7 @@ msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Default sRGB" -msgstr "" +msgstr "Użyj domyślnie sRGB" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" @@ -5124,7 +5133,7 @@ msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rotate (deg.):" -msgstr "" +msgstr "Obrót (stopnie):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scale (ratio):" @@ -5160,7 +5169,7 @@ msgstr "" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Empty" -msgstr "" +msgstr "Dodaj pusty" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" @@ -5168,19 +5177,19 @@ msgstr "" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "" +msgstr "Zmień FPS animacji" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "(empty)" -msgstr "" +msgstr "(pusty)" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animations" -msgstr "" +msgstr "Animacje" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" -msgstr "" +msgstr "Prędkość (FPS):" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames" @@ -5188,11 +5197,11 @@ msgstr "" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" -msgstr "" +msgstr "Dodaj pusty (wcześniej)" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (After)" -msgstr "" +msgstr "Dodaj pusty (później)" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Up" @@ -5212,7 +5221,7 @@ msgstr "" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "<None>" -msgstr "" +msgstr "<żaden>" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" @@ -5232,7 +5241,7 @@ msgstr "" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Step:" -msgstr "" +msgstr "Krok:" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Separation:" @@ -5248,20 +5257,20 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" -msgstr "" +msgstr "Nie mogę zapisać motywu do pliku:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "" +msgstr "Dodaj wszystkie elementy" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add All" -msgstr "" +msgstr "Dodaj wszystko" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Item" -msgstr "" +msgstr "Usuń element" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" @@ -5273,7 +5282,7 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Template" -msgstr "" +msgstr "Utwórz pusty szablon" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Editor Template" @@ -5281,15 +5290,15 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" -msgstr "" +msgstr "CheckBox Radio1" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio2" -msgstr "" +msgstr "CheckBox Radio2" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "" +msgstr "Element" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Check Item" @@ -5301,15 +5310,15 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "" +msgstr "Ma" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "" +msgstr "Wiele" #: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp msgid "Options" -msgstr "" +msgstr "Opcje" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Have,Many,Several,Options!" @@ -5331,7 +5340,7 @@ msgstr "" #: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp #: tools/editor/script_editor_debugger.cpp msgid "Type:" -msgstr "" +msgstr "Typ:" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" @@ -5339,15 +5348,15 @@ msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Icon" -msgstr "" +msgstr "Ikona" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Style" -msgstr "" +msgstr "Styl" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Color" -msgstr "" +msgstr "Kolor" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -5416,28 +5425,28 @@ msgstr "" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Item name or ID:" -msgstr "" +msgstr "Nazwa elementu lub ID:" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene?" -msgstr "" +msgstr "Utwórz ze sceny?" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" -msgstr "" +msgstr "Połącz ze sceny?" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "" +msgstr "Utwórz ze sceny" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" -msgstr "" +msgstr "Połącz ze sceny" #: tools/editor/plugins/tile_set_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp msgid "Error" -msgstr "" +msgstr "Błąd" #: tools/editor/project_export.cpp msgid "Edit Script Options" @@ -5445,11 +5454,11 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Please export outside the project folder!" -msgstr "" +msgstr "Eksportuj poza folderem projektu!" #: tools/editor/project_export.cpp msgid "Error exporting project!" -msgstr "" +msgstr "Błąd przy eksporcie projektu!" #: tools/editor/project_export.cpp msgid "Error writing the project PCK!" @@ -5457,35 +5466,35 @@ msgstr "" #: tools/editor/project_export.cpp msgid "No exporter for platform '%s' yet." -msgstr "" +msgstr "Brak jeszcze eksportu dla platformy '%s'." #: tools/editor/project_export.cpp msgid "Include" -msgstr "" +msgstr "Zawiera" #: tools/editor/project_export.cpp msgid "Change Image Group" -msgstr "" +msgstr "Zmień grupę obrazków" #: tools/editor/project_export.cpp msgid "Group name can't be empty!" -msgstr "" +msgstr "Nazwa grupy nie może być pusta!" #: tools/editor/project_export.cpp msgid "Invalid character in group name!" -msgstr "" +msgstr "Nieprawidłowy znak w nazwie grupy!" #: tools/editor/project_export.cpp msgid "Group name already exists!" -msgstr "" +msgstr "Nazwa grupy już istnieje!" #: tools/editor/project_export.cpp msgid "Add Image Group" -msgstr "" +msgstr "Dodaj grupę obrazków" #: tools/editor/project_export.cpp msgid "Delete Image Group" -msgstr "" +msgstr "Usuń grupę obrazków" #: tools/editor/project_export.cpp msgid "Atlas Preview" @@ -5493,19 +5502,19 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Project Export Settings" -msgstr "" +msgstr "Opcje eksportu projektu" #: tools/editor/project_export.cpp msgid "Target" -msgstr "" +msgstr "Cel" #: tools/editor/project_export.cpp msgid "Export to Platform" -msgstr "" +msgstr "Eksportuj na platformę" #: tools/editor/project_export.cpp msgid "Resources" -msgstr "" +msgstr "Zasoby" #: tools/editor/project_export.cpp msgid "Export selected resources (including dependencies)." @@ -5513,23 +5522,23 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Export all resources in the project." -msgstr "" +msgstr "Eksportuj wszystkie zasoby w projekcie." #: tools/editor/project_export.cpp msgid "Export all files in the project directory." -msgstr "" +msgstr "Eksportuj wszystkie pliki w katalogu projektu." #: tools/editor/project_export.cpp msgid "Export Mode:" -msgstr "" +msgstr "Tryb eksportu:" #: tools/editor/project_export.cpp msgid "Resources to Export:" -msgstr "" +msgstr "Zasoby do eksportu:" #: tools/editor/project_export.cpp msgid "Action" -msgstr "" +msgstr "Akcja" #: tools/editor/project_export.cpp msgid "" @@ -5546,7 +5555,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Images" -msgstr "" +msgstr "Obrazki" #: tools/editor/project_export.cpp msgid "Keep Original" @@ -5562,7 +5571,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Convert Images (*.png):" -msgstr "" +msgstr "Konwertuj obrazki (*.png):" #: tools/editor/project_export.cpp msgid "Compress for Disk (Lossy) Quality:" @@ -5570,19 +5579,19 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Shrink All Images:" -msgstr "" +msgstr "Zmniejsz wszystkie obrazki:" #: tools/editor/project_export.cpp msgid "Compress Formats:" -msgstr "" +msgstr "Format kompresji:" #: tools/editor/project_export.cpp msgid "Image Groups" -msgstr "" +msgstr "Grupy obrazków" #: tools/editor/project_export.cpp msgid "Groups:" -msgstr "" +msgstr "Grupy:" #: tools/editor/project_export.cpp msgid "Compress Disk" @@ -5590,11 +5599,11 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Compress RAM" -msgstr "" +msgstr "Kompresja RAM" #: tools/editor/project_export.cpp msgid "Compress Mode:" -msgstr "" +msgstr "Tryb kompresji:" #: tools/editor/project_export.cpp msgid "Lossy Quality:" @@ -5606,7 +5615,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Shrink By:" -msgstr "" +msgstr "Zmniejsz o:" #: tools/editor/project_export.cpp msgid "Preview Atlas" @@ -5618,7 +5627,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Images:" -msgstr "" +msgstr "Obrazki:" #: tools/editor/project_export.cpp msgid "Select None" @@ -5626,7 +5635,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Group" -msgstr "" +msgstr "Grupa" #: tools/editor/project_export.cpp msgid "Samples" @@ -5638,11 +5647,11 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Keep" -msgstr "" +msgstr "Bez zmian" #: tools/editor/project_export.cpp msgid "Compress (RAM - IMA-ADPCM)" -msgstr "" +msgstr "Kompresja (RAM - IMA-ADPCM)" #: tools/editor/project_export.cpp msgid "Sampling Rate Limit (Hz):" @@ -5678,7 +5687,7 @@ msgstr "Zaszyfrowany (podaj klucz poniżej)" #: tools/editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" -msgstr "Klucz szyfrujący skrypty (256-bit jako hex):" +msgstr "Klucz szyfrujący skryptu (256-bit jako hex):" #: tools/editor/project_export.cpp msgid "Export PCK/Zip" @@ -5698,7 +5707,7 @@ msgstr "Eksport projektu" #: tools/editor/project_export.cpp msgid "Export Preset:" -msgstr "" +msgstr "Szablon eksportu:" #: tools/editor/project_manager.cpp msgid "Invalid project path, the path must exist!" @@ -5722,7 +5731,7 @@ msgstr "Niepoprawna ścieżka projektu (zmienić cokolwiek?)." #: tools/editor/project_manager.cpp msgid "Couldn't create engine.cfg in project path." -msgstr "Nie można było stworzyć engine.cfg w ścieżce projektu." +msgstr "Nie można było utworzyć engine.cfg w ścieżce projektu." #: tools/editor/project_manager.cpp msgid "The following files failed extraction from package:" @@ -5730,31 +5739,31 @@ msgstr "" #: tools/editor/project_manager.cpp msgid "Package Installed Successfully!" -msgstr "" +msgstr "Pakiet zastał zainstalowany poprawnie!" #: tools/editor/project_manager.cpp msgid "Import Existing Project" -msgstr "" +msgstr "Importuj istniejący projekt" #: tools/editor/project_manager.cpp msgid "Project Path (Must Exist):" -msgstr "Ścieżka Projektu (musi istnieć):" +msgstr "Ścieżka projektu (musi istnieć):" #: tools/editor/project_manager.cpp msgid "Project Name:" -msgstr "Nazwa Projektu:" +msgstr "Nazwa projektu:" #: tools/editor/project_manager.cpp msgid "Create New Project" -msgstr "Stwórz nowy Projekt" +msgstr "Utwórz nowy projekt" #: tools/editor/project_manager.cpp msgid "Project Path:" -msgstr "Ścieżka do Projektu:" +msgstr "Ścieżka do projektu:" #: tools/editor/project_manager.cpp msgid "Install Project:" -msgstr "Zainstaluj Projekt:" +msgstr "Zainstaluj projekt:" #: tools/editor/project_manager.cpp msgid "Install" @@ -5766,7 +5775,7 @@ msgstr "Szukaj" #: tools/editor/project_manager.cpp msgid "New Game Project" -msgstr "Nowy Projekt Gry" +msgstr "Nowy projekt gry" #: tools/editor/project_manager.cpp msgid "That's a BINGO!" @@ -5778,11 +5787,11 @@ msgstr "Projekt bez nazwy" #: tools/editor/project_manager.cpp msgid "Are you sure to open more than one project?" -msgstr "" +msgstr "Czy jesteś pewny że chcesz otworzyć więcej niż jeden projekt?" #: tools/editor/project_manager.cpp msgid "Are you sure to run more than one project?" -msgstr "" +msgstr "Czy jesteś pewny że chcesz uruchomić więcej niż jeden projekt?" #: tools/editor/project_manager.cpp msgid "Remove project from the list? (Folder contents will not be modified)" @@ -5796,7 +5805,7 @@ msgstr "" #: tools/editor/project_manager.cpp msgid "Project Manager" -msgstr "Menedżer projektu" +msgstr "Menedżer projektów" #: tools/editor/project_manager.cpp msgid "Project List" @@ -5811,13 +5820,12 @@ msgid "Scan" msgstr "Skanuj" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Select a Folder to Scan" -msgstr "Wybierz węzeł" +msgstr "Wybierz folder do skanowania" #: tools/editor/project_manager.cpp msgid "New Project" -msgstr "Nowy Projekt" +msgstr "Nowy projekt" #: tools/editor/project_manager.cpp msgid "Exit" @@ -5860,7 +5868,6 @@ msgid "Control+" msgstr "" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp -#, fuzzy msgid "Press a Key.." msgstr "Naciśnij klawisz.." @@ -5870,15 +5877,15 @@ msgstr "" #: tools/editor/project_settings.cpp msgid "Left Button" -msgstr "" +msgstr "Lewy guzik" #: tools/editor/project_settings.cpp msgid "Right Button" -msgstr "" +msgstr "Prawy guzik" #: tools/editor/project_settings.cpp msgid "Middle Button" -msgstr "" +msgstr "Środkowy guzik" #: tools/editor/project_settings.cpp msgid "Wheel Up Button" @@ -5962,11 +5969,11 @@ msgstr "" #: tools/editor/project_settings.cpp msgid "Project Settings (engine.cfg)" -msgstr "Ustawienia Projektu (engine.cfg)" +msgstr "Ustawienia projektu (engine.cfg)" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "General" -msgstr "" +msgstr "Ogólny" #: tools/editor/project_settings.cpp tools/editor/property_editor.cpp msgid "Property:" @@ -5974,11 +5981,11 @@ msgstr "Właściwość:" #: tools/editor/project_settings.cpp msgid "Del" -msgstr "" +msgstr "Usuń" #: tools/editor/project_settings.cpp msgid "Copy To Platform.." -msgstr "" +msgstr "Kopiuj na platformę..." #: tools/editor/project_settings.cpp msgid "Input Map" @@ -5994,19 +6001,19 @@ msgstr "Urządzenie:" #: tools/editor/project_settings.cpp msgid "Index:" -msgstr "" +msgstr "Indeks:" #: tools/editor/project_settings.cpp msgid "Localization" -msgstr "" +msgstr "Lokalizacja" #: tools/editor/project_settings.cpp msgid "Translations" -msgstr "" +msgstr "Tłumaczenia" #: tools/editor/project_settings.cpp msgid "Translations:" -msgstr "" +msgstr "Tłumaczenia:" #: tools/editor/project_settings.cpp msgid "Add.." @@ -6065,7 +6072,6 @@ msgid "File.." msgstr "Plik.." #: tools/editor/property_editor.cpp -#, fuzzy msgid "Dir.." msgstr "Katalog.." @@ -6109,6 +6115,16 @@ msgstr "Globalne" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Zaznacz Punkty" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Tryb zaznaczenia" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6135,7 +6151,7 @@ msgstr "" #: tools/editor/resources_dock.cpp msgid "Create New Resource" -msgstr "Stwórz nowy zasób" +msgstr "Utwórz nowy zasób" #: tools/editor/resources_dock.cpp msgid "Open Resource" @@ -6187,7 +6203,7 @@ msgstr "" #: tools/editor/scene_tree_dock.cpp msgid "Error loading scene from %s" -msgstr "" +msgstr "Błąd przy ładowaniu sceny z %s" #: tools/editor/scene_tree_dock.cpp msgid "Error instancing scene from %s" @@ -6224,14 +6240,12 @@ msgid "Duplicate Node(s)" msgstr "Duplikuj węzeł(y)" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete Node(s)?" -msgstr "Usuń węzeł?" +msgstr "Usuń węzeł(y)?" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "This operation can't be done without a scene." -msgstr "Ta operacja nie może zostać zrobiona bez sceny." +msgstr "Ta operacja nie może zostać wykonana bez sceny." #: tools/editor/scene_tree_dock.cpp msgid "This operation requires a single selected node." @@ -6243,7 +6257,7 @@ msgstr "" #: tools/editor/scene_tree_dock.cpp msgid "Save New Scene As.." -msgstr "Zapisz scene jako ..." +msgstr "Zapisz nową scenę jako ..." #: tools/editor/scene_tree_dock.cpp msgid "Makes Sense!" @@ -6258,9 +6272,8 @@ msgid "Can't operate on nodes the current scene inherits from!" msgstr "" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Remove Node(s)" -msgstr "Usuń węzeł(ły)" +msgstr "Usuń węzeł(y)" #: tools/editor/scene_tree_dock.cpp msgid "Create Node" @@ -6294,11 +6307,11 @@ msgstr "Usuń węzeł (węzły)" #: tools/editor/scene_tree_dock.cpp msgid "Add Child Node" -msgstr "Dodaj węzeł dziecko" +msgstr "Dodaj dziecko węzła" #: tools/editor/scene_tree_dock.cpp msgid "Instance Child Scene" -msgstr "" +msgstr "Instancjonuj dziecko sceny" #: tools/editor/scene_tree_dock.cpp msgid "Change Type" @@ -6314,16 +6327,15 @@ msgstr "Dołącz ze sceny" #: tools/editor/scene_tree_dock.cpp msgid "Save Branch as Scene" -msgstr "Zapisz gałąź jako scene" +msgstr "Zapisz gałąź jako scenę" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "Proszę potwierdzić..." +msgstr "Usuń (bez potwierdzenie)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" -msgstr "Dodaj/Stwórz nowy węzeł" +msgstr "Dodaj/Utwórz nowy węzeł" #: tools/editor/scene_tree_dock.cpp msgid "" @@ -6332,9 +6344,8 @@ msgid "" msgstr "" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Create a new script for the selected node." -msgstr "Stwórz instancje wybranej sceny/scen jako dziecko wybranego węzła." +msgstr "Utwórz nowy skrypt dla zaznaczonego węzła." #: tools/editor/scene_tree_editor.cpp msgid "" @@ -6389,13 +6400,12 @@ msgid "Clear Inheritance" msgstr "Wyczyść dziedziczenie" #: tools/editor/scene_tree_editor.cpp -#, fuzzy msgid "Clear Inheritance? (No Undo!)" msgstr "Wyczyścić dziedziczenie? (Nie można cofnąć!)" #: tools/editor/scene_tree_editor.cpp msgid "Clear!" -msgstr "" +msgstr "Czysto!" #: tools/editor/scene_tree_editor.cpp msgid "Select a Node" @@ -6435,7 +6445,7 @@ msgstr "Niepoprawna ścieżka!" #: tools/editor/script_create_dialog.cpp msgid "Could not create script in filesystem." -msgstr "Nie można było stworzyć skryptu w systemie plików." +msgstr "Nie można było utworzyć skryptu w systemie plików." #: tools/editor/script_create_dialog.cpp msgid "Path is empty" @@ -6463,7 +6473,7 @@ msgstr "Poprawna ścieżka" #: tools/editor/script_create_dialog.cpp msgid "Class Name:" -msgstr "Nazwa Klasy:" +msgstr "Nazwa klasy:" #: tools/editor/script_create_dialog.cpp msgid "Built-In Script" @@ -6527,14 +6537,13 @@ msgstr "Śledzenie stosu (jeśli dotyczy):" #: tools/editor/script_editor_debugger.cpp msgid "Remote Inspector" -msgstr "" +msgstr "Zdalny inspektor" #: tools/editor/script_editor_debugger.cpp msgid "Live Scene Tree:" msgstr "" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote Object Properties: " msgstr "Właściwości zdalnego obiektu: " @@ -6555,7 +6564,6 @@ msgid "Monitors" msgstr "Monitory" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "List of Video Memory Usage by Resource:" msgstr "Zużycie pamięci wideo według zasobów:" @@ -6624,17 +6632,14 @@ msgid "Change Box Shape Extents" msgstr "Zmień rozmiar Box Shape" #: tools/editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Capsule Shape Radius" msgstr "Zmień średnicę Capsule Shape" #: tools/editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Capsule Shape Height" msgstr "Zmień wysokośc Capsule Shape" #: tools/editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Ray Shape Length" msgstr "Zmień długość Ray Shape" diff --git a/tools/translations/pt_BR.po b/tools/translations/pt_BR.po index 14b2d01b27..0b80ed2b0e 100644 --- a/tools/translations/pt_BR.po +++ b/tools/translations/pt_BR.po @@ -2,6 +2,7 @@ # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. # +# António Sarmento <antonio.luis.sarmento@gmail.com>, 2016. # George Marques <george@gmarqu.es>, 2016. # Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016. # @@ -9,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2016-07-15 15:36+0000\n" -"Last-Translator: George Marques <georgemjesus@gmail.com>\n" +"PO-Revision-Date: 2016-08-11 15:38+0000\n" +"Last-Translator: António Sarmento <antonio.luis.sarmento@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -95,14 +96,12 @@ msgid "Stack overflow with stack depth: " msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Função:" +msgstr "Funções:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Variável" +msgstr "Variáveis:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -117,9 +116,8 @@ msgid "Name already in use by another func/var/signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Criar Função" +msgstr "Renomear Função" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -127,53 +125,72 @@ msgid "Rename Variable" msgstr "Renomear Amostra" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Renomear Amostra" +msgstr "Renomear Sinal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Função:" +msgstr "Adicionar Função" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Variável" +msgstr "Adicionar Variável" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Sinais" +msgstr "Adicionar Sinal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Remover Seleção" +msgstr "Remover Função" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Variável" +msgstr "Remover Variável" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Variável" +msgstr "Editando Variável:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Remover Seleção" +msgstr "Remover Sinal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Conectando Sinal:" +msgstr "Editando Sinal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" +msgstr "Adicionar Nó" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" msgstr "Adicionar Nó Filho" #: modules/visual_script/visual_script_editor.cpp @@ -182,11 +199,11 @@ msgid "Add Node(s) From Tree" msgstr "Nó a Partir de Cena" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -208,9 +225,8 @@ msgid "Members:" msgstr "Membros:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Available Nodes:" -msgstr "Nó Tempo de Escala" +msgstr "Nós Disponíveis:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" @@ -230,24 +246,20 @@ msgid "Close" msgstr "Fechar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "Argumentos de Chamada Extras:" +msgstr "Editar Argumentos do Sinal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Variável" +msgstr "Editar Variável:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Alterar Tipo" +msgstr "Alterar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Excluir os arquivos selecionados?" +msgstr "Excluir Selecionados" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -256,8 +268,23 @@ msgstr "Alternar Ponto de interrupção" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Localizar próximo" +msgid "Find Node Type" +msgstr "Localizar Tipo de Nó" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Copiar Pose" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Criar Nó" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Colar Pose" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -295,9 +322,8 @@ msgid ": Invalid argument of type: " msgstr "Nome de classe pai inválido" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Nome de classe pai inválido" +msgstr ": Argumentos inválidos: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -308,12 +334,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -565,7 +585,8 @@ msgstr "Todos os Arquivos (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Abrir" @@ -1108,7 +1129,8 @@ msgstr "Alterar Valor do Vetor" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Pesquisar:" @@ -1357,10 +1379,16 @@ msgid "Create New" msgstr "Criar Novo" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Combinações:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Descrição:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "Buscar Substituição Para:" @@ -1686,10 +1714,6 @@ msgstr "Itens do Tema de GUI:" msgid "Constants:" msgstr "Constantes:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Descrição:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Descrição do Método:" @@ -4510,9 +4534,8 @@ msgid "Save Theme As" msgstr "Salvar Tema Como" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "Clonar Abaixo" +msgstr "Fechar Docs" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -5822,7 +5845,7 @@ msgstr "Escanear" #: tools/editor/project_manager.cpp #, fuzzy msgid "Select a Folder to Scan" -msgstr "Selecione um Nó" +msgstr "Selecione uma Pasta para Scanear" #: tools/editor/project_manager.cpp msgid "New Project" @@ -6116,6 +6139,16 @@ msgstr "Global" msgid "Sections:" msgstr "Seções:" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Selecionar Pontos" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Modo de Seleção (Q)" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "Não se pôde executar a ferramenta PVRTC:" @@ -6326,9 +6359,8 @@ msgid "Save Branch as Scene" msgstr "Salvar Ramo como Cena" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "Confirme Por Favor..." +msgstr "Excluir (Sem Confirmação)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" @@ -6343,9 +6375,8 @@ msgstr "" "existe um nó raiz." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Create a new script for the selected node." -msgstr "Instancia a(s) cena(s) selecionada como filho do nó selecionado." +msgstr "Criar um script novo para o nó selecionado." #: tools/editor/scene_tree_editor.cpp msgid "" diff --git a/tools/translations/pt_PT.po b/tools/translations/pt_PT.po index 4c31b87233..21792d3857 100644 --- a/tools/translations/pt_PT.po +++ b/tools/translations/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-08-10 15:14+0000\n" +"PO-Revision-Date: 2016-08-11 15:42+0000\n" "Last-Translator: António Sarmento <antonio.luis.sarmento@gmail.com>\n" "Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_PT/>\n" @@ -26,173 +26,212 @@ msgstr "Tipo de argumento inválido para convert(), use constantes TYPE_*." #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." msgstr "" +"Número de bytes insuficientes para descodificar, ou o formato é inválido." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" -msgstr "" +msgstr "o argumento \"step\" é zero!" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" -msgstr "" +msgstr "Não é um script com uma instância" #: modules/gdscript/gd_functions.cpp msgid "Not based on a script" -msgstr "" +msgstr "Não é baseado num script" #: modules/gdscript/gd_functions.cpp msgid "Not based on a resource file" -msgstr "" +msgstr "Não é baseado num ficheiro de recurso" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "" +msgstr "Formato de dicionário de instância inválido (falta @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" msgstr "" +"Formato de dicionário de instância inválido (não foi possível carregar o " +"script em @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "" +msgstr "Formato de dicionário de instância inválido (script inválido em @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" -msgstr "" +msgstr "Dicionário de instância inválido (subclasses inválidas)" #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Um nó fez yield sem memória para usar, por favor leia os documentos para " +"saber como fazer yield correctamente!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"O nó fez yield, mas não retornou um estado de função na primeira memória de " +"trabalho." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"O valor de retorno deve ser atribuído ao primeiro elemento da memória de " +"trabalho de nós! Corrija o seu nó por favor." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "O nó retornou uma sequência de saída (output) incorrecta: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" +"A sequência foi encontrada mas não o nó na pilha (stack), faça report de bug!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Stack overflow com a profundidade da pilha (stack): " #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "Funções:" #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" -msgstr "" +msgstr "Variáveis:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" -msgstr "" +msgstr "Sinais:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "O nome não é um identificador válido:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Este nome já está a ser usado por outro func/var/signal:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" -msgstr "" +msgstr "Alterar nome da Função" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "" +msgstr "Alterar nome da Variável" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "Alterar nome do Sinal" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function" -msgstr "" +msgstr "Adicionar Função" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" -msgstr "" +msgstr "Adicionar Variável" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "Adicionar Sinal" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" -msgstr "" +msgstr "Remover Função" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Variable" -msgstr "" +msgstr "Remover Variável" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Variable:" -msgstr "" +msgstr "A editar Variável:" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Signal" -msgstr "" +msgstr "Remover Sinal" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "" +msgstr "A editar Sinal:" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" +msgstr "Adicionar Nó" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Meta to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Adicionar Nó" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Adicionar Nó da Árvore" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Adicionar propriedade Getter" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Adicionar propriedade Setter" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Edit" -msgstr "" +msgstr "Editar" #: modules/visual_script/visual_script_editor.cpp msgid "Base Type:" -msgstr "" +msgstr "Tipo de Base:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" -msgstr "" +msgstr "Membros:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "Nós Disponíveis:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Seleccione ou crie uma função para editar o grafo" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -205,68 +244,81 @@ msgstr "" #: tools/editor/project_settings.cpp tools/editor/property_editor.cpp #: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp msgid "Close" -msgstr "" +msgstr "Fechar" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Signal Arguments:" -msgstr "" +msgstr "Editar Argumentos do Sinal:" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Variable:" -msgstr "" +msgstr "Editar Variável:" #: modules/visual_script/visual_script_editor.cpp msgid "Change" -msgstr "" +msgstr "Alterar" #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" -msgstr "" +msgstr "Apagar Seleccionados" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" +msgstr "Accionar Breakpoint" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "Encontrar Tipo de Nó" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Tipo de Input não iterável: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "O iterador tornou-se inválido" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "O iterador tornou-se inválido: " #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name." -msgstr "" +msgstr "Nome de índice propriedade inválido." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "Objecto de base não é un Nó!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "" +msgstr "Caminho não aponta para nenhum Nó!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Nome de propriedade índice '%s' inválido em nó %s." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "" +msgstr ": Argumento inválido de tipo: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr "" +msgstr ": Argumentos inválidos: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " @@ -277,12 +329,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -482,7 +528,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1018,7 +1065,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1267,10 +1315,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1586,10 +1640,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5949,6 +5999,15 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Adicionar propriedade Setter" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/ro.po b/tools/translations/ro.po index 76e301404d..8e0dc574be 100644 --- a/tools/translations/ro.po +++ b/tools/translations/ro.po @@ -152,11 +152,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -164,6 +188,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -223,7 +251,19 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp @@ -271,12 +311,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -476,7 +510,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1012,7 +1047,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1261,10 +1297,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1580,10 +1622,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5943,6 +5981,14 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/ru.po b/tools/translations/ru.po index 0ae2d02fe0..7b047d9a1e 100644 --- a/tools/translations/ru.po +++ b/tools/translations/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-07-24 17:18+0000\n" +"PO-Revision-Date: 2016-08-17 20:35+0000\n" "Last-Translator: DimOkGamer <dimokgamer@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" @@ -70,40 +70,44 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Узел покинут без рабочей памяти, пожалуйста, прочитайте документацию о том, " +"как правильно выходить!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"Узел покинут, но не возвращает состояние функции в первой рабочей памяти." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"Возвращаемое значение должно быть присвоено первому элементу узла рабочей " +"памяти! Исправьте узел пожалуйста." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Узел вернул ошибочную последовательность: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" +"Найдена последовательность бит, но не узел в стеке, сообщение об ошибке!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Переполнение стека с глубиной стека: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Функция:" +msgstr "Функции:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Переменная" +msgstr "Переменные:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -111,86 +115,102 @@ msgstr "Сигналы:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Имя не является допустимым идентификатором:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Имя уже используется другой функцией/переменной/сигналом:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Сделать функцию" +msgstr "Переименовать функцию" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Переименовать сэмпл" +msgstr "Переименовать переменную" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Signal" -msgstr "Переименовать сэмпл" +msgstr "Переименовать сигнал" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Функция:" +msgstr "Добавить функцию" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Переменная" +msgstr "Добавить переменную" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Сигналы" +msgstr "Добавить сигнал" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Убрать выделение" +msgstr "Удалить функцию" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Переменная" +msgstr "Удалить переменную" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Переменная" +msgstr "Редактирование переменной:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Убрать выделение" +msgstr "Удалить сигнал" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Подключение сигнала:" +msgstr "Редактирование сигнала:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "Добавить дочерний узел" +msgstr "Добавить узел" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Node(s) From Tree" -msgstr "Узел со сцены" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Добавить дочерний узел" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Добавить узел(узлы) из дерева" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Добавить получающее свойство" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Добавить устанавливающее свойство" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -200,22 +220,20 @@ msgid "Edit" msgstr "Редактировать" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Тип информации:" +msgstr "Базовый тип:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" msgstr "Участники:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Available Nodes:" -msgstr "TimeScale узел" +msgstr "Доступные узлы:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Выберите или создайте функцию для редактирования графа" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -231,24 +249,20 @@ msgid "Close" msgstr "Закрыть" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal Arguments:" -msgstr "Дополнительные параметры вызова:" +msgstr "Редактирование аргументов сигнала:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Переменная" +msgstr "Редактировать переменную:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change" -msgstr "Изменить тип" +msgstr "Изменить" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Удалить выбранные файлы?" +msgstr "Удалить выделенное" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -257,72 +271,80 @@ msgstr "Точка остановки" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Найти следующее" +msgid "Find Node Type" +msgstr "Найти тип узла" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Копировать позу" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "Создать узел" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Вставить позу" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Входной тип не итерируемый: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "Итератор стал недействительным" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "Итератор стал недействительным: " #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Invalid index property name." -msgstr "Недопустимое имя вышестоящего класса" +msgstr "Неверный индекс свойства имени." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "Базовый объект не является узлом!" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "Путь не локальный" +msgstr "Путь не приводит к узлу!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Неправильный индекс свойства имени '%s' в узле %s." #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid argument of type: " -msgstr "Недопустимое имя вышестоящего класса" +msgstr ": Недопустимый аргумент типа: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "Недопустимое имя вышестоящего класса" +msgstr ": Недопустимые аргументы: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet не найден в скрипте: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet не найден в скрипте: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" +"Пользовательский узел не имеет метода _step(), не возможно обрабатывать граф." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"Недопустимое значение, возвращаемое _step(), должно быть целое число(seq " +"out) или строка (error)." #: scene/2d/animated_sprite.cpp msgid "" @@ -569,7 +591,8 @@ msgstr "Все файлы (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Открыть" @@ -1061,7 +1084,7 @@ msgstr "Оптимизировать" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." -msgstr "" +msgstr "Выберите AnimationPlayer из дерева сцены для редактирования анимаций." #: tools/editor/animation_editor.cpp msgid "Key" @@ -1113,7 +1136,8 @@ msgstr "Изменить значение массива" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Поиск:" @@ -1271,7 +1295,7 @@ msgstr "Отдалить" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "Сбросить приближение" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1362,10 +1386,16 @@ msgid "Create New" msgstr "Создать новый" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Совпадения:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Описание:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "Поиск замены для:" @@ -1693,10 +1723,6 @@ msgstr "Тема элементов GUI:" msgid "Constants:" msgstr "Константы:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Описание:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Описание методов:" @@ -3676,9 +3702,8 @@ msgid "Paste Pose" msgstr "Вставить позу" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "Режим выделения (Q)" +msgstr "Режим выделения" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3699,14 +3724,12 @@ msgid "Alt+RMB: Depth list selection" msgstr "Alt+ПКМ: Список выбора глубины" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "Режим перемещения (W)" +msgstr "Режим перемещения" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate Mode" -msgstr "Режим поворота (E)" +msgstr "Режим поворота" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -4519,9 +4542,8 @@ msgid "Save Theme As" msgstr "Сохранить тему как" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Docs" -msgstr "Копировать вниз" +msgstr "Закрыть документацию" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -5791,12 +5813,10 @@ msgid "Unnamed Project" msgstr "Безымянный проект" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to open more than one project?" -msgstr "Вы уверены, что открыть несколько проектов?" +msgstr "Вы уверены, что хотите открыть более одного проекта?" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run more than one project?" msgstr "Вы уверены, что хотите запустить более одного проекта?" @@ -5809,6 +5829,8 @@ msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" msgstr "" +"Вы собираетесь сканировать %s папки для существующих проектов Godot. " +"Подтверждаете?" #: tools/editor/project_manager.cpp msgid "Project Manager" @@ -5827,9 +5849,8 @@ msgid "Scan" msgstr "Сканировать" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Select a Folder to Scan" -msgstr "Выбрать узел" +msgstr "Выбрать папку для сканирования" #: tools/editor/project_manager.cpp msgid "New Project" @@ -6123,6 +6144,16 @@ msgstr "Глобальные" msgid "Sections:" msgstr "Разделы:" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Выбрать точки" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Режим выделения" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "Невозможно запустить PVRTC инструмент:" @@ -6198,9 +6229,8 @@ msgid "No parent to instance a child at." msgstr "Нет родителя для добавления потомка." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "No parent to instance the scenes at." -msgstr "Нет родителя для добавления потомка." +msgstr "Нет родителя для добавления сюда сцены." #: tools/editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -6335,9 +6365,8 @@ msgid "Save Branch as Scene" msgstr "Сохранить ветку, как сцену" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" -msgstr "Подтверждение..." +msgstr "Удалить (без подтверждения)" #: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" @@ -6352,9 +6381,8 @@ msgstr "" "не существует." #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Create a new script for the selected node." -msgstr "Добавить выбранную сцену(сцены), как потомка выбранного узла." +msgstr "Создать новый скрипт для выбранного узла." #: tools/editor/scene_tree_editor.cpp msgid "" @@ -6656,6 +6684,13 @@ msgstr "Изменена длинна луча" msgid "Change Notifier Extents" msgstr "Изменены границы уведомителя" +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "Пользовательский узел не имеет _get_output_port_unsequenced(idx,wmem), но " +#~ "неупорядоченные порты были указаны." + #~ msgid "Cannot go into subdir:" #~ msgstr "Невозможно перейти в подпапку:" diff --git a/tools/translations/sk.po b/tools/translations/sk.po index 295c1000fd..4f3175ddd8 100644 --- a/tools/translations/sk.po +++ b/tools/translations/sk.po @@ -163,11 +163,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -175,6 +199,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -234,9 +262,22 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Vložiť" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -282,12 +323,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -494,7 +529,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "Otvoriť" @@ -1031,7 +1067,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1280,10 +1317,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Popis:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1599,10 +1642,6 @@ msgstr "" msgid "Constants:" msgstr "Konštanty:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Popis:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5967,6 +6006,14 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/sl.po b/tools/translations/sl.po index 385779749e..33a9bc3e23 100644 --- a/tools/translations/sl.po +++ b/tools/translations/sl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-08-10 10:28+0000\n" +"PO-Revision-Date: 2016-08-12 09:47+0000\n" "Last-Translator: matevž lapajne <sivar.lapajne@gmail.com>\n" "Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/" "godot/sl/>\n" @@ -21,12 +21,12 @@ msgstr "" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Neveljaven tip argumenta za convert(), use TYPE_* constants." +msgstr "Neveljavena vrsta argumenta za convert(), uporabite TYPE_* konstanto." #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "Ni dovolj bajtov za dekodiranje bajtov, ali neveljaven format." +msgstr "Ni dovolj pomnilnika za dekodiranje bajtov, ali neveljaven format." #: modules/gdscript/gd_functions.cpp msgid "step argument is zero!" @@ -34,7 +34,7 @@ msgstr "stopnja argumenta je nič!" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" -msgstr "Ni skripta z primerom" +msgstr "To ni skripta z instanco" #: modules/gdscript/gd_functions.cpp msgid "Not based on a script" @@ -42,20 +42,20 @@ msgstr "Ne temelji na skripti" #: modules/gdscript/gd_functions.cpp msgid "Not based on a resource file" -msgstr "Ne temelji na viru datoteke" +msgstr "Ne temelji na datoteki virov" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "Neveljaven primer slovarskega formata (manjka @path)" +msgstr "Neveljaven primer formata slovarja (manjka @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" msgstr "" -"Neveljaven primer slovarskega formata (ne morem naložiti skripte ob @path)" +"Neveljaven primer formata slovarja (ni mogoče naložiti skripte iz @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "Neveljaven primer slovarskega formata (neveljavna skripta na @path)" +msgstr "Neveljaven primer formata slovarja (neveljavna skripta v @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" @@ -66,135 +66,170 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"Node je bil sprejet brez potrebnega pomnilnika, pravilen postopek je opisan " +"v dokumentaciji!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" +"Node pridobljen, vendar se ne vrne v funkcijalno stanje v prvem delavnem " +"spominu." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" +"Vrnjena vrednost mora biti dodeljena prvemu elementu v node-delavnemu " +"spominu! Prosim, da popraviš node." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "Node je vrnil napačno zaporedje na izhodu: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" -msgstr "" +msgstr "Zaporedni bit najden, vendar ne node v skladu, prijavi napako!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "Sklad prepoln z stack depth: " #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "Funkcije:" #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" -msgstr "" +msgstr "Spremenljivke:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" -msgstr "" +msgstr "Signali:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "Ime ni pravilen identifikator:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Ime že uporablja druga funkcija/sprem/signal:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" -msgstr "" +msgstr "Preimenuj Funkcijo" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "" +msgstr "Preimenuj Spremenljivko" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "Preimenuj Signal" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function" -msgstr "" +msgstr "Dodaj Funkcijo" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" -msgstr "" +msgstr "Dodaj Spremenljivko" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "Dodaj Signal" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" -msgstr "" +msgstr "Odstrani Funkcijo" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Variable" -msgstr "" +msgstr "Odstrani Spremenljivko" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Variable:" -msgstr "" +msgstr "Urejanje Spremenljivke:" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Signal" -msgstr "" +msgstr "Odstrani Signal" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "" +msgstr "Urejanje Signala:" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" +msgstr "Dodaj Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Meta to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Dodaj Node" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Dodaj Node(e) iz Drevesa" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Dodaj Getter Lastnost" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Dodaj Setter Lastnost" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Edit" -msgstr "" +msgstr "Uredi" #: modules/visual_script/visual_script_editor.cpp msgid "Base Type:" -msgstr "" +msgstr "Osnovni Tip:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" -msgstr "" +msgstr "Člani:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "Na voljo Nodes:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "Izberi ali ustvari funkcijo za urejanje grafa" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -207,92 +242,101 @@ msgstr "" #: tools/editor/project_settings.cpp tools/editor/property_editor.cpp #: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp msgid "Close" -msgstr "" +msgstr "Zapri" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Signal Arguments:" -msgstr "" +msgstr "Uredi Argumente Signala:" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Variable:" -msgstr "" +msgstr "Uredi Spremenljivko:" #: modules/visual_script/visual_script_editor.cpp msgid "Change" -msgstr "" +msgstr "Spremeni" #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" -msgstr "" +msgstr "Izbriši Izbrano" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp msgid "Toggle Breakpoint" +msgstr "Preklopi na Zaustavitev" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Find Node Type" +msgstr "Najdi Node Type" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Paste Nodes" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Vhodni tip ni spremenljiv: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "Iterator je bil neveljaven" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "Iterator je neveljaven: " #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name." -msgstr "" +msgstr "Neveljaven indeks lastnosti imena." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "Osnovni objekt ni Node!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "" +msgstr "Pot ne vodi do Node!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Neveljaven indeks lastnosti imena '%s' v node %s." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "" +msgstr ": Neveljaven argument od tipa: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr "" +msgstr ": Neveljavni argumenti: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGet ni najden v skripti: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "VariableSet ni najden v skripti: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." -msgstr "" +msgstr "Custom node nima _step() metode, grafa ni mogoče obdelati." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"Neveljavna vrnitev vrednosti od _step(), mora biti število (seq out), ali " +"string (error)." #: scene/2d/animated_sprite.cpp msgid "" @@ -307,6 +351,8 @@ msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" +"Le en viden CanvasModulate je dovoljen na sceno (ali niz instanciranih " +"scen). Prvi ustvarjen se bo uporabil, medtem ko bodo drugi prezrti." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -314,10 +360,14 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionPolygon2D služi le, da zagotavlja collision obliko nodu " +"CollisionObject2D, ki izhaja iz njega. Naprošamo vas, da ga uporabite le kot " +"otroka od Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. da jim " +"date obliko." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." -msgstr "" +msgstr "Prazen CollisionPolygon2D nima vpliva na collision." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -325,6 +375,10 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionShape2D služi le, da zagotavlja collision obliko nodu " +"CollisionObject2D, ki izhaja iz njega. Naprošamo vas, da ga uporabite le kot " +"otroka od Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. da jim " +"date obliko." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -486,7 +540,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1022,7 +1077,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1271,10 +1327,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1590,10 +1652,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5953,6 +6011,15 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Dodaj Setter Lastnost" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6472,3 +6539,10 @@ msgstr "" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" msgstr "" + +#~ msgid "" +#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " +#~ "unsequenced ports were specified." +#~ msgstr "" +#~ "Custom node nima _get_output_port_unsequenced(idx,wmem), vendar " +#~ "nezaporedni porti so bili določeni." diff --git a/tools/translations/tools.pot b/tools/translations/tools.pot index e72b46b96b..c86586a055 100644 --- a/tools/translations/tools.pot +++ b/tools/translations/tools.pot @@ -152,11 +152,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -164,6 +188,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -223,7 +251,19 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp @@ -271,12 +311,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -476,7 +510,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1012,7 +1047,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1261,10 +1297,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1580,10 +1622,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5943,6 +5981,14 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/tr.po b/tools/translations/tr.po index 766f13b70e..0c27abe7c5 100644 --- a/tools/translations/tr.po +++ b/tools/translations/tr.po @@ -3,12 +3,13 @@ # This file is distributed under the same license as the Godot source code. # # Enes Kaya Öcal <ekayaocal@hotmail.com>, 2016. +# M. Yavuz Uzun <myavuzuzun@yandex.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-07-25 11:14+0000\n" -"Last-Translator: Enes Kaya Öcal <ekayaocal@hotmail.com>\n" +"PO-Revision-Date: 2016-08-18 00:13+0000\n" +"Last-Translator: M. Yavuz Uzun <myavuzuzun@yandex.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\n" @@ -37,11 +38,11 @@ msgstr "" #: modules/gdscript/gd_functions.cpp msgid "Not based on a script" -msgstr "" +msgstr "Bir koda bağlı değil" #: modules/gdscript/gd_functions.cpp msgid "Not based on a resource file" -msgstr "" +msgstr "Bir kaynak dosyasına bağlı değil" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" @@ -63,7 +64,7 @@ msgstr "" msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" -msgstr "" +msgstr "Çalışan hafıza olmadan düğüm yerleştirilmiş, lütfen belgeleri okuyun!" #: modules/visual_script/visual_script.cpp msgid "" @@ -90,14 +91,12 @@ msgid "Stack overflow with stack depth: " msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Fonksiyon:" +msgstr "Fonksiyonlar:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "Değişken" +msgstr "Değişkenler:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" @@ -105,95 +104,113 @@ msgstr "Sinyaller:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" -msgstr "" +msgstr "İsim doğru bir belirleyici değil:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "Ad zaten başka bir fonksiyon/değişken/sinyal tarafından kullanılıyor:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "Fonksiyon:" +msgstr "Fonksiyonu Yeniden İsimlendir" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "Değişken" +msgstr "Değişkeni Yeniden İsimlendir" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "Sinyali Yeniden İsimlendir" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Function" -msgstr "Fonksiyon:" +msgstr "Fonksiyon Ekle" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Variable" -msgstr "Değişken" +msgstr "Değişken Ekle" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Signal" -msgstr "Sinyaller:" +msgstr "Sinyal Ekle" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "Seçimi Kaldır" +msgstr "Fonksiyonu Kaldır" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Variable" -msgstr "Değişken" +msgstr "Değişkeni Kaldır" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Variable:" -msgstr "Değişken" +msgstr "Değişken Düzenleniyor:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Signal" -msgstr "Seçimi Kaldır" +msgstr "Sinyali Kaldır" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Editing Signal:" -msgstr "Sinyaller:" +msgstr "Sinyal Düzenleniyor:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node" -msgstr "AutoLoad ekle" +msgstr "Düğüm Ekle" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "Düğüm Ekle" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "Ağaçtan Düğüm(ler) Ekle" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "Alıcı Özellik Ekle" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Düzenleyici Özellik Ekle" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Edit" -msgstr "" +msgstr "Düzenle" #: modules/visual_script/visual_script_editor.cpp msgid "Base Type:" -msgstr "" +msgstr "Taban Tipi:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" @@ -225,18 +242,16 @@ msgid "Edit Signal Arguments:" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable:" -msgstr "Değişken" +msgstr "Değişkeni Düzenle:" #: modules/visual_script/visual_script_editor.cpp msgid "Change" -msgstr "" +msgstr "Değiştir" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "Seçili dosyaları sil?" +msgstr "Seçilenleri Sil" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -244,9 +259,23 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "Kaynağı Kopyala" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "Kaynağı Yapıştır" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -295,12 +324,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -475,7 +498,7 @@ msgstr "İptal" #: scene/gui/dialogs.cpp tools/editor/scene_tree_dock.cpp msgid "OK" -msgstr "NoTamam" +msgstr "Tamam" #: scene/gui/dialogs.cpp msgid "Alert!" @@ -500,17 +523,18 @@ msgstr "Tüm dosyalar (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" -msgstr "Açık" +msgstr "Aç" #: scene/gui/file_dialog.cpp msgid "Open a File" -msgstr "" +msgstr "Bir Dosya Aç" #: scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "" +msgstr "Dosya(ları) aç" #: scene/gui/file_dialog.cpp msgid "Open a Directory" @@ -588,7 +612,7 @@ msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Meta+" -msgstr "" +msgstr "Meta+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Device" @@ -1028,7 +1052,7 @@ msgstr "Diziyi Yeniden Boyutlandır" #: tools/editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "" +msgstr "Dizinin türünü degistir" #: tools/editor/array_property_edit.cpp msgid "Change Array Value" @@ -1036,7 +1060,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "Ara:" @@ -1047,7 +1072,7 @@ msgstr "Sırala:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Reverse" -msgstr "" +msgstr "Tersi" #: tools/editor/asset_library_editor_plugin.cpp #: tools/editor/project_settings.cpp @@ -1210,7 +1235,7 @@ msgstr "" #: tools/editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "" +msgstr "Düğüme bağlan:" #: tools/editor/connections_dialog.cpp #: tools/editor/editor_autoload_settings.cpp tools/editor/groups_editor.cpp @@ -1285,10 +1310,16 @@ msgid "Create New" msgstr "Yeni oluştur" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "Eşleşmeler:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "Açıklama:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1358,9 +1389,8 @@ msgid "Remove selected files from the project? (no undo)" msgstr "Seçili dosyaları projeden kaldır? (Geri alınamaz)" #: tools/editor/dependency_editor.cpp -#, fuzzy msgid "Error loading:" -msgstr "Yüklemede hata:" +msgstr "Yüklerken hata:" #: tools/editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" @@ -1611,10 +1641,6 @@ msgstr "Arayüz Tema Öğeleri:" msgid "Constants:" msgstr "Sabitler:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "Açıklama:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "Metot Açıklaması:" @@ -3127,34 +3153,34 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "" +msgstr "Yeni Animasyon" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "" +msgstr "Animasyonun adını değiştir:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "Animasyonu Kaldır" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" -msgstr "" +msgstr "HATA: Geçersiz animasyon adı!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Animation name already exists!" -msgstr "" +msgstr "HATA: Bu animasyonun adı zaten var!" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "" +msgstr "Animasyonu Yeniden İsimlendir" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "" +msgstr "Animasyon Ekle" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" @@ -3166,15 +3192,15 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "" +msgstr "Animasyon Yükle" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "" +msgstr "Animasyonu Yeniden Çıkar" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to copy!" -msgstr "" +msgstr "HATA: Kopyalamak için bir animasyon yok!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation resource on clipboard!" @@ -3190,7 +3216,7 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to edit!" -msgstr "" +msgstr "HATA: Düzenlemek için bir animasyon yok!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -5981,6 +6007,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "Düzenleyici Özellik Ekle" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "Bir Düğüm Seç" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6336,7 +6372,7 @@ msgstr "Sınıf Adı:" #: tools/editor/script_create_dialog.cpp msgid "Built-In Script" -msgstr "" +msgstr "Gömme Betik" #: tools/editor/script_create_dialog.cpp msgid "Create Node Script" @@ -6344,7 +6380,7 @@ msgstr "Düğüm Betiği Oluştur" #: tools/editor/script_editor_debugger.cpp msgid "Bytes:" -msgstr "" +msgstr "Baytlar:" #: tools/editor/script_editor_debugger.cpp msgid "Warning" diff --git a/tools/translations/ur_PK.po b/tools/translations/ur_PK.po index 99233af8c9..0ac56d847b 100644 --- a/tools/translations/ur_PK.po +++ b/tools/translations/ur_PK.po @@ -162,11 +162,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -174,6 +198,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -233,7 +261,19 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp @@ -281,12 +321,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -486,7 +520,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1023,7 +1058,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1272,10 +1308,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1594,10 +1636,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5962,6 +6000,14 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" diff --git a/tools/translations/zh_CN.po b/tools/translations/zh_CN.po index ce045b495a..a53d4ba4ed 100644 --- a/tools/translations/zh_CN.po +++ b/tools/translations/zh_CN.po @@ -3,15 +3,17 @@ # This file is distributed under the same license as the Godot source code. # # 纯洁的坏蛋 <tqj.zyy@gmail.com>, 2016. +# 孤月蓝风 <trlanfeng@foxmail.com>, 2016. # Geequlim <geequlim@gmail.com>, 2016. # Luo Jun <vipsbpig@gmail.com>, 2016. +# wanfang liu <wanfang.liu@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-08-10 17:36+0000\n" -"Last-Translator: Luo Jun <vipsbpig@gmail.com>\n" +"PO-Revision-Date: 2016-08-23 09:17+0000\n" +"Last-Translator: 孤月蓝风 <trlanfeng@foxmail.com>\n" "Language-Team: Chinese (China) <https://hosted.weblate.org/projects/godot-" "engine/godot/zh_CN/>\n" "Language: zh_CN\n" @@ -68,30 +70,31 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" +"一个节点在无工作内存的情况下被yielded,请阅读文档来查看如何适当的yield!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." -msgstr "" +msgstr "节点已yielded,但并没有在第一个工作内存中返回一个函数状态。" #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." -msgstr "" +msgstr "节点工作内存的第一个节点的返回值必须已赋值!请修正你的节点。" #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "" +msgstr "节点返回了一个无效的连续输出: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" -msgstr "" +msgstr "在非堆栈中的节点中找到连续bit,报告bug!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "" +msgstr "堆栈深度溢出: " #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -99,71 +102,70 @@ msgid "Functions:" msgstr "函数:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Variables:" -msgstr "变量" +msgstr "变量:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" msgstr "事件:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Name is not a valid identifier:" -msgstr "" +msgstr "名称不是有效的标识符:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Name already in use by another func/var/signal:" -msgstr "" +msgstr "名称已经被其他的函数/变量/信号占用:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Function" -msgstr "创建方法" +msgstr "重命名函数" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Rename Variable" -msgstr "重命名音效" +msgstr "重命名变量" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Rename Signal" -msgstr "重命名音效" +msgstr "重命名信号" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Add Function" -msgstr "函数:" +msgstr "添加函数" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Add Variable" -msgstr "变量" +msgstr "添加变量" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Add Signal" -msgstr "信号" +msgstr "添加信号" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Remove Function" -msgstr "移除选中项" +msgstr "移除函数" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Remove Variable" -msgstr "变量" +msgstr "移除变量" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Editing Variable:" -msgstr "变量" +msgstr "编辑变量:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Remove Signal" -msgstr "移除选中项" +msgstr "移除信号" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -176,17 +178,46 @@ msgid "Add Node" msgstr "添加子节点" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "添加子节点" + +#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Add Node(s) From Tree" msgstr "从场景导入节点" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" -msgstr "" +msgid "Add Getter Property" +msgstr "添加访问器属性" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" -msgstr "" +msgid "Add Setter Property" +msgstr "添加设置器" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp @@ -198,21 +229,21 @@ msgid "Edit" msgstr "编辑" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "数据类型:" +msgstr "基础类型:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Members:" -msgstr "成员:" +msgstr "成员:" #: modules/visual_script/visual_script_editor.cpp msgid "Available Nodes:" -msgstr "" +msgstr "有效节点:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Select or create a function to edit graph" -msgstr "" +msgstr "在 edit graph 中选择或者建立一个函数" #: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp #: tools/editor/connections_dialog.cpp @@ -254,20 +285,35 @@ msgstr "切换断点" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" +msgid "Find Node Type" msgstr "查找下一项" +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Copy Nodes" +msgstr "拷贝姿势" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Cut Nodes" +msgstr "新节点" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "粘贴姿势" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "输入类型不可迭代: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "迭代器失效" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "迭代器失效: " #: modules/visual_script/visual_script_func_nodes.cpp #, fuzzy @@ -276,7 +322,7 @@ msgstr "基类名称非法" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "" +msgstr "基础对象不是一个节点!" #: modules/visual_script/visual_script_func_nodes.cpp #, fuzzy @@ -285,31 +331,23 @@ msgstr "必须是项目路径" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "节点%s的'%s'为无效索引属性名。" #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid argument of type: " -msgstr "基类名称非法" +msgstr ":无效参数类型: " #: modules/visual_script/visual_script_nodes.cpp -#, fuzzy msgid ": Invalid arguments: " -msgstr "基类名称非法" +msgstr ":无效参数: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "脚本中未找到VariableGet: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +msgstr "脚本中未找到VariableSet: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." @@ -319,7 +357,7 @@ msgstr "" msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." -msgstr "" +msgstr "_step()的返回值无效,必须是整形(seq out),或字符串(error)。" #: scene/2d/animated_sprite.cpp msgid "" @@ -539,7 +577,8 @@ msgstr "所有文件(*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "打开" @@ -1032,7 +1071,7 @@ msgstr "优化" #: tools/editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." -msgstr "" +msgstr "在场景树中选择一个AnimationPlayer来编辑动画。" #: tools/editor/animation_editor.cpp msgid "Key" @@ -1084,7 +1123,8 @@ msgstr "修改数组值" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "搜索:" @@ -1242,7 +1282,7 @@ msgstr "缩小" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "重置缩放" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1335,10 +1375,16 @@ msgid "Create New" msgstr "新建" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "匹配项:" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "描述:" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "搜索替换:" @@ -1654,10 +1700,6 @@ msgstr "GUI主题:" msgid "Constants:" msgstr "常量:" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "描述:" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "方法描述:" @@ -2011,7 +2053,7 @@ msgstr "前往上一个打开的场景。" #: tools/editor/editor_node.cpp msgid "Fullscreen Mode" -msgstr "" +msgstr "全屏模式" #: tools/editor/editor_node.cpp msgid "Distraction Free Mode" @@ -2998,7 +3040,7 @@ msgstr "源贴图:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Base Atlas Texture" -msgstr "" +msgstr "基础图集纹理" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s)" @@ -3261,7 +3303,7 @@ msgstr "从结束时间倒放选中动画(Shift+A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" -msgstr "" +msgstr "停止动画回放。(S)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" @@ -3276,8 +3318,9 @@ msgid "Animation position (in seconds)." msgstr "动画位置(单位:秒)" #: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy msgid "Scale animation playback globally for the node." -msgstr "" +msgstr "节点全局缩放动画回放" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create new animation in player." @@ -3472,7 +3515,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeScale Node" -msgstr "" +msgstr "时间缩放节点" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeSeek Node" @@ -3480,7 +3523,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Transition Node" -msgstr "" +msgstr "过渡节点" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." @@ -3557,7 +3600,7 @@ msgstr "预览" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "" +msgstr "设置吸附" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp @@ -3670,7 +3713,7 @@ msgstr "恢复节点的子孙能够被选中。" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "" +msgstr "使用吸附" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp @@ -3679,24 +3722,24 @@ msgstr "显示网格" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "" +msgstr "使用旋转吸附" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "" +msgstr "相对吸附" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap.." -msgstr "" +msgstr "设置吸附.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "" +msgstr "使用像素吸附" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Expand to Parent" -msgstr "" +msgstr "展开父节点" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton.." @@ -3769,7 +3812,7 @@ msgstr "设置值" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap (Pixels):" -msgstr "" +msgstr "吸附(像素):" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -3999,7 +4042,7 @@ msgstr "" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Couldn't map area." -msgstr "" +msgstr "无法绘制区域。" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" @@ -4007,7 +4050,7 @@ msgstr "选择源Mesh:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "" +msgstr "选择一个目标曲面:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" @@ -4019,7 +4062,7 @@ msgstr "" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "" +msgstr "目标曲面:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" @@ -6052,6 +6095,16 @@ msgstr "全局" msgid "Sections:" msgstr "选项:" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "选择顶点" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "选择模式(Q)" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "无法执行PVPTC工具:" @@ -6572,8 +6625,9 @@ msgid "Change Ray Shape Length" msgstr "" #: tools/editor/spatial_editor_gizmos.cpp +#, fuzzy msgid "Change Notifier Extents" -msgstr "" +msgstr "更改通知器级别" #~ msgid "Cannot go into subdir:" #~ msgstr "无法打开目录:" diff --git a/tools/translations/zh_HK.po b/tools/translations/zh_HK.po index 71e2a699b1..1d2ab3f8fb 100644 --- a/tools/translations/zh_HK.po +++ b/tools/translations/zh_HK.po @@ -2,18 +2,21 @@ # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. # -# Wesley <ZX_WT@ymail.com>, 2016. +# Wesley (zx-wt) <ZX_WT@ymail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2016-05-30 16:42+0800\n" -"Last-Translator: Wesley <ZX_WT@ymail.com>\n" -"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" +"PO-Revision-Date: 2016-08-13 09:55+0000\n" +"Last-Translator: zx-wt <ZX_WT@ymail.com>\n" +"Language-Team: Chinese (Hong Kong) <https://hosted.weblate.org/projects/" +"godot-engine/godot/zh_HK/>\n" "Language: zh_HK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.8-dev\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -98,7 +101,7 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp msgid "Signals:" -msgstr "" +msgstr "訊號:" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" @@ -132,7 +135,7 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "新增訊號" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -159,21 +162,50 @@ msgstr "連接" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" +msgstr "新增節點" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Preload Node" +msgstr "新增節點" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "由主幹新增節點" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -225,9 +257,8 @@ msgid "Change" msgstr "當改變時更新" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete Selected" -msgstr "要刪除選中檔案?" +msgstr "刪除選中檔案" #: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -235,9 +266,22 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" msgstr "" +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Paste Nodes" +msgstr "貼上" + #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " msgstr "" @@ -283,12 +327,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -459,23 +497,23 @@ msgstr "" #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" -msgstr "" +msgstr "取消" #: scene/gui/dialogs.cpp tools/editor/scene_tree_dock.cpp msgid "OK" -msgstr "" +msgstr "OK" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "" +msgstr "警告!" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "" +msgstr "請確認..." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "File Exists, Overwrite?" -msgstr "" +msgstr "檔案已存在, 要覆蓋嗎?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" @@ -483,33 +521,31 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" -msgstr "" +msgstr "所有檔案(*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "開啟" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File" -msgstr "儲存檔案" +msgstr "開啟檔案" #: scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "" +msgstr "開啟檔案" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "選擇資料夾" +msgstr "開啟資料夾" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "選擇資料夾" +msgstr "選擇資料夾/檔案" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -532,26 +568,26 @@ msgstr "新增資料夾" #: tools/editor/io_plugins/editor_font_import_plugin.cpp #: tools/editor/script_create_dialog.cpp msgid "Path:" -msgstr "路徑" +msgstr "路徑:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" -msgstr "" +msgstr "資料夾和檔案:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/script_editor_debugger.cpp msgid "File:" -msgstr "檔案" +msgstr "檔案:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Filter:" -msgstr "" +msgstr "篩選:" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Name:" -msgstr "名稱" +msgstr "名稱:" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp @@ -560,7 +596,7 @@ msgstr "無法新增資料夾" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Must use a valid extension." -msgstr "" +msgstr "請用有效的副檔名" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -583,7 +619,7 @@ msgstr "" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Device" -msgstr "" +msgstr "設備" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Button" @@ -591,27 +627,28 @@ msgstr "" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Left Button." -msgstr "" +msgstr "左𨫡" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Right Button." -msgstr "" +msgstr "右𨫡" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Middle Button." -msgstr "" +msgstr "中𨫡" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Wheel Up." -msgstr "" +msgstr "上滾" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Wheel Down." -msgstr "" +msgstr "下滾" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#, fuzzy msgid "Axis" -msgstr "" +msgstr "中軸" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -692,7 +729,7 @@ msgstr "無效字型" #: tools/editor/animation_editor.cpp msgid "Disabled" -msgstr "" +msgstr "已停用" #: tools/editor/animation_editor.cpp msgid "All Selection" @@ -776,9 +813,8 @@ msgid "Duplicate Transposed" msgstr "" #: tools/editor/animation_editor.cpp -#, fuzzy msgid "Remove Selection" -msgstr "只限選中" +msgstr "移除選項" #: tools/editor/animation_editor.cpp msgid "Continuous" @@ -1029,7 +1065,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1068,9 +1105,8 @@ msgid "Community" msgstr "" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "設定" +msgstr "測試" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -1142,7 +1178,7 @@ msgstr "" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp msgid "Find" -msgstr "" +msgstr "查找" #: tools/editor/code_editor.cpp msgid "Next" @@ -1162,7 +1198,7 @@ msgstr "替換為" #: tools/editor/code_editor.cpp msgid "Case Sensitive" -msgstr "" +msgstr "符合大小寫" #: tools/editor/code_editor.cpp msgid "Backwards" @@ -1179,16 +1215,16 @@ msgstr "跳過" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom In" -msgstr "" +msgstr "放大" #: tools/editor/code_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Out" -msgstr "" +msgstr "縮小" #: tools/editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "重設縮放比例" #: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Line:" @@ -1255,9 +1291,8 @@ msgid "Connect '%s' to '%s'" msgstr "由 '%s' 連到 '%s'" #: tools/editor/connections_dialog.cpp -#, fuzzy msgid "Connecting Signal:" -msgstr "連接" +msgstr "連接訊號:" #: tools/editor/connections_dialog.cpp msgid "Create Subscription" @@ -1274,17 +1309,23 @@ msgstr "中斷" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "訊號" #: tools/editor/create_dialog.cpp msgid "Create New" -msgstr "" +msgstr "新增" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1421,14 +1462,12 @@ msgid "Invalid name. Must not collide with an existing global constant name." msgstr "" #: tools/editor/editor_autoload_settings.cpp -#, fuzzy msgid "Invalid Path." -msgstr "有效路徑" +msgstr "有效的路徑" #: tools/editor/editor_autoload_settings.cpp -#, fuzzy msgid "File does not exist." -msgstr "檔案已存在" +msgstr "檔案不存在." #: tools/editor/editor_autoload_settings.cpp msgid "Not in resource path." @@ -1534,9 +1573,8 @@ msgid "Toggle Mode" msgstr "" #: tools/editor/editor_file_dialog.cpp -#, fuzzy msgid "Focus Path" -msgstr "複製" +msgstr "" #: tools/editor/editor_file_dialog.cpp #, fuzzy @@ -1558,7 +1596,7 @@ msgstr "最近:" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "預覽" +msgstr "預覽:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" @@ -1605,10 +1643,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -1659,7 +1693,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Importing:" -msgstr "導入中" +msgstr "導入中:" #: tools/editor/editor_node.cpp msgid "Node From Scene" @@ -1900,9 +1934,8 @@ msgid "" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pick a Main Scene" -msgstr "儲存場景" +msgstr "選擇主場景" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" @@ -1993,9 +2026,8 @@ msgid "Save Scene" msgstr "儲存場景" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Save all Scenes" -msgstr "儲存場景" +msgstr "儲存所有場景" #: tools/editor/editor_node.cpp msgid "Close Scene" @@ -2096,9 +2128,8 @@ msgid "Pause the scene" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" -msgstr "儲存場景" +msgstr "暫停場景" #: tools/editor/editor_node.cpp msgid "Stop the scene." @@ -2110,23 +2141,20 @@ msgid "Stop" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the edited scene." -msgstr "請先儲存場景" +msgstr "運行修改的場景" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "儲存場景" +msgstr "運行場景" #: tools/editor/editor_node.cpp msgid "Play custom scene" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Custom Scene" -msgstr "儲存場景" +msgstr "運行場景" #: tools/editor/editor_node.cpp msgid "Debug options" @@ -2189,9 +2217,8 @@ msgid "" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "當改變時更新" +msgstr "同步更新腳本" #: tools/editor/editor_node.cpp msgid "" @@ -2435,7 +2462,7 @@ msgstr "" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "場景路徑" +msgstr "場景路徑:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" @@ -2482,9 +2509,8 @@ msgid "View Owners.." msgstr "" #: tools/editor/filesystem_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "複製" +msgstr "複製路徑" #: tools/editor/filesystem_dock.cpp msgid "Rename or Move.." @@ -3238,9 +3264,8 @@ msgid "Save the current animation" msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Save As" -msgstr "另存為.." +msgstr "另存為" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -3549,9 +3574,8 @@ msgid "Paste Pose" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "不選" +msgstr "選擇模式" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3570,9 +3594,8 @@ msgid "Alt+RMB: Depth list selection" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Mode" -msgstr "下移" +msgstr "移動模式" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate Mode" @@ -4341,9 +4364,8 @@ msgid "Save Theme As.." msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Next script" -msgstr "下一個" +msgstr "下一個腳本" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Previous script" @@ -5984,6 +6006,16 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Property" +msgstr "選擇模式" + +#: tools/editor/property_selector.cpp +#, fuzzy +msgid "Select Method" +msgstr "選擇模式" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" @@ -6386,7 +6418,7 @@ msgstr "" #: tools/editor/script_editor_debugger.cpp msgid "Errors:" -msgstr "錯誤" +msgstr "錯誤:" #: tools/editor/script_editor_debugger.cpp msgid "Stack Trace (if applicable):" diff --git a/tools/translations/zh_TW.po b/tools/translations/zh_TW.po index 17e7673fc3..9be46b18e8 100644 --- a/tools/translations/zh_TW.po +++ b/tools/translations/zh_TW.po @@ -158,11 +158,35 @@ msgid "Add Node" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Node(s) From Tree" +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Setter Property" +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -170,6 +194,10 @@ msgid "Add Getter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -229,7 +257,19 @@ msgid "Toggle Breakpoint" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Find Node Tyoe" +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" msgstr "" #: modules/visual_script/visual_script_flow_control.cpp @@ -277,12 +317,6 @@ msgid "VariableSet not found in script: " msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" - -#: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" @@ -488,7 +522,8 @@ msgstr "" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp #: tools/editor/filesystem_dock.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Open" msgstr "" @@ -1024,7 +1059,8 @@ msgstr "" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp #: tools/editor/settings_config_dialog.cpp msgid "Search:" msgstr "" @@ -1273,10 +1309,16 @@ msgid "Create New" msgstr "" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_selector.cpp tools/editor/quick_open.cpp msgid "Matches:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/property_selector.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" msgstr "" @@ -1592,10 +1634,6 @@ msgstr "" msgid "Constants:" msgstr "" -#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp -msgid "Description:" -msgstr "" - #: tools/editor/editor_help.cpp msgid "Method Description:" msgstr "" @@ -5955,6 +5993,14 @@ msgstr "" msgid "Sections:" msgstr "" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "" |