diff options
419 files changed, 53245 insertions, 14480 deletions
diff --git a/.travis.yml b/.travis.yml index 3c7ee5c102..d76fcca791 100644 --- a/.travis.yml +++ b/.travis.yml @@ -69,8 +69,8 @@ addons: before_script: - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; brew install scons; fi - if [ "$TRAVIS_OS_NAME" = "osx" ] && [ "$GODOT_TARGET" = "android" ]; then - brew update; brew install -v android-sdk; - brew install -v android-ndk | grep -v "inflating:" | grep -v "creating:"; + brew update; travis_wait 20 brew install -v android-sdk; + travis_wait 20 brew install -v android-ndk | grep -v "inflating:" | grep -v "creating:"; export ANDROID_HOME=/usr/local/opt/android-sdk; export ANDROID_NDK_ROOT=/usr/local/opt/android-ndk; fi diff --git a/SConstruct b/SConstruct index d168820f66..524fb3fef5 100644 --- a/SConstruct +++ b/SConstruct @@ -16,7 +16,6 @@ platform_list = [] # list of platforms platform_opts = {} # options for each platform platform_flags = {} # flags for each platform - active_platforms=[] active_platform_ids=[] platform_exporters=[] @@ -55,12 +54,12 @@ methods.save_active_platforms(active_platforms,active_platform_ids) custom_tools=['default'] -platform_arg = ARGUMENTS.get("platform", False) +platform_arg = ARGUMENTS.get("platform", ARGUMENTS.get("p", False)) if (os.name=="posix"): pass elif (os.name=="nt"): - if (os.getenv("VSINSTALLDIR")==None or platform_arg=="android"): + if (not methods.msvc_is_detected() or platform_arg=="android"): custom_tools=['mingw'] env_base=Environment(tools=custom_tools); @@ -138,7 +137,8 @@ opts.Add('etc1','etc1 Texture compression support (yes/no)','yes') opts.Add('builtin_zlib','Use built-in zlib (yes/no)','yes') opts.Add('openssl','Use OpenSSL (yes/no/builtin)','no') opts.Add('musepack','Musepack Audio (yes/no)','yes') -opts.Add("CXX", "Compiler"); +opts.Add("CXX", "C++ Compiler") +opts.Add("CC", "C Compiler") opts.Add("CCFLAGS", "Custom flags for the C++ compiler"); opts.Add("CFLAGS", "Custom flags for the C compiler"); opts.Add("LINKFLAGS", "Custom flags for the linker"); diff --git a/bin/tests/test_gdscript.cpp b/bin/tests/test_gdscript.cpp index 4457d70b38..43d65f782b 100644 --- a/bin/tests/test_gdscript.cpp +++ b/bin/tests/test_gdscript.cpp @@ -222,6 +222,7 @@ static String _parser_expr(const GDParser::Node *p_expr) { case GDParser::OperatorNode::OP_BIT_AND: { txt=_parser_expr(c_node->arguments[0])+"&"+_parser_expr(c_node->arguments[1]); } break;; case GDParser::OperatorNode::OP_BIT_OR: { txt=_parser_expr(c_node->arguments[0])+"|"+_parser_expr(c_node->arguments[1]); } break; case GDParser::OperatorNode::OP_BIT_XOR: { txt=_parser_expr(c_node->arguments[0])+"^"+_parser_expr(c_node->arguments[1]); } break; + default: {} } diff --git a/bin/tests/test_math.cpp b/bin/tests/test_math.cpp index 4b686e8af8..e5667bff64 100644 --- a/bin/tests/test_math.cpp +++ b/bin/tests/test_math.cpp @@ -40,12 +40,376 @@ #include "scene/resources/texture.h" #include "vmap.h" #include "os/os.h" +#include "os/file_access.h" #include "method_ptrcall.h" namespace TestMath { +class GetClassAndNamespace { + + String code; + int idx; + int line; + String error_str; + bool error; + Variant value; + + String class_name; + + enum Token { + TK_BRACKET_OPEN, + TK_BRACKET_CLOSE, + TK_CURLY_BRACKET_OPEN, + TK_CURLY_BRACKET_CLOSE, + TK_PERIOD, + TK_COLON, + TK_COMMA, + TK_SYMBOL, + TK_IDENTIFIER, + TK_STRING, + TK_NUMBER, + TK_EOF, + TK_ERROR + }; + + + Token get_token() { + + while (true) { + switch(code[idx]) { + + case '\n': { + + line++; + idx++; + break; + }; + case 0: { + return TK_EOF; + + } break; + case '{': { + + idx++; + return TK_CURLY_BRACKET_OPEN; + }; + case '}': { + + idx++; + return TK_CURLY_BRACKET_CLOSE; + }; + case '[': { + + idx++; + return TK_BRACKET_OPEN; + }; + case ']': { + + idx++; + return TK_BRACKET_CLOSE; + }; + case ':': { + + idx++; + return TK_COLON; + }; + case ',': { + + idx++; + return TK_COMMA; + }; + case '.': { + + idx++; + return TK_PERIOD; + }; + case '#': { + //compiler directive + while(code[idx]!='\n' && code[idx]!=0) { + idx++; + } + continue; + } break; + case '/': { + + + switch(code[idx+1]) { + case '*': { // block comment + + idx+=2; + while(true) { + if (code[idx]==0) { + error_str="Unterminated comment"; + error=true; + return TK_ERROR; + } if (code[idx]=='*' &&code[idx+1]=='/') { + + idx+=2; + break; + } if (code[idx]=='\n') { + line++; + } + + idx++; + } + + } break; + case '/': { // line comment skip + + while(code[idx]!='\n' && code[idx]!=0) { + idx++; + } + + } break; + default: { + value="/"; + idx++; + return TK_SYMBOL; + } + + } + + continue; // a comment + } break; + case '\'': + case '"': { + + CharType begin_str = code[idx]; + idx++; + String tk_string=String(); + while(true) { + if (code[idx]==0) { + error_str="Unterminated String"; + error=true; + return TK_ERROR; + } else if (code[idx]==begin_str) { + idx++; + break; + } else if (code[idx]=='\\') { + //escaped characters... + idx++; + CharType next = code[idx]; + if (next==0) { + error_str="Unterminated String"; + error=true; + return TK_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; + /* too much, not needed for now + case 'u': { + //hexnumbarh - oct is deprecated + + + for(int j=0;j<4;j++) { + CharType c = code[idx+j+1]; + if (c==0) { + r_err_str="Unterminated String"; + return ERR_PARSE_ERROR; + } + if (!((c>='0' && c<='9') || (c>='a' && c<='f') || (c>='A' && c<='F'))) { + + r_err_str="Malformed hex constant in string"; + 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; + + + } + idx+=4; //will add at the end anyway + + + } break;*/ + case '\"': res='\"'; break; + case '\\': res='\\'; break; + //case '/': res='/'; break; + default: { + res = next; + //r_err_str="Invalid escape sequence"; + //return ERR_PARSE_ERROR; + } break; + } + + tk_string+=res; + + } else { + if (code[idx]=='\n') + line++; + tk_string+=code[idx]; + } + idx++; + } + + value=tk_string; + + return TK_STRING; + + } break; + default: { + + if (code[idx]<=32) { + idx++; + break; + } + + if ( (code[idx]>=33 && code[idx]<=47) || (code[idx]>=58 && code[idx]<=64) || (code[idx]>=91 && code[idx]<=96) || (code[idx]>=123 && code[idx]<=127)){ + value=String::chr(code[idx]); + idx++; + return TK_SYMBOL; + } + + if (code[idx]=='-' || (code[idx]>='0' && code[idx]<='9')) { + //a number + const CharType *rptr; + double number = String::to_double(&code[idx],&rptr); + idx+=(rptr - &code[idx]); + value=number; + return TK_NUMBER; + + } else if ((code[idx]>='A' && code[idx]<='Z') || (code[idx]>='a' && code[idx]<='z') || code[idx]>127) { + + String id; + + while((code[idx]>='A' && code[idx]<='Z') || (code[idx]>='a' && code[idx]<='z') || code[idx]>127) { + + id+=code[idx]; + idx++; + } + + value=id; + return TK_IDENTIFIER; + } else { + error_str="Unexpected character."; + error=true; + return TK_ERROR; + } + } + + } + } + } + +public: + Error parse(const String& p_code,const String& p_known_class_name=String()) { + + code=p_code; + idx=0; + line=0; + error_str=String(); + error=false; + value=Variant(); + class_name=String(); + + bool use_next_class=false; + Token tk = get_token(); + + Map<int,String> namespace_stack; + int curly_stack=0; + + + while(!error || tk!=TK_EOF) { + + if (tk==TK_BRACKET_OPEN) { + tk = get_token(); + if (tk==TK_IDENTIFIER && String(value)=="ScriptClass") { + if (get_token()==TK_BRACKET_CLOSE) { + use_next_class=true; + } + } + } else if (tk==TK_IDENTIFIER && String(value)=="class") { + tk = get_token(); + if (tk==TK_IDENTIFIER) { + String name = value; + if (use_next_class || p_known_class_name==name) { + for (Map<int,String>::Element *E=namespace_stack.front();E;E=E->next()) { + class_name+=E->get()+"."; + } + class_name+=String(value); + break; + } + } + + } else if (tk==TK_IDENTIFIER && String(value)=="namespace") { + String name; + int at_level = curly_stack; + while(true) { + tk = get_token(); + if (tk==TK_IDENTIFIER) { + name+=String(value); + } + + tk = get_token(); + if (tk==TK_PERIOD) { + name+="."; + } else if (tk==TK_CURLY_BRACKET_OPEN) { + curly_stack++; + break; + } else { + break; //whathever else + } + + } + + if (name!=String()) { + namespace_stack[at_level]=name; + } + + } else if (tk==TK_CURLY_BRACKET_OPEN) { + curly_stack++; + } else if (tk==TK_CURLY_BRACKET_CLOSE) { + curly_stack--; + if (namespace_stack.has(curly_stack)) { + namespace_stack.erase(curly_stack); + } + } + + tk = get_token(); + } + + if (error) + return ERR_PARSE_ERROR; + + + + return OK; + + } + + String get_error() { + return error_str; + } + + String get_class() { + return class_name; + } + +}; + + void test_vec(Plane p_vec) { @@ -113,7 +477,41 @@ uint32_t ihash3( uint32_t a) MainLoop* test() { - print_line(itos(Math::step_decimals( 0.0001 ))); + + List<String> cmdlargs = OS::get_singleton()->get_cmdline_args(); + + if (cmdlargs.empty()) { + //try editor! + return NULL; + } + + String test = cmdlargs.back()->get(); + + FileAccess *fa = FileAccess::open(test,FileAccess::READ); + + if (!fa) { + ERR_EXPLAIN("Could not open file: "+test); + ERR_FAIL_V(NULL); + } + + + Vector<uint8_t> buf; + int flen = fa->get_len(); + buf.resize(fa->get_len()+1); + fa->get_buffer(&buf[0],flen); + buf[flen]=0; + + + String code; + code.parse_utf8((const char*)&buf[0]); + + GetClassAndNamespace getclass; + if (getclass.parse(code)) { + print_line("Parse error: "+getclass.get_error()); + } else { + print_line("Found class: "+getclass.get_class()); + } + return NULL; { diff --git a/bin/tests/test_misc.cpp b/bin/tests/test_misc.cpp index 68564c62b0..9d7adc3573 100644 --- a/bin/tests/test_misc.cpp +++ b/bin/tests/test_misc.cpp @@ -431,7 +431,7 @@ public: RID lightaux = vs->light_create( VisualServer::LIGHT_DIRECTIONAL ); //vs->light_set_color( lightaux, VisualServer::LIGHT_COLOR_AMBIENT, Color(0.0,0.0,0.0) ); //vs->light_set_shadow( lightaux, true ); - RID light = vs->instance_create2( lightaux,scenario ); + vs->instance_create2( lightaux,scenario ); //rot_a=Transform(Matrix3(Vector3(1,0,0),Math_PI/2.0),Vector3()); rot_b=Transform(Matrix3(),Vector3(2,0,0)); diff --git a/bin/tests/test_physics.cpp b/bin/tests/test_physics.cpp index ecd90a13d4..f202d0dda1 100644 --- a/bin/tests/test_physics.cpp +++ b/bin/tests/test_physics.cpp @@ -609,7 +609,7 @@ public: //t.basis.rotate(Vector3(-1,0,0),Math_PI/4*i); - RID b = create_body(type,PhysicsServer::BODY_MODE_RIGID,t); + create_body(type,PhysicsServer::BODY_MODE_RIGID,t); //RID b = create_body(type,i==0?PhysicsServer::BODY_MODE_STATIC:PhysicsServer::BODY_MODE_RIGID,t); } diff --git a/bin/tests/test_physics_2d.cpp b/bin/tests/test_physics_2d.cpp index c5fb734999..845e20b6c3 100644 --- a/bin/tests/test_physics_2d.cpp +++ b/bin/tests/test_physics_2d.cpp @@ -410,7 +410,7 @@ public: Physics2DServer::ShapeType type = types[i%4]; // type=Physics2DServer::SHAPE_SEGMENT; - RID b = _add_body(type,Matrix32(i*0.8,Point2(152+i*40,100-40*i))); + _add_body(type,Matrix32(i*0.8,Point2(152+i*40,100-40*i))); //if (i==0) // ps->body_set_mode(b,Physics2DServer::BODY_MODE_STATIC); } diff --git a/core/array.cpp b/core/array.cpp index 23792f90fc..683a43e3d0 100644 --- a/core/array.cpp +++ b/core/array.cpp @@ -276,16 +276,26 @@ void Array::push_front(const Variant& p_value) { _p->array.insert(0,p_value); } -void Array::pop_back(){ +Variant Array::pop_back(){ - if (!_p->array.empty()) - _p->array.resize( _p->array.size() -1 ); + if (!_p->array.empty()) { + int n = _p->array.size() - 1; + Variant ret = _p->array.get(n); + _p->array.resize(n); + return ret; + } + return Variant(); } -void Array::pop_front(){ - if (!_p->array.empty()) +Variant Array::pop_front(){ + + if (!_p->array.empty()) { + Variant ret = _p->array.get(0); _p->array.remove(0); + return ret; + } + return Variant(); } diff --git a/core/array.h b/core/array.h index dfc902525c..eb79b0cf33 100644 --- a/core/array.h +++ b/core/array.h @@ -80,8 +80,8 @@ public: void erase(const Variant& p_value); void push_front(const Variant& p_value); - void pop_back(); - void pop_front(); + Variant pop_back(); + Variant pop_front(); Array(const Array& p_from); Array(bool p_shared=false); diff --git a/core/dvector.h b/core/dvector.h index a5519ed604..9a54641617 100644 --- a/core/dvector.h +++ b/core/dvector.h @@ -262,6 +262,34 @@ public: w[bs+i]=r[i]; } + DVector<T> subarray(int p_from, int p_to) { + + if (p_from<0) { + p_from=size()+p_from; + } + if (p_to<0) { + p_to=size()+p_to; + } + if (p_from<0 || p_from>=size()) { + DVector<T>& aux=*((DVector<T>*)0); // nullreturn + ERR_FAIL_COND_V(p_from<0 || p_from>=size(),aux) + } + if (p_to<0 || p_to>=size()) { + DVector<T>& aux=*((DVector<T>*)0); // nullreturn + ERR_FAIL_COND_V(p_to<0 || p_to>=size(),aux) + } + + DVector<T> slice; + int span=1 + p_to - p_from; + slice.resize(span); + Read r = read(); + Write w = slice.write(); + for (int i=0; i<span; ++i) { + w[i] = r[p_from+i]; + } + + return slice; + } Error insert(int p_pos,const T& p_val) { 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/image.cpp b/core/image.cpp index d6ac3f28ea..90051d7d0d 100644 --- a/core/image.cpp +++ b/core/image.cpp @@ -2052,6 +2052,7 @@ Error Image::_decompress_bc() { ht/=2; } break; + default: {} } } diff --git a/core/input_map.cpp b/core/input_map.cpp index 08ee8138a3..09cb7ce426 100644 --- a/core/input_map.cpp +++ b/core/input_map.cpp @@ -232,62 +232,8 @@ bool InputMap::event_is_action(const InputEvent& p_event, const StringName& p_ac return _find_event(E->get().inputs,p_event)!=NULL; } -bool InputMap::event_is_joy_motion_action_pressed(const InputEvent& p_event) const { - - ERR_FAIL_COND_V(p_event.type!=InputEvent::JOYSTICK_MOTION,false); - bool pressed=false; - - //this could be optimized by having a separate list of joymotions? - - for (Map<StringName, Action>::Element *A=input_map.front();A;A=A->next()) { - - for (List<InputEvent>::Element *E=A->get().inputs.front();E;E=E->next()) { - - const InputEvent& e=E->get(); - if(e.type!=p_event.type) - continue; - if (e.type!=InputEvent::KEY && e.device!=p_event.device) - continue; - - switch(p_event.type) { - - case InputEvent::KEY: { - - if (e.key.scancode==p_event.key.scancode && e.key.mod == p_event.key.mod) - return e.key.pressed; - - } break; - case InputEvent::JOYSTICK_BUTTON: { - - if (e.joy_button.button_index==p_event.joy_button.button_index) { - return e.joy_button.pressed; - } - - } break; - case InputEvent::MOUSE_BUTTON: { - - if (e.mouse_button.button_index==p_event.mouse_button.button_index) { - return e.mouse_button.pressed; - } - - } break; - case InputEvent::JOYSTICK_MOTION: { - - if (e.joy_motion.axis==p_event.joy_motion.axis) { - if ( - (e.joy_motion.axis_value * p_event.joy_motion.axis_value >0) && //same axis - ABS(e.joy_motion.axis_value)>0.5 && ABS(p_event.joy_motion.axis_value)>0.5 ) - pressed=true; - } - - } break; - } - - } - } - - return pressed; - +const Map<StringName, InputMap::Action>& InputMap::get_action_map() const { + return input_map; } void InputMap::load_from_globals() { diff --git a/core/input_map.h b/core/input_map.h index dc5a911963..21c479588d 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; @@ -70,9 +72,8 @@ public: const List<InputEvent> *get_action_list(const StringName& p_action); 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/file_access_pack.cpp b/core/io/file_access_pack.cpp index 5c8c741f28..1632b841c6 100644 --- a/core/io/file_access_pack.cpp +++ b/core/io/file_access_pack.cpp @@ -409,6 +409,8 @@ Error DirAccessPack::change_dir(String p_dir) { nd=nd.simplify_path(); + if (nd == "") nd = "."; + if (nd.begins_with("/")) { nd=nd.replace_first("/","") ; absolute=true; diff --git a/tools/pck/pck_packer.cpp b/core/io/pck_packer.cpp index 04b88ea028..04b88ea028 100644 --- a/tools/pck/pck_packer.cpp +++ b/core/io/pck_packer.cpp diff --git a/tools/pck/pck_packer.h b/core/io/pck_packer.h index b1182335e2..b1182335e2 100644 --- a/tools/pck/pck_packer.h +++ b/core/io/pck_packer.h diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp new file mode 100644 index 0000000000..5bbbbdaa5a --- /dev/null +++ b/core/math/a_star.cpp @@ -0,0 +1,412 @@ +#include "a_star.h" +#include "geometry.h" + + +int AStar::get_available_point_id() const { + + if (points.empty()) { + return 1; + } + + return points.back()->key()+1; +} + +void AStar::add_point(int p_id, const Vector3 &p_pos, float p_weight_scale) { + ERR_FAIL_COND(p_id<0); + if (!points.has(p_id)) { + Point *pt = memnew( Point ); + pt->id=p_id; + pt->pos=p_pos; + pt->weight_scale=p_weight_scale; + pt->prev_point=NULL; + pt->last_pass=0; + points[p_id]=pt; + } else { + points[p_id]->pos=p_pos; + points[p_id]->weight_scale=p_weight_scale; + } +} + +Vector3 AStar::get_point_pos(int p_id) const{ + + ERR_FAIL_COND_V(!points.has(p_id),Vector3()); + + return points[p_id]->pos; + +} +float AStar::get_point_weight_scale(int p_id) const{ + + ERR_FAIL_COND_V(!points.has(p_id),0); + + return points[p_id]->weight_scale; + +} +void AStar::remove_point(int p_id){ + + ERR_FAIL_COND(!points.has(p_id)); + + Point* p = points[p_id]; + + for(int i=0;i<p->neighbours.size();i++) { + + Segment s(p_id,p->neighbours[i]->id); + segments.erase(s); + p->neighbours[i]->neighbours.erase(p); + } + + memdelete(p); + points.erase(p_id); +} + +void AStar::connect_points(int p_id,int p_with_id){ + + ERR_FAIL_COND(!points.has(p_id)); + ERR_FAIL_COND(!points.has(p_with_id)); + ERR_FAIL_COND(p_id==p_with_id); + + + Point* a = points[p_id]; + Point* b = points[p_with_id]; + a->neighbours.push_back(b); + b->neighbours.push_back(a); + + Segment s(p_id,p_with_id); + if (s.from==p_id) { + s.from_point=a; + s.to_point=b; + } else { + s.from_point=b; + s.to_point=a; + } + + segments.insert(s); + + +} +void AStar::disconnect_points(int p_id,int p_with_id){ + + Segment s(p_id,p_with_id); + ERR_FAIL_COND(!segments.has(s)); + + + segments.erase(s); + + Point *a = points[p_id]; + Point *b = points[p_with_id]; + a->neighbours.erase(b); + b->neighbours.erase(a); + +} +bool AStar::are_points_connected(int p_id,int p_with_id) const{ + + Segment s(p_id,p_with_id); + return segments.has(s); +} + +void AStar::clear(){ + + for (const Map<int,Point*>::Element *E=points.front();E;E=E->next()) { + + memdelete(E->get()); + } + segments.clear(); + points.clear(); +} + + +int AStar::get_closest_point(const Vector3& p_point) const{ + + int closest_id=-1; + float closest_dist=1e20; + + for (const Map<int,Point*>::Element *E=points.front();E;E=E->next()) { + + float d = p_point.distance_squared_to(E->get()->pos); + if (closest_id<0 || d<closest_dist) { + closest_dist=d; + closest_id=E->key(); + } + } + + return closest_id; + + +} +Vector3 AStar::get_closest_pos_in_segment(const Vector3& p_point) const { + + float closest_dist = 1e20; + bool found=false; + Vector3 closest_point; + + + for (const Set<Segment>::Element *E=segments.front();E;E=E->next()) { + + Vector3 segment[2]={ + E->get().from_point->pos, + E->get().to_point->pos, + }; + + Vector3 p = Geometry::get_closest_point_to_segment(p_point,segment); + float d = p_point.distance_squared_to(p); + if (!found || d<closest_dist) { + + closest_point=p; + closest_dist=d; + found=true; + } + } + + return closest_point; +} + +bool AStar::_solve(Point* begin_point, Point* end_point) { + + pass++; + + SelfList<Point>::List open_list; + + bool found_route=false; + + + for(int i=0;i<begin_point->neighbours.size();i++) { + + Point *n = begin_point->neighbours[i]; + n->prev_point=begin_point; + n->distance=n->pos.distance_to(begin_point->pos); + n->distance*=n->weight_scale; + n->last_pass=pass; + open_list.add(&n->list); + + if (end_point==n) { + found_route=true; + break; + } + } + + while(!found_route) { + + if (open_list.first()==NULL) { + //could not find path sadly + break; + } + //check open list + + SelfList<Point> *least_cost_point=NULL; + float least_cost=1e30; + + //this could be faster (cache previous results) + for (SelfList<Point> *E=open_list.first();E;E=E->next()) { + + Point *p=E->self(); + + float cost=p->distance; + cost+=p->pos.distance_to(end_point->pos); + cost*=p->weight_scale; + + if (cost<least_cost) { + + least_cost_point=E; + least_cost=cost; + } + } + + + Point *p=least_cost_point->self(); + //open the neighbours for search + int es = p->neighbours.size(); + + for(int i=0;i<es;i++) { + + + Point* e=p->neighbours[i]; + + + float distance = p->pos.distance_to(e->pos) + p->distance; + distance*=e->weight_scale; + + + + if (e->last_pass==pass) { + //oh this was visited already, can we win the cost? + + if (e->distance>distance) { + + e->prev_point=p; + e->distance=distance; + } + } else { + //add to open neighbours + + e->prev_point=p; + e->distance=distance; + e->last_pass=pass; //mark as used + open_list.add(&e->list); + + if (e==end_point) { + //oh my reached end! stop algorithm + found_route=true; + break; + + } + + } + } + + if (found_route) + break; + + open_list.remove(least_cost_point); + } + + //clear the openf list + while(open_list.first()) { + open_list.remove( open_list.first() ); + } + + return found_route; + +} + +DVector<Vector3> AStar::get_point_path(int p_from_id, int p_to_id) { + + ERR_FAIL_COND_V(!points.has(p_from_id),DVector<Vector3>()); + ERR_FAIL_COND_V(!points.has(p_to_id),DVector<Vector3>()); + + + pass++; + + Point* a = points[p_from_id]; + Point* b = points[p_to_id]; + + if (a==b) { + DVector<Vector3> ret; + ret.push_back(a->pos); + return ret; + } + + + Point *begin_point=a; + Point *end_point=b; + + bool found_route=_solve(begin_point,end_point); + + if (!found_route) + return DVector<Vector3>(); + + //midpoints + Point *p=end_point; + int pc=1; //begin point + while(p!=begin_point) { + pc++; + p=p->prev_point; + } + + DVector<Vector3> path; + path.resize(pc); + + { + DVector<Vector3>::Write w = path.write(); + + Point *p=end_point; + int idx=pc-1; + while(p!=begin_point) { + w[idx--]=p->pos; + p=p->prev_point; + } + + w[0]=p->pos; //assign first + + } + + return path; + +} + + +DVector<int> AStar::get_id_path(int p_from_id, int p_to_id) { + + ERR_FAIL_COND_V(!points.has(p_from_id),DVector<int>()); + ERR_FAIL_COND_V(!points.has(p_to_id),DVector<int>()); + + + pass++; + + Point* a = points[p_from_id]; + Point* b = points[p_to_id]; + + if (a==b) { + DVector<int> ret; + ret.push_back(a->id); + return ret; + } + + + Point *begin_point=a; + Point *end_point=b; + + bool found_route=_solve(begin_point,end_point); + + if (!found_route) + return DVector<int>(); + + //midpoints + Point *p=end_point; + int pc=1; //begin point + while(p!=begin_point) { + pc++; + p=p->prev_point; + } + + DVector<int> path; + path.resize(pc); + + { + DVector<int>::Write w = path.write(); + + p=end_point; + int idx=pc-1; + while(p!=begin_point) { + w[idx--]=p->id; + p=p->prev_point; + } + + w[0]=p->id; //assign first + + } + + return path; +} + +void AStar::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("get_available_point_id"),&AStar::get_available_point_id); + ObjectTypeDB::bind_method(_MD("add_point","id","pos","weight_scale"),&AStar::add_point,DEFVAL(1.0)); + ObjectTypeDB::bind_method(_MD("get_point_pos","id"),&AStar::get_point_pos); + ObjectTypeDB::bind_method(_MD("get_point_weight_scale","id"),&AStar::get_point_weight_scale); + ObjectTypeDB::bind_method(_MD("remove_point","id"),&AStar::remove_point); + + ObjectTypeDB::bind_method(_MD("connect_points","id","to_id"),&AStar::connect_points); + ObjectTypeDB::bind_method(_MD("disconnect_points","id","to_id"),&AStar::disconnect_points); + ObjectTypeDB::bind_method(_MD("are_points_connected","id","to_id"),&AStar::are_points_connected); + + ObjectTypeDB::bind_method(_MD("clear"),&AStar::clear); + + ObjectTypeDB::bind_method(_MD("get_closest_point","to_pos"),&AStar::get_closest_point); + ObjectTypeDB::bind_method(_MD("get_closest_pos_in_segment","to_pos"),&AStar::get_closest_pos_in_segment); + + ObjectTypeDB::bind_method(_MD("get_point_path","from_id","to_id"),&AStar::get_point_path); + ObjectTypeDB::bind_method(_MD("get_id_path","from_id","to_id"),&AStar::get_id_path); + +} + + +AStar::AStar() { + + pass=1; +} + + +AStar::~AStar() { + + pass=1; +} diff --git a/core/math/a_star.h b/core/math/a_star.h new file mode 100644 index 0000000000..a0517b5941 --- /dev/null +++ b/core/math/a_star.h @@ -0,0 +1,92 @@ +#ifndef ASTAR_H +#define ASTAR_H + +#include "reference.h" +#include "self_list.h" + +class AStar: public Reference { + + OBJ_TYPE(AStar,Reference) + + + uint64_t pass; + + struct Point { + + SelfList<Point> list; + + int id; + Vector3 pos; + float weight_scale; + uint64_t last_pass; + + Vector<Point*> neighbours; + + //used for pathfinding + Point *prev_point; + float distance; + + Point() : list(this) {} + }; + + Map<int,Point*> points; + + struct Segment { + union { + struct { + int32_t from; + int32_t to; + }; + uint64_t key; + }; + + Point *from_point; + Point *to_point; + + bool operator<(const Segment& p_s) const { return key<p_s.key; } + Segment() { key=0; } + Segment(int p_from,int p_to) { + if (p_from > p_to) { + SWAP(p_from,p_to); + } + + from=p_from; + to=p_to; + } + }; + + + Set<Segment> segments; + + bool _solve(Point *begin_point, Point *end_point); + +protected: + + static void _bind_methods(); +public: + + int get_available_point_id() const; + + void add_point(int p_id,const Vector3& p_pos,float p_weight_scale=1); + Vector3 get_point_pos(int p_id) const; + float get_point_weight_scale(int p_id) const; + void remove_point(int p_id); + + void connect_points(int p_id,int p_with_id); + void disconnect_points(int p_id,int p_with_id); + bool are_points_connected(int p_id,int p_with_id) const; + + void clear(); + + + int get_closest_point(const Vector3& p_point) const; + Vector3 get_closest_pos_in_segment(const Vector3& p_point) const; + + DVector<Vector3> get_point_path(int p_from_id, int p_to_id); + DVector<int> get_id_path(int p_from_id, int p_to_id); + + AStar(); + ~AStar(); +}; + +#endif // ASTAR_H diff --git a/core/math/math_2d.cpp b/core/math/math_2d.cpp index 0e2060008c..e616f05914 100644 --- a/core/math/math_2d.cpp +++ b/core/math/math_2d.cpp @@ -424,7 +424,7 @@ Matrix32 Matrix32::inverse() const { void Matrix32::affine_invert() { - float det = elements[0][0]*elements[1][1] - elements[1][0]*elements[0][1]; + float det = basis_determinant(); ERR_FAIL_COND(det==0); float idet = 1.0 / det; @@ -475,18 +475,18 @@ Matrix32::Matrix32(real_t p_rot, const Vector2& p_pos) { elements[2]=p_pos; } -Vector2 Matrix32::get_scale() const { +Size2 Matrix32::get_scale() const { - return Vector2( elements[0].length(), elements[1].length() ); + return Size2( elements[0].length(), elements[1].length() ); } -void Matrix32::scale(const Vector2& p_scale) { +void Matrix32::scale(const Size2& p_scale) { elements[0]*=p_scale; elements[1]*=p_scale; elements[2]*=p_scale; } -void Matrix32::scale_basis(const Vector2& p_scale) { +void Matrix32::scale_basis(const Size2& p_scale) { elements[0]*=p_scale; elements[1]*=p_scale; @@ -501,7 +501,6 @@ void Matrix32::translate( const Vector2& p_translation ) { elements[2]+=basis_xform(p_translation); } - void Matrix32::orthonormalize() { // Gram-Schmidt Process @@ -550,11 +549,6 @@ void Matrix32::operator*=(const Matrix32& p_transform) { elements[2] = xform(p_transform.elements[2]); float x0,x1,y0,y1; -/* - x0 = p_transform.tdotx(elements[0]); - x1 = p_transform.tdoty(elements[0]); - y0 = p_transform.tdotx(elements[1]); - y1 = p_transform.tdoty(elements[1]);*/ x0 = tdotx(p_transform.elements[0]); x1 = tdoty(p_transform.elements[0]); @@ -576,7 +570,7 @@ Matrix32 Matrix32::operator*(const Matrix32& p_transform) const { } -Matrix32 Matrix32::scaled(const Vector2& p_scale) const { +Matrix32 Matrix32::scaled(const Size2& p_scale) const { Matrix32 copy=*this; copy.scale(p_scale); @@ -584,7 +578,7 @@ Matrix32 Matrix32::scaled(const Vector2& p_scale) const { } -Matrix32 Matrix32::basis_scaled(const Vector2& p_scale) const { +Matrix32 Matrix32::basis_scaled(const Size2& p_scale) const { Matrix32 copy=*this; copy.scale_basis(p_scale); @@ -629,8 +623,8 @@ Matrix32 Matrix32::interpolate_with(const Matrix32& p_transform, float p_c) cons real_t r1 = get_rotation(); real_t r2 = p_transform.get_rotation(); - Vector2 s1 = get_scale(); - Vector2 s2 = p_transform.get_scale(); + Size2 s1 = get_scale(); + Size2 s2 = p_transform.get_scale(); //slerp rotation Vector2 v1(Math::cos(r1), Math::sin(r1)); diff --git a/core/math/math_2d.h b/core/math/math_2d.h index 90aae9fe50..38c1ac9656 100644 --- a/core/math/math_2d.h +++ b/core/math/math_2d.h @@ -553,10 +553,8 @@ struct Rect2i { struct Matrix32 { - Vector2 elements[3]; - _FORCE_INLINE_ float tdotx(const Vector2& v) const { return elements[0][0] * v.x + elements[1][0] * v.y; } _FORCE_INLINE_ float tdoty(const Vector2& v) const { return elements[0][1] * v.x + elements[1][1] * v.y; } @@ -577,26 +575,25 @@ struct Matrix32 { _FORCE_INLINE_ void set_rotation_and_scale(real_t p_phi,const Size2& p_scale); void rotate(real_t p_phi); - void scale(const Vector2& p_scale); - void scale_basis(const Vector2& p_scale); + void scale(const Size2& p_scale); + void scale_basis(const Size2& p_scale); void translate( real_t p_tx, real_t p_ty); void translate( const Vector2& p_translation ); float basis_determinant() const; - Vector2 get_scale() const; + Size2 get_scale() const; _FORCE_INLINE_ const Vector2& get_origin() const { return elements[2]; } _FORCE_INLINE_ void set_origin(const Vector2& p_origin) { elements[2]=p_origin; } - Matrix32 scaled(const Vector2& p_scale) const; - Matrix32 basis_scaled(const Vector2& p_scale) const; + Matrix32 scaled(const Size2& p_scale) const; + Matrix32 basis_scaled(const Size2& p_scale) const; Matrix32 translated(const Vector2& p_offset) const; Matrix32 rotated(float p_phi) const; Matrix32 untranslated() const; - void orthonormalize(); Matrix32 orthonormalized() const; @@ -615,7 +612,6 @@ struct Matrix32 { _FORCE_INLINE_ Rect2 xform(const Rect2& p_vec) const; _FORCE_INLINE_ Rect2 xform_inv(const Rect2& p_vec) const; - operator String() const; Matrix32(real_t xx, real_t xy, real_t yx, real_t yy, real_t ox, real_t oy) { @@ -630,7 +626,6 @@ struct Matrix32 { Matrix32(real_t p_rot, const Vector2& p_pos); Matrix32() { elements[0][0]=1.0; elements[1][1]=1.0; } - }; bool Rect2::intersects_transformed(const Matrix32& p_xform, const Rect2& p_rect) const { diff --git a/core/math/triangulate.cpp b/core/math/triangulate.cpp index 27b7c86675..1f5d5ed6b3 100644 --- a/core/math/triangulate.cpp +++ b/core/math/triangulate.cpp @@ -157,7 +157,10 @@ bool Triangulate::triangulate(const Vector<Vector2> &contour,Vector<int> &result m++; /* remove v from remaining polygon */ - for(s=v,t=v+1;t<nv;s++,t++) V[s] = V[t]; nv--; + for(s=v,t=v+1;t<nv;s++,t++) + V[s] = V[t]; + + nv--; /* resest error detection counter */ count = 2*nv; diff --git a/core/math/vector3.cpp b/core/math/vector3.cpp index 8afd73f482..fae3831dd6 100644 --- a/core/math/vector3.cpp +++ b/core/math/vector3.cpp @@ -49,13 +49,13 @@ void Vector3::set_axis(int p_axis,real_t p_value) { } real_t Vector3::get_axis(int p_axis) const { - ERR_FAIL_INDEX_V(p_axis,3,0); - return operator[](p_axis); + ERR_FAIL_INDEX_V(p_axis,3,0); + return operator[](p_axis); } int Vector3::min_axis() const { - return x < y ? (x < z ? 0 : 2) : (y < z ? 1 : 2); + return x < y ? (x < z ? 0 : 2) : (y < z ? 1 : 2); } int Vector3::max_axis() const { @@ -65,19 +65,15 @@ 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 { - Vector3 v=*this; - v.snap(p_val); - return v; + Vector3 v=*this; + v.snap(p_val); + return v; } diff --git a/core/math/vector3.h b/core/math/vector3.h index 910446023a..06840be5e7 100644 --- a/core/math/vector3.h +++ b/core/math/vector3.h @@ -63,77 +63,78 @@ struct Vector3 { return coord[p_axis]; } - void set_axis(int p_axis,real_t p_value); - real_t get_axis(int p_axis) const; + void set_axis(int p_axis,real_t p_value); + real_t get_axis(int p_axis) const; - int min_axis() const; - int max_axis() const; + int min_axis() const; + int max_axis() const; - _FORCE_INLINE_ real_t length() const; - _FORCE_INLINE_ real_t length_squared() const; + _FORCE_INLINE_ real_t length() const; + _FORCE_INLINE_ real_t length_squared() const; - _FORCE_INLINE_ void normalize(); - _FORCE_INLINE_ Vector3 normalized() const; - _FORCE_INLINE_ Vector3 inverse() const; + _FORCE_INLINE_ void normalize(); + _FORCE_INLINE_ Vector3 normalized() const; + _FORCE_INLINE_ Vector3 inverse() const; _FORCE_INLINE_ void zero(); - void snap(float p_val); - Vector3 snapped(float p_val) const; + void snap(float p_val); + Vector3 snapped(float p_val) const; void rotate(const Vector3& p_axis,float p_phi); Vector3 rotated(const Vector3& p_axis,float p_phi) const; - /* Static Methods between 2 vector3s */ + /* Static Methods between 2 vector3s */ - _FORCE_INLINE_ Vector3 linear_interpolate(const Vector3& p_b,float p_t) const; + _FORCE_INLINE_ Vector3 linear_interpolate(const Vector3& p_b,float p_t) const; Vector3 cubic_interpolate(const Vector3& p_b,const Vector3& p_pre_a, const Vector3& p_post_b,float p_t) const; Vector3 cubic_interpolaten(const Vector3& p_b,const Vector3& p_pre_a, const Vector3& p_post_b,float p_t) const; - _FORCE_INLINE_ Vector3 cross(const Vector3& p_b) const; - _FORCE_INLINE_ real_t dot(const Vector3& p_b) const; + _FORCE_INLINE_ Vector3 cross(const Vector3& p_b) const; + _FORCE_INLINE_ real_t dot(const Vector3& p_b) const; - _FORCE_INLINE_ Vector3 abs() const; - _FORCE_INLINE_ Vector3 floor() const; - _FORCE_INLINE_ Vector3 ceil() const; + _FORCE_INLINE_ Vector3 abs() const; + _FORCE_INLINE_ Vector3 floor() const; + _FORCE_INLINE_ Vector3 ceil() const; - _FORCE_INLINE_ real_t distance_to(const Vector3& p_b) const; - _FORCE_INLINE_ real_t distance_squared_to(const Vector3& p_b) const; + _FORCE_INLINE_ real_t distance_to(const Vector3& p_b) const; + _FORCE_INLINE_ real_t distance_squared_to(const Vector3& p_b) const; + _FORCE_INLINE_ real_t angle_to(const Vector3& p_b) const; _FORCE_INLINE_ Vector3 slide(const Vector3& p_vec) const; _FORCE_INLINE_ Vector3 reflect(const Vector3& p_vec) const; - /* Operators */ + /* Operators */ - _FORCE_INLINE_ Vector3& operator+=(const Vector3& p_v); - _FORCE_INLINE_ Vector3 operator+(const Vector3& p_v) const; - _FORCE_INLINE_ Vector3& operator-=(const Vector3& p_v); - _FORCE_INLINE_ Vector3 operator-(const Vector3& p_v) const; - _FORCE_INLINE_ Vector3& operator*=(const Vector3& p_v); - _FORCE_INLINE_ Vector3 operator*(const Vector3& p_v) const; - _FORCE_INLINE_ Vector3& operator/=(const Vector3& p_v); - _FORCE_INLINE_ Vector3 operator/(const Vector3& p_v) const; + _FORCE_INLINE_ Vector3& operator+=(const Vector3& p_v); + _FORCE_INLINE_ Vector3 operator+(const Vector3& p_v) const; + _FORCE_INLINE_ Vector3& operator-=(const Vector3& p_v); + _FORCE_INLINE_ Vector3 operator-(const Vector3& p_v) const; + _FORCE_INLINE_ Vector3& operator*=(const Vector3& p_v); + _FORCE_INLINE_ Vector3 operator*(const Vector3& p_v) const; + _FORCE_INLINE_ Vector3& operator/=(const Vector3& p_v); + _FORCE_INLINE_ Vector3 operator/(const Vector3& p_v) const; - _FORCE_INLINE_ Vector3& operator*=(real_t p_scalar); - _FORCE_INLINE_ Vector3 operator*(real_t p_scalar) const; - _FORCE_INLINE_ Vector3& operator/=(real_t p_scalar); - _FORCE_INLINE_ Vector3 operator/(real_t p_scalar) const; + _FORCE_INLINE_ Vector3& operator*=(real_t p_scalar); + _FORCE_INLINE_ Vector3 operator*(real_t p_scalar) const; + _FORCE_INLINE_ Vector3& operator/=(real_t p_scalar); + _FORCE_INLINE_ Vector3 operator/(real_t p_scalar) const; - _FORCE_INLINE_ Vector3 operator-() const; + _FORCE_INLINE_ Vector3 operator-() const; - _FORCE_INLINE_ bool operator==(const Vector3& p_v) const; - _FORCE_INLINE_ bool operator!=(const Vector3& p_v) const; - _FORCE_INLINE_ bool operator<(const Vector3& p_v) const; + _FORCE_INLINE_ bool operator==(const Vector3& p_v) const; + _FORCE_INLINE_ bool operator!=(const Vector3& p_v) const; + _FORCE_INLINE_ bool operator<(const Vector3& p_v) const; _FORCE_INLINE_ bool operator<=(const Vector3& p_v) const; operator String() const; - _FORCE_INLINE_ Vector3() { x=y=z=0; } - _FORCE_INLINE_ Vector3(real_t p_x,real_t p_y,real_t p_z) { x=p_x; y=p_y; z=p_z; } + _FORCE_INLINE_ Vector3() { x=y=z=0; } + _FORCE_INLINE_ Vector3(real_t p_x,real_t p_y,real_t p_z) { x=p_x; y=p_y; z=p_z; } }; @@ -151,11 +152,12 @@ Vector3 Vector3::cross(const Vector3& p_b) const { (x * p_b.y) - (y * p_b.x) ); - return ret; + return ret; } + real_t Vector3::dot(const Vector3& p_b) const { - return x*p_b.x + y*p_b.y + z*p_b.z; + return x*p_b.x + y*p_b.y + z*p_b.z; } Vector3 Vector3::abs() const { @@ -180,115 +182,119 @@ Vector3 Vector3::linear_interpolate(const Vector3& p_b,float p_t) const { y+(p_t * (p_b.y-y)), z+(p_t * (p_b.z-z)) ); - } - - real_t Vector3::distance_to(const Vector3& p_b) const { + return (p_b-*this).length(); } + real_t Vector3::distance_squared_to(const Vector3& p_b) const { - return (p_b-*this).length_squared(); + return (p_b-*this).length_squared(); +} + +real_t Vector3::angle_to(const Vector3& p_b) const { + + return Math::acos(this->dot(p_b) / Math::sqrt(this->length_squared() * p_b.length_squared())); } /* Operators */ Vector3& Vector3::operator+=(const Vector3& p_v) { - x+=p_v.x; - y+=p_v.y; - z+=p_v.z; - return *this; + x+=p_v.x; + y+=p_v.y; + z+=p_v.z; + return *this; } + Vector3 Vector3::operator+(const Vector3& p_v) const { - return Vector3(x+p_v.x, y+p_v.y, z+ p_v.z); + return Vector3(x+p_v.x, y+p_v.y, z+ p_v.z); } Vector3& Vector3::operator-=(const Vector3& p_v) { - x-=p_v.x; - y-=p_v.y; - z-=p_v.z; - return *this; + x-=p_v.x; + y-=p_v.y; + z-=p_v.z; + return *this; } Vector3 Vector3::operator-(const Vector3& p_v) const { - return Vector3(x-p_v.x, y-p_v.y, z- p_v.z); + return Vector3(x-p_v.x, y-p_v.y, z- p_v.z); } - - Vector3& Vector3::operator*=(const Vector3& p_v) { - x*=p_v.x; - y*=p_v.y; - z*=p_v.z; - return *this; + x*=p_v.x; + y*=p_v.y; + z*=p_v.z; + return *this; } Vector3 Vector3::operator*(const Vector3& p_v) const { - return Vector3(x*p_v.x, y*p_v.y, z* p_v.z); + return Vector3(x*p_v.x, y*p_v.y, z* p_v.z); } Vector3& Vector3::operator/=(const Vector3& p_v) { - x/=p_v.x; - y/=p_v.y; - z/=p_v.z; - return *this; + x/=p_v.x; + y/=p_v.y; + z/=p_v.z; + return *this; } + Vector3 Vector3::operator/(const Vector3& p_v) const { - return Vector3(x/p_v.x, y/p_v.y, z/ p_v.z); + return Vector3(x/p_v.x, y/p_v.y, z/ p_v.z); } Vector3& Vector3::operator*=(real_t p_scalar) { - x*=p_scalar; - y*=p_scalar; - z*=p_scalar; - return *this; + x*=p_scalar; + y*=p_scalar; + z*=p_scalar; + return *this; } _FORCE_INLINE_ Vector3 operator*(real_t p_scalar, const Vector3& p_vec) { + return p_vec * p_scalar; } Vector3 Vector3::operator*(real_t p_scalar) const { - return Vector3( x*p_scalar, y*p_scalar, z*p_scalar); + return Vector3( x*p_scalar, y*p_scalar, z*p_scalar); } Vector3& Vector3::operator/=(real_t p_scalar) { - x/=p_scalar; - y/=p_scalar; - z/=p_scalar; - return *this; + x/=p_scalar; + y/=p_scalar; + z/=p_scalar; + return *this; } Vector3 Vector3::operator/(real_t p_scalar) const { - return Vector3( x/p_scalar, y/p_scalar, z/p_scalar); + return Vector3( x/p_scalar, y/p_scalar, z/p_scalar); } Vector3 Vector3::operator-() const { - return Vector3( -x, -y, -z ); + return Vector3( -x, -y, -z ); } - bool Vector3::operator==(const Vector3& p_v) const { - return (x==p_v.x && y==p_v.y && z==p_v.z); + return (x==p_v.x && y==p_v.y && z==p_v.z); } bool Vector3::operator!=(const Vector3& p_v) const { - return (x!=p_v.x || y!=p_v.y || z!=p_v.z); + return (x!=p_v.x || y!=p_v.y || z!=p_v.z); } bool Vector3::operator<(const Vector3& p_v) const { @@ -298,9 +304,9 @@ bool Vector3::operator<(const Vector3& p_v) const { return z<p_v.z; else return y<p_v.y; - } else + } else { return x<p_v.x; - + } } bool Vector3::operator<=(const Vector3& p_v) const { @@ -310,9 +316,9 @@ bool Vector3::operator<=(const Vector3& p_v) const { return z<=p_v.z; else return y<p_v.y; - } else + } else { return x<p_v.x; - + } } _FORCE_INLINE_ Vector3 vec3_cross(const Vector3& p_a, const Vector3& p_b) { @@ -333,6 +339,7 @@ real_t Vector3::length() const { return Math::sqrt(x2+y2+z2); } + real_t Vector3::length_squared() const { real_t x2=x*x; @@ -340,27 +347,25 @@ real_t Vector3::length_squared() const { real_t z2=z*z; return x2+y2+z2; - } void Vector3::normalize() { - real_t l=length(); - if (l==0) { - + real_t l=length(); + if (l==0) { x=y=z=0; - } else { - + } else { x/=l; y/=l; z/=l; - } + } } + Vector3 Vector3::normalized() const { - Vector3 v=*this; - v.normalize(); - return v; + Vector3 v=*this; + v.normalize(); + return v; } Vector3 Vector3::inverse() const { @@ -377,10 +382,10 @@ Vector3 Vector3::slide(const Vector3& p_vec) const { return p_vec - *this * this->dot(p_vec); } + Vector3 Vector3::reflect(const Vector3& p_vec) const { return p_vec - *this * this->dot(p_vec) * 2.0; - } #endif 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 b036efa501..9a1e9be8d5 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1215,6 +1215,15 @@ void Object::emit_signal(const StringName& p_name,const Variant** p_args,int p_a Signal *s = signal_map.getptr(p_name); if (!s) { +#ifdef DEBUG_ENABLED + bool signal_is_valid = ObjectTypeDB::has_signal(get_type_name(),p_name); + //check in script + if (!signal_is_valid && !script.is_null() && !Ref<Script>(script)->has_script_signal(p_name)) { + ERR_EXPLAIN("Can't emit non-existing signal " + String("\"")+p_name+"\"."); + ERR_FAIL(); + } +#endif + //not connected? just return return; } @@ -1644,6 +1653,7 @@ void Object::_clear_internal_resource_paths(const Variant &p_var) { _clear_internal_resource_paths(d[E->get()]); } } break; + default: {} } } @@ -1693,42 +1703,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_type_db.cpp b/core/object_type_db.cpp index b6a69e3bd4..e121dc9e98 100644 --- a/core/object_type_db.cpp +++ b/core/object_type_db.cpp @@ -189,6 +189,14 @@ MethodDefinition _MD(const char* p_name,const char *p_arg1,const char *p_arg2,co #endif + +ObjectTypeDB::APIType ObjectTypeDB::current_api=API_CORE; + +void ObjectTypeDB::set_current_api(APIType p_api) { + + current_api=p_api; +} + HashMap<StringName,ObjectTypeDB::TypeInfo,StringNameHasher> ObjectTypeDB::types; HashMap<StringName,StringName,StringNameHasher> ObjectTypeDB::resource_base_extensions; HashMap<StringName,StringName,StringNameHasher> ObjectTypeDB::compat_types; @@ -258,6 +266,171 @@ StringName ObjectTypeDB::type_inherits_from(const StringName& p_type) { return ti->inherits; } +ObjectTypeDB::APIType ObjectTypeDB::get_api_type(const StringName &p_type) { + + OBJTYPE_LOCK; + + TypeInfo *ti = types.getptr(p_type); + ERR_FAIL_COND_V(!ti,API_NONE); + return ti->api; +} + +uint64_t ObjectTypeDB::get_api_hash(APIType p_api) { + +#ifdef DEBUG_METHODS_ENABLED + + uint64_t hash = hash_djb2_one_64(HashMapHahserDefault::hash(VERSION_FULL_NAME)); + + List<StringName> names; + + const StringName *k=NULL; + + while((k=types.next(k))) { + + names.push_back(*k); + } + //must be alphabetically sorted for hash to compute + names.sort_custom<StringName::AlphCompare>(); + + for (List<StringName>::Element *E=names.front();E;E=E->next()) { + + TypeInfo *t = types.getptr(E->get()); + ERR_FAIL_COND_V(!t,0); + if (t->api!=p_api) + continue; + hash = hash_djb2_one_64(t->name.hash(),hash); + hash = hash_djb2_one_64(t->inherits.hash(),hash); + + { //methods + + List<StringName> snames; + + k=NULL; + + while((k=t->method_map.next(k))) { + + snames.push_back(*k); + } + + snames.sort_custom<StringName::AlphCompare>(); + + for (List<StringName>::Element *F=snames.front();F;F=F->next()) { + + MethodBind *mb = t->method_map[F->get()]; + hash = hash_djb2_one_64( mb->get_name().hash(), hash); + hash = hash_djb2_one_64( mb->get_argument_count(), hash); + hash = hash_djb2_one_64( mb->get_argument_type(-1), hash); //return + + for(int i=0;i<mb->get_argument_count();i++) { + hash = hash_djb2_one_64( mb->get_argument_info(i).type, hash ); + hash = hash_djb2_one_64( mb->get_argument_info(i).name.hash(), hash ); + hash = hash_djb2_one_64( mb->get_argument_info(i).hint, hash ); + hash = hash_djb2_one_64( mb->get_argument_info(i).hint_string.hash(), hash ); + } + + hash = hash_djb2_one_64( mb->get_default_argument_count(), hash); + + for(int i=0;i<mb->get_default_argument_count();i++) { + //hash should not change, i hope for tis + Variant da = mb->get_default_argument(i); + hash = hash_djb2_one_64( da.hash(), hash ); + } + + hash = hash_djb2_one_64( mb->get_hint_flags(), hash); + + } + } + + + { //constants + + List<StringName> snames; + + k=NULL; + + while((k=t->constant_map.next(k))) { + + snames.push_back(*k); + } + + snames.sort_custom<StringName::AlphCompare>(); + + for (List<StringName>::Element *F=snames.front();F;F=F->next()) { + + hash = hash_djb2_one_64(F->get().hash(), hash); + hash = hash_djb2_one_64( t->constant_map[F->get()], hash); + } + } + + + { //signals + + List<StringName> snames; + + k=NULL; + + while((k=t->signal_map.next(k))) { + + snames.push_back(*k); + } + + snames.sort_custom<StringName::AlphCompare>(); + + for (List<StringName>::Element *F=snames.front();F;F=F->next()) { + + MethodInfo &mi = t->signal_map[F->get()]; + hash = hash_djb2_one_64( F->get().hash(), hash); + for(int i=0;i<mi.arguments.size();i++) { + hash = hash_djb2_one_64( mi.arguments[i].type, hash); + } + } + } + + { //properties + + List<StringName> snames; + + k=NULL; + + while((k=t->property_setget.next(k))) { + + snames.push_back(*k); + } + + snames.sort_custom<StringName::AlphCompare>(); + + for (List<StringName>::Element *F=snames.front();F;F=F->next()) { + + PropertySetGet *psg=t->property_setget.getptr(F->get()); + + hash = hash_djb2_one_64( F->get().hash(), hash); + hash = hash_djb2_one_64( psg->setter.hash(), hash); + hash = hash_djb2_one_64( psg->getter.hash(), hash); + + } + } + + //property list + for (List<PropertyInfo>::Element *F=t->property_list.front();F;F=F->next()) { + + hash = hash_djb2_one_64( F->get().name.hash(), hash); + hash = hash_djb2_one_64( F->get().type, hash); + hash = hash_djb2_one_64( F->get().hint, hash); + hash = hash_djb2_one_64( F->get().hint_string.hash(), hash); + hash = hash_djb2_one_64( F->get().usage, hash); + } + + + } + + + return hash; +#else + return 0; +#endif + +} + bool ObjectTypeDB::type_exists(const StringName &p_type) { OBJTYPE_LOCK; @@ -309,6 +482,7 @@ void ObjectTypeDB::_add_type2(const StringName& p_type, const StringName& p_inhe TypeInfo &ti=types[name]; ti.name=name; ti.inherits=p_inherits; + ti.api=current_api; if (ti.inherits) { @@ -866,21 +1040,14 @@ MethodBind* ObjectTypeDB::bind_methodfi(uint32_t p_flags, MethodBind *p_bind , c Vector<Variant> defvals; -#define PARSE_DEFVAL(m_defval)\ -if (d##m_defval.used) defvals.insert(0,d##m_defval.val);\ -else goto set_defvals; - defvals.resize(p_defcount); for(int i=0;i<p_defcount;i++) { defvals[i]=*p_defs[p_defcount-i-1]; } - set_defvals: - p_bind->set_default_arguments(defvals); p_bind->set_hint_flags(p_flags); -#undef PARSE_DEFVAL return p_bind; } diff --git a/core/object_type_db.h b/core/object_type_db.h index 3fcd38aa31..9e9029ff2f 100644 --- a/core/object_type_db.h +++ b/core/object_type_db.h @@ -109,7 +109,13 @@ static _FORCE_INLINE_ const char* _MD(const char* m_name, ...) { return m_name; #endif class ObjectTypeDB { - +public: + enum APIType { + API_CORE, + API_EDITOR, + API_NONE + }; +public: struct PropertySetGet { int index; @@ -122,6 +128,7 @@ class ObjectTypeDB { struct TypeInfo { + APIType api; TypeInfo *inherits_ptr; HashMap<StringName,MethodBind*,StringNameHasher> method_map; HashMap<StringName,int,StringNameHasher> constant_map; @@ -161,6 +168,7 @@ class ObjectTypeDB { #endif + static APIType current_api; static void _add_type2(const StringName& p_type, const StringName& p_inherits); public: @@ -236,6 +244,9 @@ public: static bool is_type(const StringName &p_type,const StringName& p_inherits); static bool can_instance(const StringName &p_type); static Object *instance(const StringName &p_type); + static APIType get_api_type(const StringName &p_type); + + static uint64_t get_api_hash(APIType p_api); #if 0 template<class N, class M> @@ -415,13 +426,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; @@ -499,6 +510,8 @@ public: static void add_compatibility_type(const StringName& p_type,const StringName& p_fallback); static void init(); + + static void set_current_api(APIType p_api); static void cleanup(); }; diff --git a/core/os/input.cpp b/core/os/input.cpp index 531db73838..4ab57a84ea 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); @@ -62,6 +64,10 @@ void Input::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_connected_joysticks"),&Input::get_connected_joysticks); ObjectTypeDB::bind_method(_MD("get_joy_vibration_strength", "device"), &Input::get_joy_vibration_strength); ObjectTypeDB::bind_method(_MD("get_joy_vibration_duration", "device"), &Input::get_joy_vibration_duration); + ObjectTypeDB::bind_method(_MD("get_joy_button_string", "button_index"), &Input::get_joy_button_string); + ObjectTypeDB::bind_method(_MD("get_joy_button_index_from_string", "button"), &Input::get_joy_button_index_from_string); + ObjectTypeDB::bind_method(_MD("get_joy_axis_string", "axis_index"), &Input::get_joy_axis_string); + ObjectTypeDB::bind_method(_MD("get_joy_axis_index_from_string", "axis"), &Input::get_joy_axis_index_from_string); ObjectTypeDB::bind_method(_MD("start_joy_vibration", "device", "weak_magnitude", "strong_magnitude", "duration"), &Input::start_joy_vibration, DEFVAL(0)); ObjectTypeDB::bind_method(_MD("stop_joy_vibration", "device"), &Input::stop_joy_vibration); ObjectTypeDB::bind_method(_MD("get_accelerometer"),&Input::get_accelerometer); @@ -88,7 +94,7 @@ void Input::get_argument_options(const StringName& p_function,int p_idx,List<Str #ifdef TOOLS_ENABLED String pf=p_function; - if (p_idx==0 && (pf=="is_action_pressed" || pf=="action_press" || pf=="action_release")) { + if (p_idx==0 && (pf=="is_action_pressed" || pf=="action_press" || pf=="action_release" || pf=="is_action_just_pressed" || pf=="is_action_just_released")) { List<PropertyInfo> pinfo; Globals::get_singleton()->get_property_list(&pinfo); diff --git a/core/os/input.h b/core/os/input.h index 16bcc0ff9a..d8f3be09df 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; @@ -94,6 +96,11 @@ public: virtual void set_custom_mouse_cursor(const RES& p_cursor,const Vector2& p_hotspot=Vector2())=0; virtual void set_mouse_in_window(bool p_in_window)=0; + virtual String get_joy_button_string(int p_button)=0; + virtual String get_joy_axis_string(int p_axis)=0; + virtual int get_joy_button_index_from_string(String p_button)=0; + virtual int get_joy_axis_index_from_string(String p_axis)=0; + Input(); }; diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp index f4a6de0e96..9982767be1 100644 --- a/core/os/input_event.cpp +++ b/core/os/input_event.cpp @@ -39,6 +39,8 @@ bool InputEvent::operator==(const InputEvent &p_event) const { } switch(type) { + case NONE: + return true; case KEY: return key.unicode == p_event.key.unicode && key.scancode == p_event.key.scancode @@ -77,6 +79,8 @@ bool InputEvent::operator==(const InputEvent &p_event) const { 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; @@ -200,7 +204,7 @@ bool InputEvent::is_pressed() const { case MOUSE_BUTTON: return mouse_button.pressed; case JOYSTICK_BUTTON: return joy_button.pressed; case SCREEN_TOUCH: return screen_touch.pressed; - case JOYSTICK_MOTION: return InputMap::get_singleton()->event_is_joy_motion_action_pressed(*this); + case JOYSTICK_MOTION: return ABS(joy_motion.axis_value) > 0.5; case ACTION: return action.pressed; default: {} } 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..c2b46a5420 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 { @@ -364,6 +372,7 @@ public: virtual void set_screen_orientation(ScreenOrientation p_orientation); ScreenOrientation get_screen_orientation() const; + virtual void enable_for_stealing_focus(ProcessID pid) {} virtual void move_window_to_foreground() {} virtual void debug_break(); diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp index 3de26573f4..c3a127afb9 100644 --- a/core/register_core_types.cpp +++ b/core/register_core_types.cpp @@ -33,6 +33,7 @@ #include "io/config_file.h" #include "os/main_loop.h" #include "io/packet_peer.h" +#include "math/a_star.h" #include "globals.h" #include "object_type_db.h" #include "geometry.h" @@ -48,6 +49,7 @@ #include "os/input.h" #include "core/io/xml_parser.h" #include "io/http_client.h" +#include "io/pck_packer.h" #include "packed_data_container.h" #include "func_ref.h" #include "input_map.h" @@ -145,8 +147,11 @@ void register_core_types() { ObjectTypeDB::register_type<ConfigFile>(); + ObjectTypeDB::register_type<PCKPacker>(); + ObjectTypeDB::register_type<PackedDataContainer>(); ObjectTypeDB::register_virtual_type<PackedDataContainerRef>(); + ObjectTypeDB::register_type<AStar>(); ip = IP::create(); diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp index 99d1e22c07..6d685d3c43 100644 --- a/core/script_debugger_remote.cpp +++ b/core/script_debugger_remote.cpp @@ -134,6 +134,8 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script,bool p_can_continue) { ERR_FAIL(); } + OS::get_singleton()->enable_for_stealing_focus(Globals::get_singleton()->get("editor_pid")); + packet_peer_stream->put_var("debug_enter"); packet_peer_stream->put_var(2); packet_peer_stream->put_var(p_can_continue); @@ -219,7 +221,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 +245,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()); @@ -271,6 +275,7 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script,bool p_can_continue) { set_depth(-1); set_lines_left(-1); + OS::get_singleton()->move_window_to_foreground(); break; } else if (command=="break") { ERR_PRINT("Got break when already broke!"); diff --git a/core/script_language.h b/core/script_language.h index 1b037e908c..53af4c74d1 100644 --- a/core/script_language.h +++ b/core/script_language.h @@ -122,6 +122,7 @@ public: virtual void get_script_method_list(List<MethodInfo> *p_list) const=0; virtual void get_script_property_list(List<PropertyInfo> *p_list) const=0; + virtual int get_member_line(const StringName& p_member) const { return 0; } Script() {} }; @@ -207,7 +208,26 @@ public: virtual bool has_named_classes() const=0; virtual int find_function(const String& p_function,const String& p_code) const=0; virtual String make_function(const String& p_class,const String& p_name,const StringArray& p_args) const=0; + virtual Error complete_code(const String& p_code, const String& p_base_path, Object*p_owner,List<String>* r_options,String& r_call_hint) { return ERR_UNAVAILABLE; } + + struct LookupResult { + enum Type { + RESULT_SCRIPT_LOCATION, + RESULT_CLASS, + RESULT_CLASS_CONSTANT, + RESULT_CLASS_PROPERTY, + RESULT_CLASS_METHOD + }; + Type type; + Ref<Script> script; + String class_name; + String class_member; + int location; + }; + + virtual Error lookup_code(const String& p_code, const String& p_symbol,const String& p_base_path, Object*p_owner,LookupResult& r_result) { return ERR_UNAVAILABLE; } + virtual void auto_indent_code(String& p_code,int p_from_line,int p_to_line) const=0; virtual void add_global_constant(const StringName& p_variable,const Variant& p_value)=0; 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 99740b365c..e8a71d4991 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -490,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); } { @@ -504,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); diff --git a/core/ustring.cpp b/core/ustring.cpp index 0d887210c3..2e907381f7 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -3073,6 +3073,11 @@ String String::simplify_path() const { } s =s.replace("\\","/"); + while(true){ // in case of using 2 or more slash + String compare = s.replace("//","/"); + if (s==compare) break; + else s=compare; + } Vector<String> dirs = s.split("/",false); for(int i=0;i<dirs.size();i++) { @@ -3173,7 +3178,7 @@ bool String::is_valid_identifier() const { //kind of poor should be rewritten properly -String String::world_wrap(int p_chars_per_line) const { +String String::word_wrap(int p_chars_per_line) const { int from=0; int last_space=0; diff --git a/core/ustring.h b/core/ustring.h index bb57b11d88..09d13a9e64 100644 --- a/core/ustring.h +++ b/core/ustring.h @@ -218,7 +218,7 @@ public: String c_escape() const; String c_unescape() const; String json_escape() const; - String world_wrap(int p_chars_per_line) const; + String word_wrap(int p_chars_per_line) const; String percent_encode() const; String percent_decode() const; diff --git a/core/variant.cpp b/core/variant.cpp index a78c07d819..b2afc9d080 100644 --- a/core/variant.cpp +++ b/core/variant.cpp @@ -429,6 +429,7 @@ bool Variant::can_convert(Variant::Type p_type_from,Variant::Type p_type_to) { return true; i++; } + } else if (invalid_types) { @@ -439,6 +440,8 @@ bool Variant::can_convert(Variant::Type p_type_from,Variant::Type p_type_to) { return false; i++; } + + return true; } return false; @@ -457,7 +460,6 @@ bool Variant::can_convert_strict(Variant::Type p_type_from,Variant::Type p_type_ }; const Type *valid_types=NULL; - const Type *invalid_types=NULL; switch(p_type_to) { case BOOL: { @@ -679,16 +681,6 @@ bool Variant::can_convert_strict(Variant::Type p_type_from,Variant::Type p_type_ return true; i++; } - } else if (invalid_types) { - - - int i=0; - while(invalid_types[i]!=NIL) { - - if (p_type_from==invalid_types[i]) - return false; - i++; - } } return false; 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..51cd4c2399 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; @@ -346,6 +346,7 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM0R(Vector2,angle); // VCALL_LOCALMEM1R(Vector2,cross); VCALL_LOCALMEM0R(Vector2,abs); + VCALL_LOCALMEM1R(Vector2,clamped); VCALL_LOCALMEM0R(Rect2,get_area); VCALL_LOCALMEM1R(Rect2,intersects); @@ -374,6 +375,7 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM0R(Vector3, ceil); VCALL_LOCALMEM1R(Vector3, distance_to); VCALL_LOCALMEM1R(Vector3, distance_squared_to); + VCALL_LOCALMEM1R(Vector3, angle_to); VCALL_LOCALMEM1R(Vector3, slide); VCALL_LOCALMEM1R(Vector3, reflect); @@ -464,8 +466,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM0R(Array,hash); VCALL_LOCALMEM1(Array,push_back); VCALL_LOCALMEM1(Array,push_front); - VCALL_LOCALMEM0(Array,pop_back); - VCALL_LOCALMEM0(Array,pop_front); + VCALL_LOCALMEM0R(Array,pop_back); + VCALL_LOCALMEM0R(Array,pop_front); VCALL_LOCALMEM1(Array,append); VCALL_LOCALMEM1(Array,resize); VCALL_LOCALMEM2(Array,insert); @@ -518,6 +520,7 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1(ByteArray,append); VCALL_LOCALMEM1(ByteArray,append_array); VCALL_LOCALMEM0(ByteArray,invert); + VCALL_LOCALMEM2R(ByteArray,subarray); VCALL_LOCALMEM0R(IntArray,size); VCALL_LOCALMEM2(IntArray,set); @@ -1324,14 +1327,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(); } @@ -1448,6 +1459,7 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC1(VECTOR2,VECTOR2,Vector2,reflect,VECTOR2,"vec",varray()); //ADDFUNC1(VECTOR2,REAL,Vector2,cross,VECTOR2,"with",varray()); ADDFUNC0(VECTOR2,VECTOR2,Vector2,abs,varray()); + ADDFUNC1(VECTOR2,VECTOR2,Vector2,clamped,REAL,"length",varray()); ADDFUNC0(RECT2,REAL,Rect2,get_area,varray()); ADDFUNC1(RECT2,BOOL,Rect2,intersects,RECT2,"b",varray()); @@ -1476,6 +1488,7 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC0(VECTOR3,VECTOR3,Vector3,ceil,varray()); ADDFUNC1(VECTOR3,REAL,Vector3,distance_to,VECTOR3,"b",varray()); ADDFUNC1(VECTOR3,REAL,Vector3,distance_squared_to,VECTOR3,"b",varray()); + ADDFUNC1(VECTOR3,REAL,Vector3,angle_to,VECTOR3,"to",varray()); ADDFUNC1(VECTOR3,VECTOR3,Vector3,slide,VECTOR3,"by",varray()); ADDFUNC1(VECTOR3,VECTOR3,Vector3,reflect,VECTOR3,"by",varray()); @@ -1584,6 +1597,7 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC2(RAW_ARRAY,INT,ByteArray,insert,INT,"idx",INT,"byte",varray()); ADDFUNC1(RAW_ARRAY,NIL,ByteArray,resize,INT,"idx",varray()); ADDFUNC0(RAW_ARRAY,NIL,ByteArray,invert,varray()); + ADDFUNC2(RAW_ARRAY,RAW_ARRAY,ByteArray,subarray,INT,"from",INT,"to",varray()); ADDFUNC0(RAW_ARRAY,STRING,ByteArray,get_string_from_ascii,varray()); ADDFUNC0(RAW_ARRAY,STRING,ByteArray,get_string_from_utf8,varray()); diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp index 023605a952..6b3828a572 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -986,7 +986,18 @@ Error VariantParser::parse_value(Token& token,Variant &value,Stream *p_stream,in InputEvent ie; - if (id=="KEY") { + if (id=="NONE") { + + ie.type=InputEvent::NONE; + + get_token(p_stream,token,line,r_err_str); + + if (token.type!=TK_PARENTHESIS_CLOSE) { + r_err_str="Expected ')'"; + return ERR_PARSE_ERROR; + } + + } else if (id=="KEY") { get_token(p_stream,token,line,r_err_str); if (token.type!=TK_COMMA) { @@ -2093,6 +2104,9 @@ Error VariantWriter::write(const Variant& p_variant, StoreStringFunc p_store_str case InputEvent::JOYSTICK_MOTION: { str+="JAXIS,"+itos(ev.joy_motion.axis)+","+itos(ev.joy_motion.axis_value); } break; + case InputEvent::NONE: { + str+="NONE"; + } break; default: {} } diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 07fd9980e0..a65f4abc46 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -2153,6 +2153,120 @@ <constants> </constants> </class> +<class name="AStar" inherits="Reference" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="add_point"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="pos" type="Vector3"> + </argument> + <argument index="2" name="weight_scale" type="float" default="1"> + </argument> + <description> + </description> + </method> + <method name="are_points_connected" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="to_id" type="int"> + </argument> + <description> + </description> + </method> + <method name="clear"> + <description> + </description> + </method> + <method name="connect_points"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="to_id" type="int"> + </argument> + <description> + </description> + </method> + <method name="disconnect_points"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="to_id" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_available_point_id" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_closest_point" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="to_pos" type="Vector3"> + </argument> + <description> + </description> + </method> + <method name="get_closest_pos_in_segment" qualifiers="const"> + <return type="Vector3"> + </return> + <argument index="0" name="to_pos" type="Vector3"> + </argument> + <description> + </description> + </method> + <method name="get_id_path"> + <return type="IntArray"> + </return> + <argument index="0" name="from_id" type="int"> + </argument> + <argument index="1" name="to_id" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_point_path"> + <return type="Vector3Array"> + </return> + <argument index="0" name="from_id" type="int"> + </argument> + <argument index="1" name="to_id" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_point_pos" qualifiers="const"> + <return type="Vector3"> + </return> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_point_weight_scale" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </method> + <method name="remove_point"> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="AcceptDialog" inherits="WindowDialog" category="Core"> <brief_description> Base dialog for user notification. @@ -2221,6 +2335,12 @@ Register a [LineEdit] in the dialog. When the enter key is pressed, the dialog will be accepted. </description> </method> + <method name="set_child_rect"> + <argument index="0" name="child" type="Control"> + </argument> + <description> + </description> + </method> <method name="set_hide_on_ok"> <argument index="0" name="enabled" type="bool"> </argument> @@ -4018,7 +4138,7 @@ </argument> <argument index="2" name="area_shape" type="int"> </argument> - <argument index="3" name="area_shape" type="int"> + <argument index="3" name="self_shape" type="int"> </argument> <description> This signal triggers only once when an area enters this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. @@ -4038,7 +4158,7 @@ </argument> <argument index="2" name="area_shape" type="int"> </argument> - <argument index="3" name="area_shape" type="int"> + <argument index="3" name="self_shape" type="int"> </argument> <description> This signal triggers only once when an area exits this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. @@ -4360,7 +4480,7 @@ </argument> <argument index="2" name="area_shape" type="int"> </argument> - <argument index="3" name="area_shape" type="int"> + <argument index="3" name="self_shape" type="int"> </argument> <description> This signal triggers only once when an area enters this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. @@ -4380,7 +4500,7 @@ </argument> <argument index="2" name="area_shape" type="int"> </argument> - <argument index="3" name="area_shape" type="int"> + <argument index="3" name="self_shape" type="int"> </argument> <description> This signal triggers only once when an area exits this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. @@ -6749,6 +6869,12 @@ <description> </description> </method> + <method name="get_custom_viewport" qualifiers="const"> + <return type="Viewport"> + </return> + <description> + </description> + </method> <method name="get_drag_margin" qualifiers="const"> <return type="float"> </return> @@ -6852,6 +6978,12 @@ <description> </description> </method> + <method name="set_custom_viewport"> + <argument index="0" name="viewport" type="Viewport"> + </argument> + <description> + </description> + </method> <method name="set_drag_margin"> <argument index="0" name="margin" type="int"> </argument> @@ -7554,6 +7686,12 @@ Canvas Item layer. [CanvasItem] nodes that are direct or indirect children of a [CanvasLayer] will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or above), or backgrounds (in layer -1 or below). </description> <methods> + <method name="get_custom_viewport" qualifiers="const"> + <return type="Viewport"> + </return> + <description> + </description> + </method> <method name="get_layer" qualifiers="const"> <return type="int"> </return> @@ -7596,13 +7734,6 @@ Return the base transform for this layer. </description> </method> - <method name="get_viewport" qualifiers="const"> - <return type="RID"> - </return> - <description> - Return the viewport RID for this layer. - </description> - </method> <method name="get_world_2d" qualifiers="const"> <return type="World2D"> </return> @@ -7610,6 +7741,12 @@ Return the [World2D] used by this layer. </description> </method> + <method name="set_custom_viewport"> + <argument index="0" name="viewport" type="Viewport"> + </argument> + <description> + </description> + </method> <method name="set_layer"> <argument index="0" name="layer" type="int"> </argument> @@ -8672,6 +8809,28 @@ <constants> </constants> </class> +<class name="ColorFrame" inherits="Control" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_frame_color" qualifiers="const"> + <return type="Color"> + </return> + <description> + </description> + </method> + <method name="set_frame_color"> + <argument index="0" name="color" type="Color"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="ColorPicker" inherits="BoxContainer" category="Core"> <brief_description> Color picker control. @@ -10871,7 +11030,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"> @@ -11261,6 +11420,184 @@ </constant> </constants> </class> +<class name="EditorFileSystem" inherits="Node" category="Core"> + <brief_description> + Resource filesystem, as the editor sees it. + </brief_description> + <description> + This object holds information of all resources in the filesystem, their types, etc. + </description> + <methods> + <method name="get_file_type" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <description> + Get the type of the file, given the full path. + </description> + </method> + <method name="get_filesystem"> + <return type="EditorFileSystemDirectory"> + </return> + <description> + Get the root directory object. + </description> + </method> + <method name="get_path"> + <return type="EditorFileSystemDirectory"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <description> + </description> + </method> + <method name="get_scanning_progress" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the scan progress for 0 to 1 if the FS is being scanned. + </description> + </method> + <method name="is_scanning" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return true of the filesystem is being scanned. + </description> + </method> + <method name="scan"> + <description> + Scan the filesystem for changes. + </description> + </method> + <method name="scan_sources"> + <description> + Check if the source of any imported resource changed. + </description> + </method> + <method name="update_file"> + <argument index="0" name="path" type="String"> + </argument> + <description> + Update a file information. Call this if an external program (not Godot) modified the file. + </description> + </method> + </methods> + <signals> + <signal name="filesystem_changed"> + <description> + Emitted if the filesystem changed. + </description> + </signal> + <signal name="sources_changed"> + <argument index="0" name="exist" type="bool"> + </argument> + <description> + Emitted if the source of any imported file changed. + </description> + </signal> + </signals> + <constants> + </constants> +</class> +<class name="EditorFileSystemDirectory" inherits="Object" category="Core"> + <brief_description> + A diretory for the resource filesystem. + </brief_description> + <description> + </description> + <methods> + <method name="find_dir_index" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> + <method name="find_file_index" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> + <method name="get_file" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_file_count" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_file_path" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_file_type" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_name"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="get_parent"> + <return type="EditorFileSystemDirectory"> + </return> + <description> + </description> + </method> + <method name="get_path" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="get_subdir"> + <return type="Object"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_subdir_count" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="is_missing_sources" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="EditorImportPlugin" inherits="Reference" category="Core"> <brief_description> Import plugin for editor @@ -11459,14 +11796,24 @@ This function is used for plugins that edit specific object types (nodes or resources). It requests the editor to edit the given object. </description> </method> - <method name="forward_input_event" qualifiers="virtual"> + <method name="forward_canvas_input_event" qualifiers="virtual"> <return type="bool"> </return> - <argument index="0" name="event" type="InputEvent"> + <argument index="0" name="canvas_xform" type="Matrix32"> + </argument> + <argument index="1" name="event" type="InputEvent"> </argument> <description> - This is a low level function for plugins that edit a given object type derived from CanvasItem to capture the input in the 2D editor viewport. The function is only being called if your object is being edited. - Return true if you want to capture the input, otherwise false. + If your plugin is active (because handles() returned true to the object), any input interaction with the 2D canvas editor will be first forwarded here. The canvas transform (containing zoom and offset to transform to edited world coordinates) is provided, but the input supplied is in untransformed coordinates to the canvas editor. Return true if you want to eat this event and not pass it to the canvas editor. + </description> + </method> + <method name="forward_draw_over_canvas" qualifiers="virtual"> + <argument index="0" name="canvas_xform" type="Matrix32"> + </argument> + <argument index="1" name="canvas" type="Control"> + </argument> + <description> + This function is called every time the 2D canvas editor draws (which overlays over the edited scene). Drawing over the supplied control will draw over the edited scene. To convert from control coordinates to edited scene coordinates (including zoom and offset), a transform is also provided. If you require this control to be redraw, call [method update_canvas](). </description> </method> <method name="forward_spatial_input_event" qualifiers="virtual"> @@ -11503,6 +11850,13 @@ Get the general settings for the editor (the same window that appears in the Settings menu). </description> </method> + <method name="get_editor_viewport"> + <return type="Control"> + </return> + <description> + Get the main editor control. Use this as a parent for main screens. + </description> + </method> <method name="get_name" qualifiers="virtual"> <return type="String"> </return> @@ -11510,6 +11864,20 @@ Get the name of the editor plugin. For main scren plugins this is what will appear in the selector (which by default is 2D, 3D, Script). </description> </method> + <method name="get_resource_filesystem"> + <return type="EditorFileSystem"> + </return> + <description> + Get the filesystem cache for all resources in the project. + </description> + </method> + <method name="get_resource_previewer"> + <return type="EditorResourcePreview"> + </return> + <description> + Get tool for generating resource previews. + </description> + </method> <method name="get_selection"> <return type="EditorSelection"> </return> @@ -11554,6 +11922,25 @@ Return true if this is a main screen editor plugin (it goes in the main screen selector together with 2D, 3D, Script). </description> </method> + <method name="hide_bottom_panel"> + <description> + </description> + </method> + <method name="inspect_object"> + <argument index="0" name="object" type="Object"> + </argument> + <argument index="1" name="for_property" type="String" default=""""> + </argument> + <description> + Inspect an object in the inspector. + </description> + </method> + <method name="make_bottom_panel_item_visible"> + <argument index="0" name="item" type="Control"> + </argument> + <description> + </description> + </method> <method name="make_visible" qualifiers="virtual"> <argument index="0" name="visible" type="bool"> </argument> @@ -11621,6 +12008,11 @@ Restore the plugin GUI layout saved by [method EditorPlugin.get_window_layout]. </description> </method> + <method name="update_canvas"> + <description> + Updates the control used to draw the edited scene over the 2D canvas. This is used together with [method forward_canvas_input_event](). + </description> + </method> </methods> <constants> <constant name="CONTAINER_TOOLBAR" value="0"> @@ -11657,6 +12049,117 @@ </constant> </constants> </class> +<class name="EditorResourcePreview" inherits="Node" category="Core"> + <brief_description> + Helper to generate previews of reources or files. + </brief_description> + <description> + This object is used to generate previews for resources of files. + </description> + <methods> + <method name="add_preview_generator"> + <argument index="0" name="generator" type="EditorResourcePreviewGenerator"> + </argument> + <description> + Create an own, custom preview generator. + </description> + </method> + <method name="check_for_invalidation"> + <argument index="0" name="path" type="String"> + </argument> + <description> + Check if the resource changed, if so it will be invalidated and the corresponding signal emitted. + </description> + </method> + <method name="queue_edited_resource_preview"> + <argument index="0" name="resource" type="Resource"> + </argument> + <argument index="1" name="receiver" type="Object"> + </argument> + <argument index="2" name="receiver_func" type="String"> + </argument> + <argument index="3" name="userdata" type="Variant"> + </argument> + <description> + Queue a resource being edited for preview (using an instance). Once the preview is ready, your receiver.receiver_func will be called either containing the preview texture or an empty texure (if no preview was possible). Callback must have the format: (path,texture,userdata). Userdata can be anything. + </description> + </method> + <method name="queue_resource_preview"> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="receiver" type="Object"> + </argument> + <argument index="2" name="receiver_func" type="String"> + </argument> + <argument index="3" name="userdata" type="Variant"> + </argument> + <description> + Queue a resource file for preview (using a path). Once the preview is ready, your receiver.receiver_func will be called either containing the preview texture or an empty texure (if no preview was possible). Callback must have the format: (path,texture,userdata). Userdata can be anything. + </description> + </method> + <method name="remove_preview_generator"> + <argument index="0" name="generator" type="EditorResourcePreviewGenerator"> + </argument> + <description> + Remove a custom preview generator. + </description> + </method> + </methods> + <signals> + <signal name="preview_invalidated"> + <argument index="0" name="path" type="String"> + </argument> + <description> + If a preview was invalidated (changed) this signal will emit (using the path of the preview) + </description> + </signal> + </signals> + <constants> + </constants> +</class> +<class name="EditorResourcePreviewGenerator" inherits="Reference" category="Core"> + <brief_description> + Custom generator of previews. + </brief_description> + <description> + Custom code to generate previews. Please check "file_dialog/thumbnail_size" in EditorSettings to find out the right size to do previews at. + </description> + <methods> + <method name="generate" qualifiers="virtual"> + <return type="Texture"> + </return> + <argument index="0" name="from" type="Resource"> + </argument> + <description> + Generate a preview from a given resource. This must be always implemented. + Returning an empty texture is an OK way to fail and let another generator take care. + Care must be taken because this function is always called from a thread (not the main thread). + </description> + </method> + <method name="generate_from_path" qualifiers="virtual"> + <return type="Texture"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <description> + Generate a preview directly from a path, implementing this is optional, as default code will load and call generate() + Returning an empty texture is an OK way to fail and let another generator take care. + Care must be taken because this function is always called from a thread (not the main thread). + </description> + </method> + <method name="handles" qualifiers="virtual"> + <return type="bool"> + </return> + <argument index="0" name="type" type="String"> + </argument> + <description> + Return if your generator supports this resource type. + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="EditorScenePostImport" inherits="Reference" category="Core"> <brief_description> Base script for post-processing scenes being imported. @@ -11732,6 +12235,13 @@ Get the list of selectes nodes. </description> </method> + <method name="get_transformable_selected_nodes"> + <return type="Array"> + </return> + <description> + Get the list of selected nodes, optimized for transform operations (ie, moving them, rotating, etc). This list avoids situations where a node is selected and also chid/grandchild. + </description> + </method> <method name="remove_node"> <argument index="0" name="node" type="Node"> </argument> @@ -13189,31 +13699,10 @@ However, by creating a [FuncRef] using the [method @GDScript.funcref] function, a reference to a function in a given object can be created, passed around and called. </description> <methods> - <method name="call_func"> + <method name="call_func" qualifiers="vararg"> <return type="Variant"> </return> - <argument index="0" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="1" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="2" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg4" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg5" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg6" type="Variant" default="NULL"> - </argument> - <argument index="7" name="arg7" type="Variant" default="NULL"> - </argument> - <argument index="8" name="arg8" type="Variant" default="NULL"> - </argument> - <argument index="9" name="arg9" type="Variant" default="NULL"> - </argument> <description> - Call the referenced function with the given arguments. The argument count must correspond to the required number of arguments in the function. Returns the return value of the function call. </description> </method> <method name="set_function"> @@ -13290,7 +13779,7 @@ <description> </description> </method> - <method name="new"> + <method name="new" qualifiers="vararg"> <return type="Object"> </return> <description> @@ -14465,6 +14954,8 @@ </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"> @@ -15390,10 +15881,11 @@ </argument> <argument index="2" name="ssl_validate_domain" type="bool" default="true"> </argument> + <argument index="3" name="method" type="int" default="0"> + </argument> + <argument index="4" name="request_data" type="String" default=""""> + </argument> <description> - Make a HTTP GET request. The url is the complete url including "http://" or "https://" which will be parsed for a host and a port. - The custom_headers are HTTP request headers which will be used. If User-Agent is not specified a Godot specific will be used. - The ssl_validate_domain specifies if in case of HTTPS the server certificate should be verified. </description> </method> <method name="set_body_size_limit"> @@ -16023,6 +16515,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> @@ -16124,7 +16618,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> @@ -16138,14 +16632,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"> @@ -16156,6 +16650,38 @@ Returns the current value of the joystick axis at given index (see JOY_* constants in [@Global Scope]) </description> </method> + <method name="get_joy_axis_index_from_string"> + <return type="int"> + </return> + <argument index="0" name="axis" type="String"> + </argument> + <description> + </description> + </method> + <method name="get_joy_axis_string"> + <return type="String"> + </return> + <argument index="0" name="axis_index" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_joy_button_index_from_string"> + <return type="int"> + </return> + <argument index="0" name="button" type="String"> + </argument> + <description> + </description> + </method> + <method name="get_joy_button_string"> + <return type="String"> + </return> + <argument index="0" name="button_index" type="int"> + </argument> + <description> + </description> + </method> <method name="get_joy_guid" qualifiers="const"> <return type="String"> </return> @@ -16192,7 +16718,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> @@ -16220,7 +16746,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"> @@ -16229,7 +16771,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"> @@ -16249,7 +16791,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"> @@ -16258,7 +16800,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"> @@ -16300,7 +16842,8 @@ <argument index="3" name="duration" type="float" default="0"> </argument> <description> - Starts to vibrate the joystick. Joysticks usually come with two rumble motors, a strong and a weak one. weak_magnitude is the strength of the weak motor (between 0 and 1) and strong_magnitude is the strength of the strong motor (between 0 and 1). duration is the duration of the effect in seconds (a duration of 0 will play the vibration indefinitely). + Starts to vibrate the joystick. Joysticks usually come with two rumble motors, a strong and a weak one. weak_magnitude is the strength of the weak motor (between 0 and 1) and strong_magnitude is the strength of the strong motor (between 0 and 1). duration is the duration of the effect in seconds (a duration of 0 will try to play the vibration indefinitely). + Note that not every hardware is compatible with long effect durations, it is recommended to restart an effect if in need to play it for more than a few seconds. </description> </method> <method name="stop_joy_vibration"> @@ -17947,6 +18490,13 @@ Returns the list of selected indexes. </description> </method> + <method name="get_v_scroll"> + <return type="Object"> + </return> + <description> + Returns the current vertical scroll bar for the List. + </description> + </method> <method name="is_item_disabled" qualifiers="const"> <return type="bool"> </return> @@ -17965,6 +18515,15 @@ Returns whether or not the item at the specified index is selectable. </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="is_same_column_width" qualifiers="const"> <return type="int"> </return> @@ -18101,6 +18660,15 @@ 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> @@ -18606,7 +19174,9 @@ </argument> <argument index="1" name="floor_normal" type="Vector2" default="Vector2(0, 0)"> </argument> - <argument index="2" name="max_bounces" type="int" default="4"> + <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> @@ -18635,10 +19205,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> @@ -19436,7 +20008,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. @@ -19462,6 +20034,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> @@ -19547,6 +20125,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> @@ -22479,7 +23063,7 @@ Replace a node in a scene by a given one. Subscriptions that pass through this node will be lost. </description> </method> - <method name="rpc"> + <method name="rpc" qualifiers="vararg"> <argument index="0" name="method" type="String"> </argument> <description> @@ -22493,22 +23077,22 @@ <description> </description> </method> - <method name="rpc_id"> - <argument index="0" name="peer_" type="int"> + <method name="rpc_id" qualifiers="vararg"> + <argument index="0" name="peer_id" type="int"> </argument> <argument index="1" name="method" type="String"> </argument> <description> </description> </method> - <method name="rpc_unreliable"> + <method name="rpc_unreliable" qualifiers="vararg"> <argument index="0" name="method" type="String"> </argument> <description> </description> </method> - <method name="rpc_unreliable_id"> - <argument index="0" name="peer_" type="int"> + <method name="rpc_unreliable_id" qualifiers="vararg"> + <argument index="0" name="peer_id" type="int"> </argument> <argument index="1" name="method" type="String"> </argument> @@ -23960,50 +24544,18 @@ Add a user signal (can be added anytime). Arguments are optional, but can be added as an array of dictionaries, each containing "name" and "type" (from [@Global Scope] TYPE_*). </description> </method> - <method name="call"> + <method name="call" qualifiers="vararg"> <return type="Variant"> </return> <argument index="0" name="method" type="String"> </argument> - <argument index="1" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="2" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg4" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg5" type="Variant" default="NULL"> - </argument> - <argument index="7" name="arg6" type="Variant" default="NULL"> - </argument> - <argument index="8" name="arg7" type="Variant" default="NULL"> - </argument> - <argument index="9" name="arg8" type="Variant" default="NULL"> - </argument> - <argument index="10" name="arg9" type="Variant" default="NULL"> - </argument> <description> - Call a function in the object, result is returned. </description> </method> - <method name="call_deferred"> + <method name="call_deferred" qualifiers="vararg"> <argument index="0" name="method" type="String"> </argument> - <argument index="1" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="2" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg4" type="Variant" default="NULL"> - </argument> <description> - Create and store a function in the object. The call will take place on idle time. </description> </method> <method name="callv"> @@ -24051,21 +24603,10 @@ Disconnect a signal from a method. </description> </method> - <method name="emit_signal"> + <method name="emit_signal" qualifiers="vararg"> <argument index="0" name="signal" type="String"> </argument> - <argument index="1" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="2" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg4" type="Variant" default="NULL"> - </argument> <description> - Emit a signal. Arguments are passed in an array. </description> </method> <method name="free"> @@ -27280,14 +27821,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"> @@ -31301,20 +31844,38 @@ Return the size of the array. </description> </method> + <method name="subarray"> + <return type="RawArray"> + </return> + <argument index="0" name="from" type="int"> + </argument> + <argument index="1" name="to" type="int"> + </argument> + <description> + Returns the slice of the [RawArray] between indices (inclusive) as a new [RawArray]. Any negative index is considered to be from the end of the array. + </description> + </method> </methods> <constants> </constants> </class> <class name="RayCast" inherits="Spatial" category="Core"> <brief_description> + Query the closest object intersecting a ray. </brief_description> <description> + A RayCast represents a line from its origin to its destination position [code]cast_to[/code], it is used to query the 3D space in order to find the closest object intersecting with the ray. + + RayCast can ignore some objects by adding them to the exception list via [code]add_exception[/code], setting proper filtering with layers, or by filtering object types with type masks. + + Only enabled raycasts will be able to query the space and report collisions! </description> <methods> <method name="add_exception"> <argument index="0" name="node" type="Object"> </argument> <description> + Adds a collision exception so the ray does not report collisions with the specified [code]node[/code]. </description> </method> <method name="add_exception_rid"> @@ -31325,30 +31886,35 @@ </method> <method name="clear_exceptions"> <description> + Removes all collision exception for this ray. </description> </method> <method name="get_cast_to" qualifiers="const"> <return type="Vector3"> </return> <description> + Return the destination point of this ray object. </description> </method> <method name="get_collider" qualifiers="const"> <return type="Object"> </return> <description> + Return the closest object the ray is pointing to. Note that this does not consider the length of the vector, so you must also use [method is_colliding] to check if the object returned is actually colliding with the ray. </description> </method> <method name="get_collider_shape" qualifiers="const"> <return type="int"> </return> <description> + Returns the collision shape of the closest object the ray is pointing to. </description> </method> <method name="get_collision_normal" qualifiers="const"> <return type="Vector3"> </return> <description> + Returns the normal of the intersecting object shape face containing the collision point. </description> </method> <method name="get_collision_point" qualifiers="const"> @@ -31362,30 +31928,35 @@ <return type="int"> </return> <description> + Returns the layer mask for this ray. </description> </method> <method name="get_type_mask" qualifiers="const"> <return type="int"> </return> <description> + Returns the type mask (types of objects to detect) for this ray. The value is a sum (bitwise OR'd) of constants available for [PhysicsDirectSpaceState]. </description> </method> <method name="is_colliding" qualifiers="const"> <return type="bool"> </return> <description> + Return whether the closest object the ray is pointing to is colliding with the vector (considering the vector length). </description> </method> <method name="is_enabled" qualifiers="const"> <return type="bool"> </return> <description> + Returns whether this raycast is enabled or not. </description> </method> <method name="remove_exception"> <argument index="0" name="node" type="Object"> </argument> <description> + Removes a collision exception so the ray does report collisions with the specified [code]node[/code]. </description> </method> <method name="remove_exception_rid"> @@ -31405,18 +31976,21 @@ <argument index="0" name="enabled" type="bool"> </argument> <description> + Enables the RayCast2D. Only enabled raycasts will be able to query the space and report collisions. </description> </method> <method name="set_layer_mask"> <argument index="0" name="mask" type="int"> </argument> <description> + Set the mask to filter objects. Only objects with at least the same mask element set will be detected. </description> </method> <method name="set_type_mask"> <argument index="0" name="mask" type="int"> </argument> <description> + Set the types of objects to detect. For [code]mask[/code] use a logic sum (OR operation) of constants defined in [PhysicsDirectSpaceState], eg. [code]PhysicsDirectSpaceState.TYPE_MASK_STATIC_BODY | PhysicsDirectSpaceState.TYPE_MASK_KINEMATIC_BODY[/code] to detect only those two types. </description> </method> </methods> @@ -31425,10 +31999,14 @@ </class> <class name="RayCast2D" inherits="Node2D" category="Core"> <brief_description> - Query the closest object intersecting a ray + Query the closest object intersecting a ray. </brief_description> <description> A RayCast2D represents a line from its origin to its destination position [code]cast_to[/code], it is used to query the 2D space in order to find the closest object intersecting with the ray. + + RayCast2D can ignore some objects by adding them to the exception list via [code]add_exception[/code], setting proper filtering with layers, or by filtering object types with type masks. + + Only enabled raycasts will be able to query the space and report collisions! </description> <methods> <method name="add_exception"> @@ -31453,7 +32031,7 @@ <return type="Vector2"> </return> <description> - Return the destination point of this ray object + Return the destination point of this ray object. </description> </method> <method name="get_collider" qualifiers="const"> @@ -31481,7 +32059,14 @@ <return type="Vector2"> </return> <description> - Returns the collision point in which the ray intersects the closest object. + Returns the collision point in which the ray intersects the closest object. This point is in [b]global[/b] coordinate system. + </description> + </method> + <method name="get_exclude_parent_body" qualifiers="const"> + <return type="bool"> + </return> + <description> + Returns whether this ray should hit your parent node, if it's a body. </description> </method> <method name="get_layer_mask" qualifiers="const"> @@ -31495,6 +32080,7 @@ <return type="int"> </return> <description> + Returns the type mask (types of objects to detect) for this ray. The value is a sum (bitwise OR'd) of constants available for [Physics2DDirectSpaceState]. </description> </method> <method name="is_colliding" qualifiers="const"> @@ -31508,7 +32094,7 @@ <return type="bool"> </return> <description> - Returns whether this raycast is enabled or not + Returns whether this raycast is enabled or not. </description> </method> <method name="remove_exception"> @@ -31538,16 +32124,25 @@ 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> + Toggle whether this ray should hit your parent node, if it's a body. + </description> + </method> <method name="set_layer_mask"> <argument index="0" name="mask" type="int"> </argument> <description> + Set the mask to filter objects. Only objects with at least the same mask element set will be detected. </description> </method> <method name="set_type_mask"> <argument index="0" name="mask" type="int"> </argument> <description> + Set the types of objects to detect. For [code]mask[/code] use a logic sum (OR operation) of constants defined in [Physics2DDirectSpaceState], eg. [code]Physics2DDirectSpaceState.TYPE_MASK_STATIC_BODY | Physics2DDirectSpaceState.TYPE_MASK_KINEMATIC_BODY[/code] to detect only those two types. </description> </method> </methods> @@ -31989,6 +32584,28 @@ <constants> </constants> </class> +<class name="RemoteTransform" inherits="Spatial" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_remote_node" qualifiers="const"> + <return type="NodePath"> + </return> + <description> + </description> + </method> + <method name="set_remote_node"> + <argument index="0" name="path" type="NodePath"> + </argument> + <description> + </description> + </method> + </methods> + <constants> + </constants> +</class> <class name="RemoteTransform2D" inherits="Node2D" category="Core"> <brief_description> </brief_description> @@ -34548,23 +35165,13 @@ <description> </description> <methods> - <method name="call_group"> + <method name="call_group" qualifiers="vararg"> <argument index="0" name="flags" type="int"> </argument> <argument index="1" name="group" type="String"> </argument> <argument index="2" name="method" type="String"> </argument> - <argument index="3" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="7" name="arg4" type="Variant" default="NULL"> - </argument> <description> </description> </method> @@ -34988,7 +35595,7 @@ A helper node for displaying scrollable elements (e.g. lists). </brief_description> <description> - A ScrollContainer node with a [Control] child and scrollbar child ([HScrollbar], [VScrollBar], or both) will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the minimum_size of the Control relative to the ScrollContainer. Works great with a [Panel] control. + A ScrollContainer node with a [Control] child and scrollbar child ([HScrollbar], [VScrollBar], or both) will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the minimum_size of the Control relative to the ScrollContainer. Works great with a [Panel] control. You can set EXPAND on children size flags, so they will upscale to ScrollContainer size if ScrollContainer size is bigger (scroll is invisible for chosen dimension). </description> <methods> <method name="get_h_scroll" qualifiers="const"> @@ -40527,6 +41134,16 @@ <description> </description> </signal> + <signal name="symbol_lookup"> + <argument index="0" name="symbol" type="String"> + </argument> + <argument index="1" name="row" type="int"> + </argument> + <argument index="2" name="column" type="int"> + </argument> + <description> + </description> + </signal> <signal name="text_changed"> <description> Emitted when the text changes. @@ -42537,18 +43154,33 @@ </class> <class name="Tree" inherits="Control" category="Core"> <brief_description> + Control to show a tree of items. </brief_description> <description> + This shows a tree of items that can be selected, expanded and collapsed. The tree can have multiple columns with custom controls like text editing, buttons and popups. It can be useful for structural displaying and interactions. + Trees are built via code, using [TreeItem] objects to create the structure. They have a single root but multiple root can be simulated if a dummy hidden root is added. + [codeblock] + func _ready(): + var tree = Tree.new() + var root = tree.create_item() + tree.set_hide_root(true) + var child1 = tree.create_item(root) + var child2 = tree.create_item(root) + var subchild1 = tree.create_item(child1) + subchild1.set_text(0, "Subchild1") + [/codeblock] </description> <methods> <method name="are_column_titles_visible" qualifiers="const"> <return type="bool"> </return> <description> + Get whether the column titles are being shown. </description> </method> <method name="clear"> <description> + Clear the tree. This erases all of the items. </description> </method> <method name="create_item"> @@ -42557,16 +43189,19 @@ <argument index="0" name="parent" type="TreeItem" default="NULL"> </argument> <description> + Create an item in the tree and add it as the last child of [code]parent[/code]. If parent is not given, it will be added as the last child of the root, or it'll the be the root itself if the tree is empty. </description> </method> <method name="ensure_cursor_is_visible"> <description> + Make the current selected item visible. This will scroll the tree to make sure the selected item is in sight. </description> </method> <method name="get_allow_rmb_select" qualifiers="const"> <return type="bool"> </return> <description> + Get whether a right click can select items. </description> </method> <method name="get_column_at_pos" qualifiers="const"> @@ -42575,6 +43210,7 @@ <argument index="0" name="pos" type="Vector2"> </argument> <description> + Get the column index under the given point. </description> </method> <method name="get_column_title" qualifiers="const"> @@ -42583,6 +43219,7 @@ <argument index="0" name="column" type="int"> </argument> <description> + Get the title of the given column. </description> </method> <method name="get_column_width" qualifiers="const"> @@ -42591,36 +43228,42 @@ <argument index="0" name="column" type="int"> </argument> <description> + Get the width of the given column in pixels. </description> </method> <method name="get_columns" qualifiers="const"> <return type="int"> </return> <description> + Get the amount of columns. </description> </method> <method name="get_custom_popup_rect" qualifiers="const"> <return type="Rect2"> </return> <description> + Get the rectangle for custom popups. Helper to create custom cell controls that display a popup. See [method TreeItem.set_cell_mode]. </description> </method> <method name="get_drop_mode_flags" qualifiers="const"> <return type="int"> </return> <description> + Get the flags of the current drop mode. </description> </method> <method name="get_edited" qualifiers="const"> <return type="TreeItem"> </return> <description> + Get the current edited item. This is only available for custom cell mode. </description> </method> <method name="get_edited_column" qualifiers="const"> <return type="int"> </return> <description> + Get the column of the cell for the current edited icon. This is only available for custom cell mode. </description> </method> <method name="get_item_area_rect" qualifiers="const"> @@ -42631,6 +43274,7 @@ <argument index="1" name="column" type="int" default="-1"> </argument> <description> + Get the rectangle area of the the specified item. If column is specified, only get the position and size of that column, otherwise get the rectangle containing all columns. </description> </method> <method name="get_item_at_pos" qualifiers="const"> @@ -42639,6 +43283,7 @@ <argument index="0" name="pos" type="Vector2"> </argument> <description> + Get the tree item at the specified position (relative to the tree origin position). </description> </method> <method name="get_next_selected"> @@ -42647,42 +43292,49 @@ <argument index="0" name="from" type="TreeItem"> </argument> <description> + Get the next selected item after the given one. </description> </method> <method name="get_pressed_button" qualifiers="const"> <return type="int"> </return> <description> + Get the index of the last pressed button. </description> </method> <method name="get_root"> <return type="TreeItem"> </return> <description> + Get the root item of the tree. </description> </method> <method name="get_scroll" qualifiers="const"> <return type="Vector2"> </return> <description> + Get the current scrolling position. </description> </method> <method name="get_selected" qualifiers="const"> <return type="TreeItem"> </return> <description> + Get the currently selected item. </description> </method> <method name="get_selected_column" qualifiers="const"> <return type="int"> </return> <description> + Get the column number of the current selection. </description> </method> <method name="get_single_select_cell_editing_only_when_already_selected" qualifiers="const"> <return type="bool"> </return> <description> + Get whether the editing of a cell should only happen when it is already selected. </description> </method> <method name="is_delayed_text_editor_enabled" qualifiers="const"> @@ -42695,12 +43347,14 @@ <return type="bool"> </return> <description> + Get whether the folding arrow is hidden. </description> </method> <method name="set_allow_rmb_select"> <argument index="0" name="allow" type="bool"> </argument> <description> + Set whether or not a right mouse button click can select items. </description> </method> <method name="set_column_expand"> @@ -42709,6 +43363,7 @@ <argument index="1" name="expand" type="bool"> </argument> <description> + Set whether a column will have the "Expand" flag of [Control]. </description> </method> <method name="set_column_min_width"> @@ -42717,6 +43372,7 @@ <argument index="1" name="min_width" type="int"> </argument> <description> + Set the minimum width of a column. </description> </method> <method name="set_column_title"> @@ -42725,18 +43381,21 @@ <argument index="1" name="title" type="String"> </argument> <description> + Set the title of a column. </description> </method> <method name="set_column_titles_visible"> <argument index="0" name="visible" type="bool"> </argument> <description> + Set whether the column titles visibility. </description> </method> <method name="set_columns"> <argument index="0" name="amount" type="int"> </argument> <description> + Set the amount of columns. </description> </method> <method name="set_delayed_text_editor"> @@ -42749,30 +43408,35 @@ <argument index="0" name="flags" type="int"> </argument> <description> + Set the drop mode as an OR combination of flags. See [code]DROP_MODE_*[/code] constants. </description> </method> <method name="set_hide_folding"> <argument index="0" name="hide" type="bool"> </argument> <description> + Set whether the folding arrow should be hidden. </description> </method> <method name="set_hide_root"> <argument index="0" name="enable" type="bool"> </argument> <description> + Set whether the root of the tree should be hidden. </description> </method> <method name="set_select_mode"> <argument index="0" name="mode" type="int"> </argument> <description> + Set the selection mode. Use one of the [code]SELECT_*[/code] constants. </description> </method> <method name="set_single_select_cell_editing_only_when_already_selected"> <argument index="0" name="enable" type="bool"> </argument> <description> + Set whether the editing of a cell should only happen when it is already selected. </description> </method> </methods> @@ -42785,32 +43449,38 @@ <argument index="2" name="id" type="int"> </argument> <description> + Emitted when a button on the tree was pressed (see [method TreeItem.add_button]). </description> </signal> <signal name="cell_selected"> <description> + Emitted when a cell is selected. </description> </signal> <signal name="custom_popup_edited"> <argument index="0" name="arrow_clicked" type="bool"> </argument> <description> + Emitted when a cell with the [code]CELL_MODE_CUSTOM[/code] is clicked to be edited. </description> </signal> <signal name="empty_tree_rmb_selected"> <argument index="0" name="pos" type="Vector2"> </argument> <description> + Emitted when the right mouse button is pressed if RMB selection is active and the tree is empty. </description> </signal> <signal name="item_activated"> <description> + Emitted when an item is activated (double-clicked). </description> </signal> <signal name="item_collapsed"> <argument index="0" name="item" type="Object"> </argument> <description> + Emitted when an item is collapsed by a click on the folding arrow. </description> </signal> <signal name="item_double_clicked"> @@ -42819,16 +43489,19 @@ </signal> <signal name="item_edited"> <description> + Emitted when an item is editted. </description> </signal> <signal name="item_rmb_selected"> <argument index="0" name="pos" type="Vector2"> </argument> <description> + Emitted when an item is selected with right mouse button. </description> </signal> <signal name="item_selected"> <description> + Emitted when an item is selected with right mouse button. </description> </signal> <signal name="multi_selected"> @@ -43533,10 +44206,10 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> - Stop animating and completely remove a tween, given its object and property/method pair. + Stop animating and completely remove a tween, given its object and property/method pair. Passing empty String as key will remove all tweens for given object. </description> </method> <method name="remove_all"> @@ -43551,10 +44224,10 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> - Resets a tween to the initial value (the one given, not the one before the tween), given its object and property/method pair. + Resets a tween to the initial value (the one given, not the one before the tween), given its object and property/method pair. Passing empty String as key will reset all tweens for given object. </description> </method> <method name="reset_all"> @@ -43569,10 +44242,10 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> - Continue animating a stopped tween, given its object and property/method pair. + Continue animating a stopped tween, given its object and property/method pair. Passing empty String as key will resume all tweens for given object. </description> </method> <method name="resume_all"> @@ -43631,10 +44304,10 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> - Stop animating a tween, given its object and property/method pair. + Stop animating a tween, given its object and property/method pair. Passing empty String as key will stop all tweens for given object. </description> </method> <method name="stop_all"> @@ -43800,24 +44473,12 @@ Common behavior is to create an action, then add do/undo calls to functions or property changes, then commiting the action. </description> <methods> - <method name="add_do_method"> + <method name="add_do_method" qualifiers="vararg"> <argument index="0" name="object" type="Object"> </argument> <argument index="1" name="method" type="String"> </argument> - <argument index="2" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg4" type="Variant" default="NULL"> - </argument> <description> - Add a call to a method in a given object with custom - arguments. </description> </method> <method name="add_do_property"> @@ -43838,23 +44499,12 @@ Add a 'do' reference that will be erased if the 'do' history is lost. This is useful mostly for new nodes created for the 'do' call. Do not use for resources. </description> </method> - <method name="add_undo_method"> + <method name="add_undo_method" qualifiers="vararg"> <argument index="0" name="object" type="Object"> </argument> <argument index="1" name="method" type="String"> </argument> - <argument index="2" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg4" type="Variant" default="NULL"> - </argument> <description> - Add a call to an undo method in a given object with custom arguments. Undo calls are used to revert 'do' calls. </description> </method> <method name="add_undo_property"> @@ -44125,6 +44775,14 @@ do_property]. Returns the angle in radians between the line connecting the two points and the x coordinate. </description> </method> + <method name="clamped"> + <return type="Vector2"> + </return> + <argument index="0" name="length" type="float"> + </argument> + <description> + </description> + </method> <method name="cubic_interpolate"> <return type="Vector2"> </return> @@ -44878,136 +45536,160 @@ do_property]. </class> <class name="VideoPlayer" inherits="Control" category="Core"> <brief_description> + Control to play video files. </brief_description> <description> + This control has the ability to play video streams. The only format accepted is the OGV Theora, so any other format must be converted before using in a project. </description> <methods> <method name="get_audio_track" qualifiers="const"> <return type="int"> </return> <description> + Get the selected audio track (for multitrack videos). </description> </method> <method name="get_buffering_msec" qualifiers="const"> <return type="int"> </return> <description> + Get the amount of miliseconds to store in buffer while playing. </description> </method> <method name="get_stream" qualifiers="const"> <return type="VideoStream"> </return> <description> + Get the video stream. </description> </method> <method name="get_stream_name" qualifiers="const"> <return type="String"> </return> <description> + Get the name of the video stream. </description> </method> <method name="get_stream_pos" qualifiers="const"> <return type="float"> </return> <description> + Get the current position of the stream, in seconds. </description> </method> <method name="get_video_texture"> <return type="Texture"> </return> <description> + Get the current frame of the video as a [Texture]. </description> </method> <method name="get_volume" qualifiers="const"> <return type="float"> </return> <description> + Get the volume of the audio track as a linear value. </description> </method> <method name="get_volume_db" qualifiers="const"> <return type="float"> </return> <description> + Get the volume of the audio track in decibels. </description> </method> <method name="has_autoplay" qualifiers="const"> <return type="bool"> </return> <description> + Get whether or not the video is set as autoplay. </description> </method> <method name="has_expand" qualifiers="const"> <return type="bool"> </return> <description> + Get whether or not the expand property is set. </description> </method> <method name="is_paused" qualifiers="const"> <return type="bool"> </return> <description> + Get whether or not the video is paused. </description> </method> <method name="is_playing" qualifiers="const"> <return type="bool"> </return> <description> + Get whether or not the video is playing. </description> </method> <method name="play"> <description> + Start the video playback. </description> </method> <method name="set_audio_track"> <argument index="0" name="track" type="int"> </argument> <description> + Set the audio track (for multitrack videos). </description> </method> <method name="set_autoplay"> <argument index="0" name="enabled" type="bool"> </argument> <description> + Set whether this node should start playing automatically. </description> </method> <method name="set_buffering_msec"> <argument index="0" name="msec" type="int"> </argument> <description> + Set the amount of miliseconds to buffer during playback. </description> </method> <method name="set_expand"> <argument index="0" name="enable" type="bool"> </argument> <description> + Set the expand property. If enabled, the video will grow or shrink to fit the player size, otherwise it will play at the stream resolution. </description> </method> <method name="set_paused"> <argument index="0" name="paused" type="bool"> </argument> <description> + Set whether the video should pause the playback. </description> </method> <method name="set_stream"> <argument index="0" name="stream" type="VideoStream"> </argument> <description> + Set the video stream for this player. </description> </method> <method name="set_volume"> <argument index="0" name="volume" type="float"> </argument> <description> + Set the audio volume as a linear value. </description> </method> <method name="set_volume_db"> <argument index="0" name="db" type="float"> </argument> <description> + Set the audio volume in decibels. </description> </method> <method name="stop"> <description> + Stop the video playback. </description> </method> </methods> @@ -45187,6 +45869,12 @@ do_property]. Return the 3D world of the viewport. </description> </method> + <method name="get_world_2d" qualifiers="const"> + <return type="World2D"> + </return> + <description> + </description> + </method> <method name="gui_get_drag_data" qualifiers="const"> <return type="Variant"> </return> @@ -45410,6 +46098,12 @@ do_property]. Change the 3D world of the viewport. </description> </method> + <method name="set_world_2d"> + <argument index="0" name="world_2d" type="World2D"> + </argument> + <description> + </description> + </method> <method name="unhandled_input"> <argument index="0" name="local_event" type="InputEvent"> </argument> @@ -45730,12 +46424,24 @@ do_property]. <description> </description> <methods> + <method name="get_aabb" qualifiers="const"> + <return type="AABB"> + </return> + <description> + </description> + </method> <method name="get_layer_mask" qualifiers="const"> <return type="int"> </return> <description> </description> </method> + <method name="get_transformed_aabb" qualifiers="const"> + <return type="AABB"> + </return> + <description> + </description> + </method> <method name="set_base"> <argument index="0" name="base" type="RID"> </argument> @@ -46156,6 +46862,40 @@ do_property]. <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> @@ -46178,6 +46918,40 @@ do_property]. <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> @@ -46506,6 +47280,16 @@ do_property]. <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> @@ -46576,6 +47360,12 @@ do_property]. <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> @@ -46630,6 +47420,12 @@ do_property]. <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"> @@ -46724,12 +47520,24 @@ do_property]. <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> @@ -46750,16 +47558,6 @@ do_property]. <constants> </constants> </class> -<class name="VisualScriptInputSelector" inherits="VisualScriptNode" category="Core"> - <brief_description> - </brief_description> - <description> - </description> - <methods> - </methods> - <constants> - </constants> -</class> <class name="VisualScriptIterator" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -47290,6 +48088,16 @@ do_property]. <constants> </constants> </class> +<class name="VisualScriptSwitch" inherits="VisualScriptNode" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + </methods> + <constants> + </constants> +</class> <class name="VisualScriptTypeCast" inherits="VisualScriptNode" category="Core"> <brief_description> </brief_description> @@ -49305,14 +50113,17 @@ do_property]. </class> <class name="XMLParser" inherits="Reference" category="Core"> <brief_description> + Low-level class for creating parsers for XML files. </brief_description> <description> + This class can serve as base to make custom XML parsers. Since XML is a very flexible standard, this interface is low level so it can be applied to any possible schema. </description> <methods> <method name="get_attribute_count" qualifiers="const"> <return type="int"> </return> <description> + Get the amount of attributes in the current element. </description> </method> <method name="get_attribute_name" qualifiers="const"> @@ -49321,6 +50132,7 @@ do_property]. <argument index="0" name="idx" type="int"> </argument> <description> + Get the name of the attribute specified by the index in [code]idx[/code] argument. </description> </method> <method name="get_attribute_value" qualifiers="const"> @@ -49329,12 +50141,14 @@ do_property]. <argument index="0" name="idx" type="int"> </argument> <description> + Get the value of the attribute specified by the index in [code]idx[/code] argument. </description> </method> <method name="get_current_line" qualifiers="const"> <return type="int"> </return> <description> + Get the current line in the parsed file (currently not implemented). </description> </method> <method name="get_named_attribute_value" qualifiers="const"> @@ -49343,6 +50157,7 @@ do_property]. <argument index="0" name="name" type="String"> </argument> <description> + Get the value of a certain attribute of the current element by name. This will raise an error if the element has no such attribute. </description> </method> <method name="get_named_attribute_value_safe" qualifiers="const"> @@ -49351,30 +50166,35 @@ do_property]. <argument index="0" name="name" type="String"> </argument> <description> + Get the value of a certain attribute of the current element by name. This will return an empty [String] if the attribute is not found. </description> </method> <method name="get_node_data" qualifiers="const"> <return type="String"> </return> <description> + Get the contents of a text node. This will raise an error in any other type of node. </description> </method> <method name="get_node_name" qualifiers="const"> <return type="String"> </return> <description> + Get the name of the current element node. This will raise an error if the current node type is not [code]NODE_ELEMENT[/code] nor [code]NODE_ELEMENT_END[/code] </description> </method> <method name="get_node_offset" qualifiers="const"> <return type="int"> </return> <description> + Get the byte offset of the current node since the beginning of the file or buffer. </description> </method> <method name="get_node_type"> <return type="int"> </return> <description> + Get the type of the current node. Compare with [code]NODE_*[/code] constants. </description> </method> <method name="has_attribute" qualifiers="const"> @@ -49383,12 +50203,14 @@ do_property]. <argument index="0" name="name" type="String"> </argument> <description> + Check whether or not the current element has a certain attribute. </description> </method> <method name="is_empty" qualifiers="const"> <return type="bool"> </return> <description> + Check whether the current element is empty (this only works for completely empty tags, e.g. <element \>). </description> </method> <method name="open"> @@ -49397,6 +50219,7 @@ do_property]. <argument index="0" name="file" type="String"> </argument> <description> + Open a XML file for parsing. This returns an error code. </description> </method> <method name="open_buffer"> @@ -49405,12 +50228,14 @@ do_property]. <argument index="0" name="buffer" type="RawArray"> </argument> <description> + Open a XML raw buffer for parsing. This returns an error code. </description> </method> <method name="read"> <return type="int"> </return> <description> + Read the next node of the file. This returns an error code. </description> </method> <method name="seek"> @@ -49419,27 +50244,36 @@ do_property]. <argument index="0" name="pos" type="int"> </argument> <description> + Move the buffer cursor to a certain offset (since the beginning) and read the next node there. This returns an error code. </description> </method> <method name="skip_section"> <description> + Skips the current section. If the node contains other elements, they will be ignored and the cursor will go to the closing of the current element. </description> </method> </methods> <constants> <constant name="NODE_NONE" value="0"> + There's no node (no file or buffer opened) </constant> <constant name="NODE_ELEMENT" value="1"> + Element (tag) </constant> <constant name="NODE_ELEMENT_END" value="2"> + End of element </constant> <constant name="NODE_TEXT" value="3"> + Text node </constant> <constant name="NODE_COMMENT" value="4"> + Comment node </constant> <constant name="NODE_CDATA" value="5"> + CDATA content </constant> <constant name="NODE_UNKNOWN" value="6"> + Unknown node </constant> </constants> </class> diff --git a/drivers/SCsub b/drivers/SCsub index 79cbe50685..8243483e17 100644 --- a/drivers/SCsub +++ b/drivers/SCsub @@ -17,6 +17,7 @@ SConscript('gl_context/SCsub'); SConscript('pnm/SCsub'); if (env['openssl']!='no'): + env.Append(CPPFLAGS=['-DOPENSSL_ENABLED']); env_drivers.Append(CPPFLAGS=['-DOPENSSL_ENABLED']); if (env['openssl']=="builtin"): env_drivers.Append(CPPPATH=['#drivers/builtin_openssl2']) diff --git a/drivers/builtin_openssl2/SCsub b/drivers/builtin_openssl2/SCsub index bd0f428cfc..0c035cc4a5 100644 --- a/drivers/builtin_openssl2/SCsub +++ b/drivers/builtin_openssl2/SCsub @@ -642,6 +642,7 @@ openssl_sources = [ #env.drivers_sources+=openssl_sources +env.Append(CPPPATH=["#drivers/builtin_openssl2"]) env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/crypto"]) env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/openssl"]) env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/crypto/evp"]) @@ -650,9 +651,13 @@ env_drivers.Append(CPPPATH=["#drivers/builtin_openssl2/crypto/modes"]) #env_ssl.Append(CPPPATH=["#drivers/builtin_openssl2/crypto/store"]) env_drivers.Append(CPPFLAGS=["-DOPENSSL_NO_ASM","-DOPENSSL_THREADS","-DL_ENDIAN"]) +if "platform" in env and env["platform"] == "winrt": + openssl_sources += ['winrt.cpp'] + # Workaround for compilation error with GCC/Clang when -Werror is too greedy (GH-4517) import os -if not (os.name=="nt" and os.getenv("VSINSTALLDIR")!=None): # not Windows and not MSVC +import methods +if not (os.name=="nt" and methods.msvc_is_detected() ): # not Windows and not MSVC env_drivers.Append(CFLAGS=["-Wno-error=implicit-function-declaration"]) env_drivers.add_source_files(env.drivers_sources,openssl_sources) diff --git a/drivers/builtin_openssl2/crypto/rand/rand_win.c b/drivers/builtin_openssl2/crypto/rand/rand_win.c index 06670ae017..70fd52a7aa 100644 --- a/drivers/builtin_openssl2/crypto/rand/rand_win.c +++ b/drivers/builtin_openssl2/crypto/rand/rand_win.c @@ -118,8 +118,10 @@ # ifndef _WIN32_WINNT # define _WIN32_WINNT 0x0400 # endif +#ifndef WINRT_ENABLED # include <wincrypt.h> # include <tlhelp32.h> +#endif /* * Limit the time spent walking through the heap, processes, threads and @@ -161,7 +163,7 @@ typedef struct tagCURSORINFO { # define CURSOR_SHOWING 0x00000001 # endif /* CURSOR_SHOWING */ -# if !defined(OPENSSL_SYS_WINCE) +# if !defined(OPENSSL_SYS_WINCE) && !defined(WINRT_ENABLED) typedef BOOL(WINAPI *CRYPTACQUIRECONTEXTW) (HCRYPTPROV *, LPCWSTR, LPCWSTR, DWORD, DWORD); typedef BOOL(WINAPI *CRYPTGENRANDOM) (HCRYPTPROV, DWORD, BYTE *); @@ -196,6 +198,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE); # endif /* 1 */ # endif /* !OPENSSL_SYS_WINCE */ +#if !defined(WINRT_ENABLED) int RAND_poll(void) { MEMORYSTATUS m; @@ -580,6 +583,8 @@ int RAND_poll(void) return (1); } +#endif // WINRT_ENABLED + int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam) { double add_entropy = 0; @@ -682,7 +687,7 @@ static void readtimer(void) static void readscreen(void) { -# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN) +# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN) && !defined(WINRT_ENABLED) HDC hScrDC; /* screen DC */ HBITMAP hBitmap; /* handle for our bitmap */ BITMAP bm; /* bitmap properties */ diff --git a/drivers/builtin_openssl2/openssl/dtls1.h b/drivers/builtin_openssl2/openssl/dtls1.h index 64ad3c87d0..a58aca248d 100644 --- a/drivers/builtin_openssl2/openssl/dtls1.h +++ b/drivers/builtin_openssl2/openssl/dtls1.h @@ -81,6 +81,9 @@ # include <sys/time.h> # endif # endif +#ifdef WINRT_ENABLED +#include <winsock2.h> +#endif #ifdef __cplusplus extern "C" { diff --git a/drivers/builtin_openssl2/winrt.cpp b/drivers/builtin_openssl2/winrt.cpp new file mode 100644 index 0000000000..c3a6f8bfcc --- /dev/null +++ b/drivers/builtin_openssl2/winrt.cpp @@ -0,0 +1,155 @@ +/* Snippets extracted from https://github.com/Microsoft/openssl/blob/ec7e430e06e4e3ac87c183dee33cb216814cf980/ms/winrt.cpp + * Adapted for Godot definitions + */ +/* winrt.cpp + * Copyright 2014 Microsoft Corporation + * C++/CX Entropy/shims for Windows Phone/Windows Store platform + * written by Alejandro Jimenez Martinez + * (aljim@microsoft.com) for the OpenSSL project 2014. + */ + +#include <windows.h> +#if defined(WINAPI_FAMILY) +extern "C" +{ + unsigned entropyRT(BYTE *buffer, unsigned len); + void RAND_add(const void *buf,int num,double entropy); + int RAND_poll(void); +} +#endif + +unsigned entropyRT(BYTE *buffer, unsigned len) + { + using namespace Platform; + using namespace Windows::Foundation; + using namespace Windows::Foundation::Collections; + using namespace Windows::Security::Cryptography; + using namespace Windows::Storage::Streams; + IBuffer ^buf = CryptographicBuffer::GenerateRandom(len); + Array<unsigned char> ^arr; + CryptographicBuffer::CopyToByteArray(buf, &arr); + unsigned arrayLen = arr->Length; + + // Make sure not to overflow the copy + arrayLen = (arrayLen > len) ? len : arrayLen; + memcpy(buffer, arr->Data, arrayLen); + return arrayLen; + } + +int RAND_poll(void) + { + BYTE buf[60]; + unsigned collected = entropyRT(buf , sizeof(buf)); + RAND_add(buf, collected, collected); + return 1; + } + +#if defined(WINRT_ENABLED) +extern "C" +{ +#include<stdio.h> +#include<string.h> +#include<stdlib.h> + + void* GetModuleHandle( + _In_opt_ LPCTSTR lpModuleName + ) + { + return NULL; + } + //no log for phone + int RegisterEventSource( + _In_ LPCTSTR lpUNCServerName, + _In_ LPCTSTR lpSourceName + ) + { + return NULL; + } + + int ReportEvent( + _In_ HANDLE hEventLog, + _In_ WORD wType, + _In_ WORD wCategory, + _In_ DWORD dwEventID, + _In_ PSID lpUserSid, + _In_ WORD wNumStrings, + _In_ DWORD dwDataSize, + _In_ LPCTSTR *lpStrings, + _In_ LPVOID lpRawData + ) + { + return 0; + } + int MessageBox( + _In_opt_ HWND hWnd, + _In_opt_ LPCTSTR lpText, + _In_opt_ LPCTSTR lpCaption, + _In_ UINT uType + ) + { + return 0; + } + int __cdecl GetProcessWindowStation(void) + { + return NULL; + } + BOOL __cdecl GetUserObjectInformationW( + _In_ HANDLE hObj, + _In_ int nIndex, + _Out_opt_ PVOID pvInfo, + _In_ DWORD nLength, + _Out_opt_ LPDWORD lpnLengthNeeded + ) + { + return 0; + } + int __cdecl GetStdHandle( + _In_ DWORD nStdHandle + ) + { + return 0; + } + BOOL DeregisterEventSource( + _Inout_ HANDLE hEventLog + ) + { + return 0; + } + char *getenv( + const char *varname + ) + { + //hardcoded environmental variables used for the appx testing application for store/phone + if (!strcmp(varname, "OPENSSL_CONF")) + { + return "./openssl.cnf"; + } + return 0; + } + int setenv(const char *envname, const char *envval, int overwrite) + { + return -1; + } + int _getch(void) + { + return 0; + } + int _kbhit() + { + return 0; + } + BOOL __cdecl FlushConsoleInputBuffer( + _In_ HANDLE hConsoleInput + ) + { + return 0; + } + int winrt_GetTickCount(void) + { + LARGE_INTEGER t; + return(int) (QueryPerformanceCounter(&t) ? t.QuadPart : 0); + } + void *OPENSSL_UplinkTable [26]= {0}; +} //extern C + +#endif /*defined(WINRT_ENABLED)*/ diff --git a/drivers/builtin_openssl2/winrt_fix.patch b/drivers/builtin_openssl2/winrt_fix.patch new file mode 100644 index 0000000000..caf180a75b --- /dev/null +++ b/drivers/builtin_openssl2/winrt_fix.patch @@ -0,0 +1,64 @@ +diff --git a/drivers/builtin_openssl2/crypto/rand/rand_win.c b/drivers/builtin_openssl2/crypto/rand/rand_win.c +index 06670ae..70fd52a 100644 +--- a/drivers/builtin_openssl2/crypto/rand/rand_win.c ++++ b/drivers/builtin_openssl2/crypto/rand/rand_win.c +@@ -118,8 +118,10 @@ + # ifndef _WIN32_WINNT + # define _WIN32_WINNT 0x0400 + # endif ++#ifndef WINRT_ENABLED + # include <wincrypt.h> + # include <tlhelp32.h> ++#endif + + /* + * Limit the time spent walking through the heap, processes, threads and +@@ -161,7 +163,7 @@ typedef struct tagCURSORINFO { + # define CURSOR_SHOWING 0x00000001 + # endif /* CURSOR_SHOWING */ + +-# if !defined(OPENSSL_SYS_WINCE) ++# if !defined(OPENSSL_SYS_WINCE) && !defined(WINRT_ENABLED) + typedef BOOL(WINAPI *CRYPTACQUIRECONTEXTW) (HCRYPTPROV *, LPCWSTR, LPCWSTR, + DWORD, DWORD); + typedef BOOL(WINAPI *CRYPTGENRANDOM) (HCRYPTPROV, DWORD, BYTE *); +@@ -196,6 +198,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE); + # endif /* 1 */ + # endif /* !OPENSSL_SYS_WINCE */ + ++#if !defined(WINRT_ENABLED) + int RAND_poll(void) + { + MEMORYSTATUS m; +@@ -580,6 +583,8 @@ int RAND_poll(void) + return (1); + } + ++#endif // WINRT_ENABLED ++ + int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam) + { + double add_entropy = 0; +@@ -682,7 +687,7 @@ static void readtimer(void) + + static void readscreen(void) + { +-# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN) ++# if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN) && !defined(WINRT_ENABLED) + HDC hScrDC; /* screen DC */ + HBITMAP hBitmap; /* handle for our bitmap */ + BITMAP bm; /* bitmap properties */ +diff --git a/drivers/builtin_openssl2/openssl/dtls1.h b/drivers/builtin_openssl2/openssl/dtls1.h +index 64ad3c8..a58aca2 100644 +--- a/drivers/builtin_openssl2/openssl/dtls1.h ++++ b/drivers/builtin_openssl2/openssl/dtls1.h +@@ -81,6 +81,9 @@ + # include <sys/time.h> + # endif + # endif ++#ifdef WINRT_ENABLED ++#include <winsock2.h> ++#endif + + #ifdef __cplusplus + extern "C" { diff --git a/drivers/freetype/SCsub b/drivers/freetype/SCsub index 0c7ab91ba2..4ddc785088 100644 --- a/drivers/freetype/SCsub +++ b/drivers/freetype/SCsub @@ -48,6 +48,11 @@ ft_sources=[\ if (env["freetype"]=="builtin"): + + # Include header for WinRT to fix build issues + if "platform" in env and env["platform"] == "winrt": + env.Append(CCFLAGS=['/FI', '"drivers/freetype/winrtdef.h"']) + # fix for Windows' shell miserably failing on long lines, split in two libraries half1=[] half2=[] diff --git a/tools/ios_xcode_template/godot_ios/main.m b/drivers/freetype/winrtdef.h index 3e4ea5e129..69c6baf532 100644 --- a/tools/ios_xcode_template/godot_ios/main.m +++ b/drivers/freetype/winrtdef.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* main.m */ +/* winrtdef.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,13 +27,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#import <UIKit/UIKit.h> - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} +// "generic" is a reserved keyword in C++/CX code +// this avoids the errors in the variable name from Freetype code +#define generic freetype_generic diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index 3809f4c7b9..a7edc8d935 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -36,6 +36,7 @@ #include "servers/visual/particle_system_sw.h" #include "gl_context/context_gl.h" #include <string.h> +#include <stdlib.h> #ifdef GLEW_ENABLED #define _GL_HALF_FLOAT_OES 0x140B @@ -1998,7 +1999,6 @@ void RasterizerGLES2::mesh_add_surface(RID p_mesh,VS::PrimitiveType p_primitive, if (use_VBO) { elem_size=VS::ARRAY_WEIGHTS_SIZE*sizeof(GLushort); - elem_count=VS::ARRAY_WEIGHTS_SIZE; valid_local=false; bind=true; normalize=true; @@ -2007,7 +2007,6 @@ void RasterizerGLES2::mesh_add_surface(RID p_mesh,VS::PrimitiveType p_primitive, } else { elem_size=VS::ARRAY_WEIGHTS_SIZE*sizeof(GLfloat); - elem_count=VS::ARRAY_WEIGHTS_SIZE; valid_local=false; bind=false; datatype=GL_FLOAT; @@ -2019,7 +2018,6 @@ void RasterizerGLES2::mesh_add_surface(RID p_mesh,VS::PrimitiveType p_primitive, if (use_VBO) { elem_size=VS::ARRAY_WEIGHTS_SIZE*sizeof(GLubyte); - elem_count=VS::ARRAY_WEIGHTS_SIZE; valid_local=false; bind=true; datatype=GL_UNSIGNED_BYTE; @@ -2027,7 +2025,6 @@ void RasterizerGLES2::mesh_add_surface(RID p_mesh,VS::PrimitiveType p_primitive, } else { elem_size=VS::ARRAY_WEIGHTS_SIZE*sizeof(GLushort); - elem_count=VS::ARRAY_WEIGHTS_SIZE; valid_local=false; bind=false; datatype=GL_UNSIGNED_SHORT; @@ -4666,7 +4663,7 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { enablers.push_back("#define USE_LIGHT_SHADER_CODE\n"); } if (light_flags.uses_shadow_color) { - enablers.push_back("#define USE_LIGHT_SHADOW_COLOR\n"); + enablers.push_back("#define USE_OUTPUT_SHADOW_COLOR\n"); } if (light_flags.uses_time || fragment_flags.uses_time || vertex_flags.uses_time) { enablers.push_back("#define USE_TIME\n"); @@ -4709,7 +4706,7 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { enablers.push_back("#define USE_TEXPIXEL_SIZE\n"); } if (light_flags.uses_shadow_color) { - enablers.push_back("#define USE_LIGHT_SHADOW_COLOR\n"); + enablers.push_back("#define USE_OUTPUT_SHADOW_COLOR\n"); } if (vertex_flags.uses_worldvec) { @@ -5210,7 +5207,6 @@ bool RasterizerGLES2::_setup_material(const Geometry *p_geometry,const Material material_shader.set_conditional(MaterialShaderGLES2::USE_FOG,current_env && current_env->fx_enabled[VS::ENV_FX_FOG]); //glDepthMask( true ); - } @@ -5460,9 +5456,16 @@ void RasterizerGLES2::_setup_light(uint16_t p_light) { } - light_data[VL_LIGHT_ATTENUATION][0]=l->vars[VS::LIGHT_PARAM_ENERGY]; - light_data[VL_LIGHT_ATTENUATION][1]=l->vars[VS::LIGHT_PARAM_RADIUS]; - light_data[VL_LIGHT_ATTENUATION][2]=l->vars[VS::LIGHT_PARAM_ATTENUATION]; + light_data[VL_LIGHT_ATTENUATION][0] = l->vars[VS::LIGHT_PARAM_ENERGY]; + + if (l->type == VS::LIGHT_DIRECTIONAL) { + light_data[VL_LIGHT_ATTENUATION][1] = l->directional_shadow_param[VS::LIGHT_DIRECTIONAL_SHADOW_PARAM_MAX_DISTANCE]; + } + else{ + light_data[VL_LIGHT_ATTENUATION][1] = l->vars[VS::LIGHT_PARAM_RADIUS]; + } + + light_data[VL_LIGHT_ATTENUATION][2] = l->vars[VS::LIGHT_PARAM_ATTENUATION]; light_data[VL_LIGHT_SPOT_ATTENUATION][0]=Math::cos(Math::deg2rad(l->vars[VS::LIGHT_PARAM_SPOT_ANGLE])); light_data[VL_LIGHT_SPOT_ATTENUATION][1]=l->vars[VS::LIGHT_PARAM_SPOT_ATTENUATION]; @@ -6778,7 +6781,7 @@ void RasterizerGLES2::_render_list_forward(RenderList *p_render_list,const Trans } } - if (e->instance->billboard || e->instance->depth_scale) { + if (e->instance->billboard || e->instance->billboard_y || e->instance->depth_scale) { Transform xf=e->instance->transform; if (e->instance->depth_scale) { @@ -6809,6 +6812,21 @@ void RasterizerGLES2::_render_list_forward(RenderList *p_render_list,const Trans xf.basis.scale(scale); } + + if (e->instance->billboard_y) { + + Vector3 scale = xf.basis.get_scale(); + Vector3 look_at = p_view_transform.get_origin(); + look_at.y = 0.0; + Vector3 look_at_norm = look_at.normalized(); + + if (current_rt && current_rt_vflip) { + xf.set_look_at(xf.origin,xf.origin + look_at_norm, Vector3(0.0, -1.0, 0.0)); + } else { + xf.set_look_at(xf.origin,xf.origin + look_at_norm, Vector3(0.0, 1.0, 0.0)); + } + xf.basis.scale(scale); + } material_shader.set_uniform(MaterialShaderGLES2::WORLD_TRANSFORM, xf); } else { @@ -7008,6 +7026,10 @@ void RasterizerGLES2::_process_glow_bloom() { void RasterizerGLES2::_process_hdr() { + if (framebuffer.luminance.empty()) { + return; + } + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.luminance[0].fbo); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, framebuffer.color ); @@ -10799,14 +10821,52 @@ void RasterizerGLES2::init() { print_line(String("GLES2: Using GLEW ") + (const char*) glewGetString(GLEW_VERSION)); } + // Godot makes use of functions from ARB_framebuffer_object extension which is not implemented by all drivers. + // On the other hand, these drivers might implement the older EXT_framebuffer_object extension + // with which current source code is backward compatible. + + bool framebuffer_object_is_supported = glewIsSupported("GL_ARB_framebuffer_object"); + + if ( !framebuffer_object_is_supported ) { + WARN_PRINT("GL_ARB_framebuffer_object not supported by your graphics card."); + + if ( glewIsSupported("GL_EXT_framebuffer_object") ) { + // falling-back to the older EXT function if present + WARN_PRINT("Falling-back to GL_EXT_framebuffer_object."); + + glIsRenderbuffer = glIsRenderbufferEXT; + glBindRenderbuffer = glBindRenderbufferEXT; + glDeleteRenderbuffers = glDeleteRenderbuffersEXT; + glGenRenderbuffers = glGenRenderbuffersEXT; + glRenderbufferStorage = glRenderbufferStorageEXT; + glGetRenderbufferParameteriv = glGetRenderbufferParameterivEXT; + glIsFramebuffer = glIsFramebufferEXT; + glBindFramebuffer = glBindFramebufferEXT; + glDeleteFramebuffers = glDeleteFramebuffersEXT; + glGenFramebuffers = glGenFramebuffersEXT; + glCheckFramebufferStatus = glCheckFramebufferStatusEXT; + glFramebufferTexture1D = glFramebufferTexture1DEXT; + glFramebufferTexture2D = glFramebufferTexture2DEXT; + glFramebufferTexture3D = glFramebufferTexture3DEXT; + glFramebufferRenderbuffer = glFramebufferRenderbufferEXT; + glGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameterivEXT; + glGenerateMipmap = glGenerateMipmapEXT; + + framebuffer_object_is_supported = true; + } + else { + ERR_PRINT("Framebuffer Object is not supported by your graphics card."); + } + } + // Check for GL 2.1 compatibility, if not bail out - if (!glewIsSupported("GL_VERSION_2_1")) { + if (!(glewIsSupported("GL_VERSION_2_1") && framebuffer_object_is_supported)) { ERR_PRINT("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(\n" - "Try a drivers update, buy a new GPU or try software rendering on Linux; Godot will now crash with a segmentation fault."); + "Try a drivers update, buy a new GPU or try software rendering on Linux; Godot is now going to terminate."); OS::get_singleton()->alert("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(\n" "Godot Engine will self-destruct as soon as you acknowledge this error message.", "Fatal error: Insufficient OpenGL / GLES drivers"); - // TODO: If it's even possible, we should stop the execution without segfault and memory leaks :) + exit(1); } #endif @@ -10843,6 +10903,11 @@ void RasterizerGLES2::init() { copy_shader.set_conditional(CopyShaderGLES2::USE_GLES_OVER_GL,true); #endif +#ifdef ANGLE_ENABLED + // Fix for ANGLE + material_shader.set_conditional(MaterialShaderGLES2::DISABLE_FRONT_FACING, true); +#endif + shadow=NULL; shadow_pass=0; @@ -10930,7 +10995,11 @@ void RasterizerGLES2::init() { srgb_supported=extensions.has("GL_EXT_sRGB"); +#ifndef ANGLE_ENABLED s3tc_srgb_supported = s3tc_supported && extensions.has("GL_EXT_texture_compression_s3tc"); +#else + s3tc_srgb_supported = s3tc_supported; +#endif latc_supported = extensions.has("GL_EXT_texture_compression_latc"); anisotropic_level=1.0; use_anisotropic_filter=extensions.has("GL_EXT_texture_filter_anisotropic"); diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index 3be0fdab17..d4636ed444 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -904,6 +904,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_VEC"]="light_vec"; mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_HEIGHT"]="light_height"; mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_COLOR"]="light"; + mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_SHADOW"]="light_shadow_color"; mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_UV"]="light_uv"; mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT"]="light_out"; mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["SHADOW"]="shadow_color"; diff --git a/drivers/gles2/shaders/canvas.glsl b/drivers/gles2/shaders/canvas.glsl index 285abd30ff..5f4767940d 100644 --- a/drivers/gles2/shaders/canvas.glsl +++ b/drivers/gles2/shaders/canvas.glsl @@ -244,7 +244,7 @@ FRAGMENT_SHADER_CODE vec2 light_uv = light_uv_interp.xy; vec4 light = texture2D(light_texture,light_uv) * light_color; -#if defined(USE_LIGHT_SHADOW_COLOR) +#if defined(USE_OUTPUT_SHADOW_COLOR) vec4 shadow_color=vec4(0.0,0.0,0.0,0.0); #endif @@ -380,7 +380,7 @@ LIGHT_SHADER_CODE #endif -#if defined(USE_LIGHT_SHADOW_COLOR) +#if defined(USE_OUTPUT_SHADOW_COLOR) color=mix(shadow_color,color,shadow_attenuation); #else //color*=shadow_attenuation; diff --git a/drivers/gles2/shaders/material.glsl b/drivers/gles2/shaders/material.glsl index e68949b056..e5be25757d 100644 --- a/drivers/gles2/shaders/material.glsl +++ b/drivers/gles2/shaders/material.glsl @@ -811,7 +811,11 @@ void main() { float specular_exp=1.0; float glow=0.0; float shade_param=0.0; +#ifdef DISABLE_FRONT_FACING + float side=float(1)*2.0-1.0; +#else float side=float(gl_FrontFacing)*2.0-1.0; +#endif #if defined(ENABLE_TANGENT_INTERP) vec3 binormal = normalize(binormal_interp)*side; vec3 tangent = normalize(tangent_interp)*side; @@ -976,6 +980,12 @@ FRAGMENT_SHADER_CODE #ifdef LIGHT_USE_SHADOW #ifdef LIGHT_TYPE_DIRECTIONAL + float shadow_fade_exponent=5.0; //hardcoded for now + float shadow_fade=pow(length(vertex_interp)/light_attenuation.g,shadow_fade_exponent); + +// optimization - skip shadows outside visible range + if(shadow_fade<1.0){ + #ifdef LIGHT_USE_PSSM @@ -1101,6 +1111,12 @@ FRAGMENT_SHADER_CODE shadow_attenuation=SAMPLE_SHADOW_TEX(shadow_coord.xy,shadow_coord.z); #endif + + shadow_attenuation=mix(shadow_attenuation,1.0,shadow_fade); + }else{ + shadow_attenuation=1.0; + }; + #endif #ifdef LIGHT_TYPE_OMNI @@ -1181,7 +1197,7 @@ FRAGMENT_SHADER_CODE vec3 mdiffuse = diffuse.rgb; vec3 light; -#if defined(USE_LIGHT_SHADOW_COLOR) +#if defined(USE_OUTPUT_SHADOW_COLOR) vec3 shadow_color=vec3(0.0,0.0,0.0); #endif @@ -1205,7 +1221,7 @@ LIGHT_SHADER_CODE #endif diffuse.rgb = const_light_mult * ambient_light *diffuse.rgb + light * attenuation * shadow_attenuation; -#if defined(USE_LIGHT_SHADOW_COLOR) +#if defined(USE_OUTPUT_SHADOW_COLOR) diffuse.rgb += light * shadow_color * attenuation * (1.0 - shadow_attenuation); #endif diff --git a/drivers/png/image_loader_png.cpp b/drivers/png/image_loader_png.cpp index e10ac7493f..4967b0f9df 100644 --- a/drivers/png/image_loader_png.cpp +++ b/drivers/png/image_loader_png.cpp @@ -270,7 +270,7 @@ static void user_read_data(png_structp png_ptr,png_bytep data, png_size_t p_leng PNGReadStatus *rstatus; rstatus=(PNGReadStatus*)png_get_io_ptr(png_ptr); - int to_read=p_length; + png_size_t to_read=p_length; if (rstatus->size>=0) { to_read = MIN( p_length, rstatus->size - rstatus->offset); } diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp index 4804bc5630..954d2c20f2 100644 --- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp +++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp @@ -175,8 +175,8 @@ void AudioDriverPulseAudio::finish() { exit_thread = true; Thread::wait_to_finish(thread); - if (pulse) - pa_simple_free(pulse); + if (pulse) + pa_simple_free(pulse); if (samples_in) { memdelete_arr(samples_in); diff --git a/drivers/theora/SCsub b/drivers/theora/SCsub index fa85b49804..94477d2827 100644 --- a/drivers/theora/SCsub +++ b/drivers/theora/SCsub @@ -1,11 +1,11 @@ Import('env') sources = [ - "theora/analyze.c", - "theora/apiwrapper.c", + #"theora/analyze.c", + #"theora/apiwrapper.c", "theora/bitpack.c", "theora/cpu.c", - "theora/decapiwrapper.c", + #"theora/decapiwrapper.c", "theora/decinfo.c", "theora/decode.c", "theora/dequant.c", @@ -13,55 +13,53 @@ sources = [ #"theora/encfrag.c", #"theora/encinfo.c", #"theora/encode.c", - "theora/encoder_disabled.c", - "theora/enquant.c", - "theora/fdct.c", + #"theora/encoder_disabled.c", + #"theora/enquant.c", + #"theora/fdct.c", "theora/fragment.c", "theora/huffdec.c", - "theora/huffenc.c", + #"theora/huffenc.c", "theora/idct.c", "theora/info.c", "theora/internal.c", - "theora/mathops.c", - "theora/mcenc.c", + #"theora/mathops.c", + #"theora/mcenc.c", "theora/quant.c", - "theora/rate.c", + #"theora/rate.c", "theora/state.c", - "theora/tokenize.c", + #"theora/tokenize.c", "theora/video_stream_theora.cpp", ] sources_x86 = [ - "theora/x86/mmxencfrag.c", - "theora/x86/mmxfdct.c", + #"theora/x86/mmxencfrag.c", + #"theora/x86/mmxfdct.c", "theora/x86/mmxfrag.c", "theora/x86/mmxidct.c", "theora/x86/mmxstate.c", - "theora/x86/sse2fdct.c", - "theora/x86/x86enc.c", + #"theora/x86/sse2fdct.c", + #"theora/x86/x86enc.c", "theora/x86/x86state.c", ] sources_x86_vc = [ - "theora/x86_vc/mmxencfrag.c", - "theora/x86_vc/mmxfdct.c", + #"theora/x86_vc/mmxencfrag.c", + #"theora/x86_vc/mmxfdct.c", "theora/x86_vc/mmxfrag.c", "theora/x86_vc/mmxidct.c", "theora/x86_vc/mmxstate.c", - "theora/x86_vc/x86enc.c", + #"theora/x86_vc/x86enc.c", "theora/x86_vc/x86state.c", ] env.drivers_sources += sources if (env["x86_opt_gcc"]): - env.Append(CCFLAGS=["-DOC_X86_ASM"]) env.drivers_sources += sources_x86 if (env["x86_opt_vc"]): - env.Append(CCFLAGS=["-DOC_X86_ASM"]) env.drivers_sources += sources_x86_vc - - - +if (env["x86_opt_gcc"] or env["x86_opt_vc"]): + Import('env_drivers') + env_drivers.Append(CCFLAGS=["-DOC_X86_ASM"]) diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp index 535a425302..08a8c19583 100644 --- a/drivers/unix/ip_unix.cpp +++ b/drivers/unix/ip_unix.cpp @@ -28,7 +28,7 @@ /*************************************************************************/ #include "ip_unix.h" -#if defined(UNIX_ENABLED) || defined(WINDOWS_ENABLED) && !defined(WINRT_ENABLED) +#if defined(UNIX_ENABLED) || defined(WINDOWS_ENABLED) #ifdef WINDOWS_ENABLED @@ -83,6 +83,19 @@ IP_Address IP_Unix::_resolve_hostname(const String& p_hostname) { void IP_Unix::get_local_addresses(List<IP_Address> *r_addresses) const { + using namespace Windows::Networking; + using namespace Windows::Networking::Connectivity; + + auto hostnames = NetworkInformation::GetHostNames(); + + for (int i = 0; i < hostnames->Size; i++) { + + if (hostnames->GetAt(i)->Type == HostNameType::Ipv4 && hostnames->GetAt(i)->IPInformation != nullptr) { + + r_addresses->push_back(IP_Address(String(hostnames->GetAt(i)->CanonicalName->Data()))); + + } + } }; #else diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index fd515d6dd3..271cf302ef 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -390,7 +390,7 @@ Error OS_Unix::execute(const String& p_path, const List<String>& p_arguments,boo if (p_blocking) { int status; - pid_t rpid = waitpid(pid,&status,0); + waitpid(pid,&status,0); if (r_exitcode) *r_exitcode=WEXITSTATUS(status); } else { diff --git a/drivers/vorbis/SCsub b/drivers/vorbis/SCsub index 87805cc2d8..4afafcc4ba 100644 --- a/drivers/vorbis/SCsub +++ b/drivers/vorbis/SCsub @@ -5,7 +5,7 @@ sources = [ ] sources_lib = [ - "vorbis/analysis.c", + #"vorbis/analysis.c", #"vorbis/barkmel.c", "vorbis/bitrate.c", "vorbis/block.c", @@ -27,7 +27,7 @@ sources_lib = [ "vorbis/smallft.c", "vorbis/synthesis.c", #"vorbis/tone.c", - "vorbis/vorbisenc.c", + #"vorbis/vorbisenc.c", "vorbis/vorbisfile.c", "vorbis/window.c", ] diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp index 90e43d2518..ad4e8f301c 100644 --- a/drivers/windows/dir_access_windows.cpp +++ b/drivers/windows/dir_access_windows.cpp @@ -37,12 +37,6 @@ #include <stdio.h> #include "print_string.h" -#ifdef WINRT_ENABLED -#include <Synchapi.h> -#include <collection.h> -#include <ppltasks.h> -#endif - /* [03:57] <reduz> yessopie, so i dont havemak to rely on unicows @@ -135,14 +129,6 @@ Error DirAccessWindows::change_dir(String p_dir) { GLOBAL_LOCK_FUNCTION -#ifdef WINRT_ENABLED - - p_dir = fix_path(p_dir); - current_dir = normalize_path(p_dir); - - return OK; -#else - p_dir=fix_path(p_dir); @@ -178,19 +164,12 @@ Error DirAccessWindows::change_dir(String p_dir) { //} return worked?OK:ERR_INVALID_PARAMETER; -#endif } Error DirAccessWindows::make_dir(String p_dir) { GLOBAL_LOCK_FUNCTION -#ifdef WINRT_ENABLED - - return ERR_CANT_CREATE; - -#else - if (p_dir.is_rel_path()) p_dir=get_current_dir().plus_file(p_dir); @@ -215,8 +194,6 @@ Error DirAccessWindows::make_dir(String p_dir) { }; return ERR_CANT_CREATE; - -#endif } @@ -259,7 +236,6 @@ bool DirAccessWindows::file_exists(String p_file) { return false; return !(fileAttr&FILE_ATTRIBUTE_DIRECTORY); - } bool DirAccessWindows::dir_exists(String p_dir) { @@ -282,7 +258,6 @@ bool DirAccessWindows::dir_exists(String p_dir) { if (INVALID_FILE_ATTRIBUTES == fileAttr) return false; return (fileAttr&FILE_ATTRIBUTE_DIRECTORY); - } Error DirAccessWindows::rename(String p_path,String p_new_path) { diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp index 3f27068fb2..36dcab1d67 100644 --- a/drivers/windows/file_access_windows.cpp +++ b/drivers/windows/file_access_windows.cpp @@ -124,7 +124,16 @@ void FileAccessWindows::close() { bool rename_error; + +#ifdef WINRT_ENABLED + // WinRT has no PathFileExists, so we check attributes instead + DWORD fileAttr; + + fileAttr = GetFileAttributesW(save_path.c_str()); + if (INVALID_FILE_ATTRIBUTES == fileAttr) { +#else if (!PathFileExistsW(save_path.c_str())) { +#endif //creating new file rename_error = _wrename((save_path+".tmp").c_str(),save_path.c_str())!=0; } else { @@ -139,7 +148,6 @@ void FileAccessWindows::close() { ERR_FAIL_COND( rename_error ); } - } bool FileAccessWindows::is_open() const { diff --git a/drivers/windows/semaphore_windows.cpp b/drivers/windows/semaphore_windows.cpp index 74094f482a..8d11d1b1c1 100644 --- a/drivers/windows/semaphore_windows.cpp +++ b/drivers/windows/semaphore_windows.cpp @@ -28,7 +28,7 @@ /*************************************************************************/ #include "semaphore_windows.h" -#if defined(WINDOWS_ENABLED) && !defined(WINRT_ENABLED) +#if defined(WINDOWS_ENABLED) #include "os/memory.h" diff --git a/main/input_default.cpp b/main/input_default.cpp index f93a142c54..92f4a6fb72 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=false; + + 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,", @@ -660,6 +738,10 @@ static const char *s_ControllerMappings [] = "303534632d303563342d576972656c65,PS4 Controller USB/Win,leftx:a0,lefty:a1,dpdown:b15,rightstick:b11,rightshoulder:b5,rightx:a2,start:b9,righty:a5,lefttrigger:a3,x:b0,dpup:b14,dpleft:b16,dpright:b17,back:b8,leftstick:b10,leftshoulder:b4,y:b3,a:b1,righttrigger:b7,b:b2,", "c2a94d6963726f736f66742058626f78,Wireless X360 Controller,leftx:a0,lefty:a1,dpdown:b14,rightstick:b10,rightshoulder:b5,rightx:a3,start:b7,righty:a4,dpleft:b11,lefttrigger:a2,x:b2,dpup:b13,back:b6,leftstick:b9,leftshoulder:b4,y:b3,a:b0,dpright:b12,righttrigger:a5,b:b1,", #endif + + #ifdef WINRT_ENABLED + "__WINRT_GAMEPAD__,Xbox Controller,a:b2,b:b3,x:b4,y:b5,start:b0,back:b1,leftstick:b12,rightstick:b13,leftshoulder:b10,rightshoulder:b11,dpup:b6,dpdown:b7,dpleft:b8,dpright:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,", + #endif NULL }; @@ -767,6 +849,13 @@ uint32_t InputDefault::joy_axis(uint32_t p_last_id, int p_device, int p_axis, co return p_last_id; } + if (ABS(joy.last_axis[p_axis]) > 0.5 && joy.last_axis[p_axis] * p_value.value < 0) { + //changed direction quickly, insert fake event to release pending inputmap actions + JoyAxis jx; + jx.min = p_value.min; + jx.value = p_value.value < 0 ? 0.1 : -0.1; + p_last_id = joy_axis(p_last_id, p_device, p_axis, jx); + } joy.last_axis[p_axis] = p_value.value; float val = p_value.min == 0 ? -1.0f + 2.0f * p_value.value : p_value.value; @@ -1070,3 +1159,61 @@ Array InputDefault::get_connected_joysticks() { } return ret; } + +static const char* _buttons[] = { + "Face Button Bottom", + "Face Button Right", + "Face Button Left", + "Face Button Top", + "L", + "R", + "L2", + "R2", + "L3", + "R3", + "Select", + "Start", + "DPAD Up", + "DPAD Down", + "DPAD Left", + "DPAD Right" +}; + +static const char* _axes[] = { + "Left Stick X", + "Left Stick Y", + "Right Stick X", + "Right Stick Y", + "", + "", + "L2", + "R2" +}; + +String InputDefault::get_joy_button_string(int p_button) { + ERR_FAIL_INDEX_V(p_button, JOY_BUTTON_MAX, ""); + return _buttons[p_button]; +} + +int InputDefault::get_joy_button_index_from_string(String p_button) { + for (int i = 0; i < JOY_BUTTON_MAX; i++) { + if (p_button == _buttons[i]) { + return i; + } + } + ERR_FAIL_V(-1); +} + +String InputDefault::get_joy_axis_string(int p_axis) { + ERR_FAIL_INDEX_V(p_axis, JOY_AXIS_MAX, ""); + return _axes[p_axis]; +} + +int InputDefault::get_joy_axis_index_from_string(String p_axis) { + for (int i = 0; i < JOY_AXIS_MAX; i++) { + if (p_axis == _axes[i]) { + return i; + } + } + ERR_FAIL_V(-1); +} diff --git a/main/input_default.h b/main/input_default.h index cb71312e22..2db6d28abf 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; @@ -222,6 +235,11 @@ public: virtual bool is_joy_known(int p_device); virtual String get_joy_guid(int p_device) const; + virtual String get_joy_button_string(int p_button); + virtual String get_joy_axis_string(int p_axis); + virtual int get_joy_axis_index_from_string(String p_axis); + virtual int get_joy_button_index_from_string(String p_button); + bool is_joy_mapped(int p_device); String get_joy_guid_remapped(int p_device) const; void set_fallback_mapping(String p_guid); diff --git a/main/main.cpp b/main/main.cpp index aa8540632f..912e8adf4f 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -57,7 +57,6 @@ #include "tools/editor/editor_node.h" #include "tools/editor/project_manager.h" -#include "tools/pck/pck_packer.h" #endif #include "io/file_access_network.h" @@ -560,6 +559,16 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas goto error; } + } else if (I->get()=="-epid") { + if (I->next()) { + + int editor_pid=I->next()->get().to_int(); + Globals::get_singleton()->set("editor_pid",editor_pid); + N=I->next()->next(); + } else { + goto error; + + } } else { //test for game path @@ -994,8 +1003,11 @@ Error Main::setup2() { } } #ifdef TOOLS_ENABLED + ObjectTypeDB::set_current_api(ObjectTypeDB::API_EDITOR); EditorNode::register_editor_types(); - ObjectTypeDB::register_type<PCKPacker>(); // todo: move somewhere else + + ObjectTypeDB::set_current_api(ObjectTypeDB::API_CORE); + #endif MAIN_PRINT("Main: Load Scripts, Modules, Drivers"); @@ -1022,6 +1034,8 @@ Error Main::setup2() { _start_success=true; locale=String(); + ObjectTypeDB::set_current_api(ObjectTypeDB::API_NONE); //no more api is registered at this point + MAIN_PRINT("Main: Done"); return OK; @@ -1294,9 +1308,10 @@ bool Main::start() { } + String local_game_path; if (game_path!="" && !project_manager_request) { - String local_game_path=game_path.replace("\\","/"); + local_game_path=game_path.replace("\\","/"); if (!local_game_path.begins_with("res://")) { bool absolute=(local_game_path.size()>1) && (local_game_path[0]=='/' || local_game_path[1]==':'); @@ -1363,98 +1378,99 @@ bool Main::start() { OS::get_singleton()->set_context(OS::CONTEXT_EDITOR); //editor_node->set_edited_scene(game); - } else { + } #endif + } - { - //autoload - List<PropertyInfo> props; - Globals::get_singleton()->get_property_list(&props); - - //first pass, add the constants so they exist before any script is loaded - for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { - - String s = E->get().name; - if (!s.begins_with("autoload/")) - continue; - String name = s.get_slicec('/',1); - String path = Globals::get_singleton()->get(s); - bool global_var=false; - if (path.begins_with("*")) { - global_var=true; - } - - if (global_var) { - for(int i=0;i<ScriptServer::get_language_count();i++) { - ScriptServer::get_language(i)->add_global_constant(name,Variant()); - } - } - + if (!project_manager_request && !editor) { + if (game_path!="" || script!="") { + //autoload + List<PropertyInfo> props; + Globals::get_singleton()->get_property_list(&props); + + //first pass, add the constants so they exist before any script is loaded + for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { + + String s = E->get().name; + if (!s.begins_with("autoload/")) + continue; + String name = s.get_slicec('/',1); + String path = Globals::get_singleton()->get(s); + bool global_var=false; + if (path.begins_with("*")) { + global_var=true; } - //second pass, load into global constants - List<Node*> to_add; - for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { - - String s = E->get().name; - if (!s.begins_with("autoload/")) - continue; - String name = s.get_slicec('/',1); - String path = Globals::get_singleton()->get(s); - bool global_var=false; - if (path.begins_with("*")) { - global_var=true; - path=path.substr(1,path.length()-1); - } - - RES res = ResourceLoader::load(path); - ERR_EXPLAIN("Can't autoload: "+path); - ERR_CONTINUE(res.is_null()); - Node *n=NULL; - if (res->is_type("PackedScene")) { - Ref<PackedScene> ps = res; - n=ps->instance(); - } else if (res->is_type("Script")) { - Ref<Script> s = res; - StringName ibt = s->get_instance_base_type(); - bool valid_type = ObjectTypeDB::is_type(ibt,"Node"); - ERR_EXPLAIN("Script does not inherit a Node: "+path); - ERR_CONTINUE( !valid_type ); - - Object *obj = ObjectTypeDB::instance(ibt); - - ERR_EXPLAIN("Cannot instance script for autoload, expected 'Node' inheritance, got: "+String(ibt)); - ERR_CONTINUE( obj==NULL ); - - n = obj->cast_to<Node>(); - n->set_script(s.get_ref_ptr()); + if (global_var) { + for(int i=0;i<ScriptServer::get_language_count();i++) { + ScriptServer::get_language(i)->add_global_constant(name,Variant()); } + } - ERR_EXPLAIN("Path in autoload not a node or script: "+path); - ERR_CONTINUE(!n); - n->set_name(name); - - //defer so references are all valid on _ready() - //sml->get_root()->add_child(n); - to_add.push_back(n); + } - if (global_var) { - for(int i=0;i<ScriptServer::get_language_count();i++) { - ScriptServer::get_language(i)->add_global_constant(name,n); - } - } + //second pass, load into global constants + List<Node*> to_add; + for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { + + String s = E->get().name; + if (!s.begins_with("autoload/")) + continue; + String name = s.get_slicec('/',1); + String path = Globals::get_singleton()->get(s); + bool global_var=false; + if (path.begins_with("*")) { + global_var=true; + path=path.substr(1,path.length()-1); + } + RES res = ResourceLoader::load(path); + ERR_EXPLAIN("Can't autoload: "+path); + ERR_CONTINUE(res.is_null()); + Node *n=NULL; + if (res->is_type("PackedScene")) { + Ref<PackedScene> ps = res; + n=ps->instance(); + } else if (res->is_type("Script")) { + Ref<Script> s = res; + StringName ibt = s->get_instance_base_type(); + bool valid_type = ObjectTypeDB::is_type(ibt,"Node"); + ERR_EXPLAIN("Script does not inherit a Node: "+path); + ERR_CONTINUE( !valid_type ); + + Object *obj = ObjectTypeDB::instance(ibt); + + ERR_EXPLAIN("Cannot instance script for autoload, expected 'Node' inheritance, got: "+String(ibt)); + ERR_CONTINUE( obj==NULL ); + + n = obj->cast_to<Node>(); + n->set_script(s.get_ref_ptr()); } - for(List<Node*>::Element *E=to_add.front();E;E=E->next()) { + ERR_EXPLAIN("Path in autoload not a node or script: "+path); + ERR_CONTINUE(!n); + n->set_name(name); + + //defer so references are all valid on _ready() + //sml->get_root()->add_child(n); + to_add.push_back(n); - sml->get_root()->add_child(E->get()); + if (global_var) { + for(int i=0;i<ScriptServer::get_language_count();i++) { + ScriptServer::get_language(i)->add_global_constant(name,n); + } } + } + for(List<Node*>::Element *E=to_add.front();E;E=E->next()) { + sml->get_root()->add_child(E->get()); } + //singletons + } + if (game_path!="") { Node *scene=NULL; Ref<PackedScene> scenedata = ResourceLoader::load(local_game_path); if (scenedata.is_valid()) @@ -1471,12 +1487,7 @@ bool Main::start() { if (icon.load(iconpath)==OK) OS::get_singleton()->set_icon(icon); } - - - //singletons -#ifdef TOOLS_ENABLED } -#endif } #ifdef TOOLS_ENABLED @@ -1560,6 +1571,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 +1603,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 +1656,7 @@ bool Main::iteration() { // x11_delay_usec(10000); frames++; + OS::get_singleton()->_idle_frames++; if (frame>1000000) { @@ -1747,4 +1764,3 @@ void Main::cleanup() { } - diff --git a/methods.py b/methods.py index e29fd760ba..c4951c69bd 100755 --- a/methods.py +++ b/methods.py @@ -1379,6 +1379,7 @@ def use_windows_spawn_fix(self, platform=None): cmdline = cmd + " " + newargs rv=0 + env = {str(key): str(value) for key, value in env.iteritems()} if len(cmdline) > 32000 and cmd.endswith("ar") : cmdline = cmd + " " + args[1] + " " + args[2] + " " for i in range(3,len(args)) : @@ -1450,3 +1451,78 @@ def colored(sys,env): env.Append( JARCOMSTR=[java_library_message] ) env.Append( JAVACCOMSTR=[java_compile_source_message] ) +def detect_visual_c_compiler_version(tools_env): + # tools_env is the variable scons uses to call tools that execute tasks, SCons's env['ENV'] that executes tasks... + # (see the SCons documentation for more information on what it does)... + # in order for this function to be well encapsulated i choose to force it to recieve SCons's TOOLS env (env['ENV'] + # and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect + # the propper vc version that will be called + + # These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc) + # There are many different cl.exe files that are run, and each one compiles & links to a different architecture + # As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program() + # is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns: + # the following string values: + + # "" Compiler not detected + # "amd64" Native 64 bit compiler + # "amd64_x86" 64 bit Cross Compiler for 32 bit + # "x86" Native 32 bit compiler + # "x86_amd64" 32 bit Cross Compiler for 64 bit + + # There are other architectures, but Godot does not support them currently, so this function does not detect arm/amd64_arm + # and similar architectures/compilers + + # Set chosen compiler to "not detected" + vc_chosen_compiler_index = -1 + vc_chosen_compiler_str = "" + + # find() works with -1 so big ifs bellow are needed... the simplest solution, in fact + # First test if amd64 and amd64_x86 compilers are present in the path + vc_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64;") + if(vc_amd64_compiler_detection_index > -1): + vc_chosen_compiler_index = vc_amd64_compiler_detection_index + vc_chosen_compiler_str = "amd64" + + vc_amd64_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64_x86;") + if(vc_amd64_x86_compiler_detection_index > -1 + and (vc_chosen_compiler_index == -1 + or vc_chosen_compiler_index > vc_amd64_x86_compiler_detection_index)): + vc_chosen_compiler_index = vc_amd64_x86_compiler_detection_index + vc_chosen_compiler_str = "amd64_x86" + + + # Now check the 32 bit compilers + vc_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN;") + if(vc_x86_compiler_detection_index > -1 + and (vc_chosen_compiler_index == -1 + or vc_chosen_compiler_index > vc_x86_compiler_detection_index)): + vc_chosen_compiler_index = vc_x86_compiler_detection_index + vc_chosen_compiler_str = "x86" + + vc_x86_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env['VCINSTALLDIR']+"BIN\\x86_amd64;") + if(vc_x86_amd64_compiler_detection_index > -1 + and (vc_chosen_compiler_index == -1 + or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index)): + vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index + vc_chosen_compiler_str = "x86_amd64" + + # debug help + #print vc_amd64_compiler_detection_index + #print vc_amd64_x86_compiler_detection_index + #print vc_x86_compiler_detection_index + #print vc_x86_amd64_compiler_detection_index + #print "chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str) + + return vc_chosen_compiler_str + +def msvc_is_detected() : + # looks for VisualStudio env variable + # or for Visual C++ Build Tools (which is a standalone MSVC) + return os.getenv("VSINSTALLDIR") or os.getenv("VS100COMNTOOLS") or os.getenv("VS110COMNTOOLS") or os.getenv("VS120COMNTOOLS") or os.getenv("VS140COMNTOOLS"); + + +def precious_program(env, program, sources, **args): + program = env.ProgramOriginal(program, sources, **args) + env.Precious(program) + return program diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp index 18a4347edf..ac89c0e9e9 100644 --- a/modules/enet/networked_multiplayer_enet.cpp +++ b/modules/enet/networked_multiplayer_enet.cpp @@ -32,7 +32,7 @@ Error NetworkedMultiplayerENet::create_server(int p_port, int p_max_clients, int 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 */, - 2 /* allow up to 2 channels to be used, 0 and 1 */, + SYSCH_MAX /* allow up to SYSCH_MAX channels to be used */, p_in_bandwidth /* assume any amount of incoming bandwidth */, p_out_bandwidth /* assume any amount of outgoing bandwidth */); @@ -52,7 +52,7 @@ Error NetworkedMultiplayerENet::create_client(const IP_Address& p_ip, int p_port host = enet_host_create (NULL /* create a client host */, 1 /* only allow 1 outgoing connection */, - 2 /* allow up 2 channels to be used, 0 and 1 */, + SYSCH_MAX /* allow up to SYSCH_MAX channels to be used */, p_in_bandwidth /* 56K modem with 56 Kbps downstream bandwidth */, p_out_bandwidth /* 56K modem with 14 Kbps upstream bandwidth */); @@ -70,8 +70,8 @@ Error NetworkedMultiplayerENet::create_client(const IP_Address& p_ip, int p_port unique_id=_gen_unique_id(); - /* Initiate the connection, allocating the two channels 0 and 1. */ - ENetPeer *peer = enet_host_connect (host, & address, 2, unique_id); + /* Initiate the connection, allocating the enough channels */ + ENetPeer *peer = enet_host_connect (host, & address, SYSCH_MAX, unique_id); if (peer == NULL) { enet_host_destroy(host); @@ -148,12 +148,12 @@ void NetworkedMultiplayerENet::poll(){ 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); + enet_peer_send(event.peer,SYSCH_CONFIG,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); + enet_peer_send(E->get(),SYSCH_CONFIG,packet); } } else { @@ -185,7 +185,7 @@ void NetworkedMultiplayerENet::poll(){ 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); + enet_peer_send(E->get(),SYSCH_CONFIG,packet); } } else if (!server) { emit_signal("server_disconnected"); @@ -204,10 +204,13 @@ void NetworkedMultiplayerENet::poll(){ case ENET_EVENT_TYPE_RECEIVE: { - if (event.channelID==1) { + if (event.channelID==SYSCH_CONFIG) { //some config message ERR_CONTINUE( event.packet->dataLength < 8); + // Only server can send config messages + ERR_CONTINUE( server ); + int msg = decode_uint32(&event.packet->data[0]); int id = decode_uint32(&event.packet->data[4]); @@ -226,12 +229,12 @@ void NetworkedMultiplayerENet::poll(){ } enet_packet_destroy(event.packet); - } else if (event.channelID==0){ + } else if (event.channelID < SYSCH_MAX){ Packet packet; packet.packet = event.packet; - int *id = (int*)event.peer -> data; + uint32_t *id = (uint32_t*)event.peer->data; ERR_CONTINUE(event.packet->dataLength<12) @@ -243,6 +246,8 @@ void NetworkedMultiplayerENet::poll(){ packet.from=source; if (server) { + // Someone is cheating and trying to fake the source! + ERR_CONTINUE(source!=*id); packet.from=*id; @@ -258,7 +263,7 @@ void NetworkedMultiplayerENet::poll(){ ENetPacket* packet2 = enet_packet_create (packet.packet->data,packet.packet->dataLength,flags); - enet_peer_send(E->get(),0,packet2); + enet_peer_send(E->get(),event.channelID,packet2); } } else if (target<0) { @@ -272,7 +277,7 @@ void NetworkedMultiplayerENet::poll(){ ENetPacket* packet2 = enet_packet_create (packet.packet->data,packet.packet->dataLength,flags); - enet_peer_send(E->get(),0,packet2); + enet_peer_send(E->get(),event.channelID,packet2); } if (-target != 1) { @@ -289,7 +294,7 @@ void NetworkedMultiplayerENet::poll(){ } else { //to someone else, specifically ERR_CONTINUE(!peer_map.has(target)); - enet_peer_send(peer_map[target],0,packet.packet); + enet_peer_send(peer_map[target],event.channelID,packet.packet); } } else { @@ -359,7 +364,7 @@ Error NetworkedMultiplayerENet::get_packet(const uint8_t **r_buffer,int &r_buffe incoming_packets.pop_front(); *r_buffer=(const uint8_t*)(¤t_packet.packet->data[12]); - r_buffer_size=current_packet.packet->dataLength; + r_buffer_size=current_packet.packet->dataLength-12; return OK; } @@ -369,16 +374,20 @@ Error NetworkedMultiplayerENet::put_packet(const uint8_t *p_buffer,int p_buffer_ ERR_FAIL_COND_V(connection_status!=CONNECTION_CONNECTED,ERR_UNCONFIGURED); int packet_flags=0; + int channel=SYSCH_RELIABLE; switch(transfer_mode) { case TRANSFER_MODE_UNRELIABLE: { packet_flags=ENET_PACKET_FLAG_UNSEQUENCED; + channel=SYSCH_UNRELIABLE; } break; case TRANSFER_MODE_UNRELIABLE_ORDERED: { packet_flags=0; + channel=SYSCH_UNRELIABLE; } break; case TRANSFER_MODE_RELIABLE: { packet_flags=ENET_PACKET_FLAG_RELIABLE; + channel=SYSCH_RELIABLE; } break; } @@ -402,7 +411,7 @@ Error NetworkedMultiplayerENet::put_packet(const uint8_t *p_buffer,int p_buffer_ if (server) { if (target_peer==0) { - enet_host_broadcast(host,0,packet); + enet_host_broadcast(host,channel,packet); } else if (target_peer<0) { //send to all but one //and make copies for sending @@ -416,18 +425,18 @@ Error NetworkedMultiplayerENet::put_packet(const uint8_t *p_buffer,int p_buffer_ ENetPacket* packet2 = enet_packet_create (packet->data,packet->dataLength,packet_flags); - enet_peer_send(F->get(),0,packet2); + enet_peer_send(F->get(),channel,packet2); } enet_packet_destroy(packet); //original packet no longer needed } else { - enet_peer_send (E->get(), 0, packet); + enet_peer_send (E->get(), channel, packet); } } else { ERR_FAIL_COND_V(!peer_map.has(1),ERR_BUG); - enet_peer_send (peer_map[1], 0, packet); //send to server for broadcast.. + enet_peer_send (peer_map[1], channel, packet); //send to server for broadcast.. } diff --git a/modules/enet/networked_multiplayer_enet.h b/modules/enet/networked_multiplayer_enet.h index 59863c1f78..f64db4561e 100644 --- a/modules/enet/networked_multiplayer_enet.h +++ b/modules/enet/networked_multiplayer_enet.h @@ -23,6 +23,13 @@ private: SYSMSG_REMOVE_PEER }; + enum { + SYSCH_CONFIG, + SYSCH_RELIABLE, + SYSCH_UNRELIABLE, + SYSCH_MAX + }; + bool active; bool server; diff --git a/modules/enet/win32.c b/modules/enet/win32.c index d77fa9a49a..15edd7acbb 100644 --- a/modules/enet/win32.c +++ b/modules/enet/win32.c @@ -28,7 +28,9 @@ enet_initialize (void) return -1; } +#ifndef WINRT_ENABLED timeBeginPeriod (1); +#endif return 0; } @@ -36,11 +38,22 @@ enet_initialize (void) void enet_deinitialize (void) { +#ifndef WINRT_ENABLED timeEndPeriod (1); +#endif WSACleanup (); } +#ifdef WINRT_ENABLED +enet_uint32 +timeGetTime() { + ULONGLONG ticks = GetTickCount64(); + return (enet_uint32)ticks; +} +#endif + + enet_uint32 enet_host_random_seed (void) { diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp index ce8b6a6ea4..2e2cbe7b29 100644 --- a/modules/gdscript/gd_compiler.cpp +++ b/modules/gdscript/gd_compiler.cpp @@ -662,6 +662,46 @@ int GDCompiler::_parse_expression(CodeGen& codegen,const GDParser::Node *p_expre return p_stack_level|GDFunction::ADDR_TYPE_STACK<<GDFunction::ADDR_BITS; } break; + // ternary operators + case GDParser::OperatorNode::OP_TERNARY_IF: { + + // x IF a ELSE y operator with early out on failure + + int res = _parse_expression(codegen,on->arguments[0],p_stack_level); + if (res<0) + return res; + codegen.opcodes.push_back(GDFunction::OPCODE_JUMP_IF_NOT); + codegen.opcodes.push_back(res); + int jump_fail_pos=codegen.opcodes.size(); + codegen.opcodes.push_back(0); + + + res = _parse_expression(codegen,on->arguments[1],p_stack_level); + if (res<0) + return res; + + codegen.alloc_stack(p_stack_level); //it will be used.. + codegen.opcodes.push_back(GDFunction::OPCODE_ASSIGN); + codegen.opcodes.push_back(p_stack_level|GDFunction::ADDR_TYPE_STACK<<GDFunction::ADDR_BITS); + codegen.opcodes.push_back(res); + codegen.opcodes.push_back(GDFunction::OPCODE_JUMP); + int jump_past_pos=codegen.opcodes.size(); + codegen.opcodes.push_back(0); + + codegen.opcodes[jump_fail_pos]=codegen.opcodes.size(); + res = _parse_expression(codegen,on->arguments[2],p_stack_level); + if (res<0) + return res; + + codegen.opcodes.push_back(GDFunction::OPCODE_ASSIGN); + codegen.opcodes.push_back(p_stack_level|GDFunction::ADDR_TYPE_STACK<<GDFunction::ADDR_BITS); + codegen.opcodes.push_back(res); + + codegen.opcodes[jump_past_pos]=codegen.opcodes.size(); + + return p_stack_level|GDFunction::ADDR_TYPE_STACK<<GDFunction::ADDR_BITS; + + } break; //unary operators case GDParser::OperatorNode::OP_NEG: { if (!_create_unary_operator(codegen,on,Variant::OP_NEGATE,p_stack_level)) return -1;} break; case GDParser::OperatorNode::OP_NOT: { if (!_create_unary_operator(codegen,on,Variant::OP_NOT,p_stack_level)) return -1;} break; @@ -1403,6 +1443,10 @@ Error GDCompiler::_parse_function(GDScript *p_script,const GDParser::ClassNode * #endif if (p_func) { gdfunc->_initial_line=p_func->line; +#ifdef TOOLS_ENABLED + + p_script->member_lines[func_name]=p_func->line; +#endif } else { gdfunc->_initial_line=0; } @@ -1632,6 +1676,12 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa p_script->member_indices[name]=minfo; p_script->members.insert(name); +#ifdef TOOLS_ENABLED + + p_script->member_lines[name]=p_class->variables[i].line; +#endif + + } for(int i=0;i<p_class->constant_expressions.size();i++) { @@ -1643,6 +1693,11 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa p_script->constants.insert(name,constant->value); //p_script->constants[constant->value].make_const(); +#ifdef TOOLS_ENABLED + + p_script->member_lines[name]=p_class->constant_expressions[i].expression->line; +#endif + } for(int i=0;i<p_class->_signals.size();i++) { @@ -1691,6 +1746,10 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa if (err) return err; +#ifdef TOOLS_ENABLED + + p_script->member_lines[name]=p_class->subclasses[i]->line; +#endif p_script->constants.insert(name,subclass); //once parsed, goes to the list of constants p_script->subclasses.insert(name,subclass); diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp index 5b74dab889..c3e59836a2 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); @@ -353,6 +351,7 @@ struct GDCompletionIdentifier { Ref<GDScript> script; Variant::Type type; Variant value; //im case there is a value, also return it + }; @@ -937,6 +936,7 @@ static bool _guess_expression_type(GDCompletionContext& context,const GDParser:: return false; } + static bool _guess_identifier_type_in_block(GDCompletionContext& context,int p_line,const StringName& p_identifier,GDCompletionIdentifier &r_type) { @@ -2096,7 +2096,7 @@ Error GDScriptLanguage::complete_code(const String& p_code, const String& p_base GDParser p; - Error err = p.parse(p_code,p_base_path,false,"",true); + p.parse(p_code,p_base_path,false,"",true); bool isfunction=false; Set<String> options; @@ -2143,7 +2143,18 @@ Error GDScriptLanguage::complete_code(const String& p_code, const String& p_base GDCompletionIdentifier t; if (_guess_expression_type(context,static_cast<const GDParser::OperatorNode *>(node)->arguments[0],p.get_completion_line(),t)) { - if (t.type==Variant::OBJECT && t.obj_type!=StringName()) { + if (t.type==Variant::OBJECT && t.obj_type=="GDNativeClass") { + //native enum + Ref<GDNativeClass> gdn = t.value; + if (gdn.is_valid()) { + StringName cn = gdn->get_name(); + List<String> cnames; + ObjectTypeDB::get_integer_constant_list(cn,&cnames); + for (List<String>::Element *E=cnames.front();E;E=E->next()) { + options.insert(E->get()); + } + } + } else if (t.type==Variant::OBJECT && t.obj_type!=StringName()) { Ref<GDScript> on_script; @@ -2513,3 +2524,442 @@ void GDScriptLanguage::auto_indent_code(String& p_code,int p_from_line,int p_to_ } } + +#ifdef TOOLS_ENABLED + +Error GDScriptLanguage::lookup_code(const String& p_code, const String& p_symbol,const String& p_base_path, Object*p_owner,LookupResult& r_result) { + + + //before parsing, try the usual stuff + if (ObjectTypeDB::type_exists(p_symbol)) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS; + r_result.class_name=p_symbol; + return OK; + } + + for(int i=0;i<Variant::VARIANT_MAX;i++) { + Variant::Type t = Variant::Type(i); + if (Variant::get_type_name(t)==p_symbol) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS; + r_result.class_name=Variant::get_type_name(t); + return OK; + } + } + + for(int i=0;i<GDFunctions::FUNC_MAX;i++) { + if (GDFunctions::get_func_name(GDFunctions::Function(i))==p_symbol) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_METHOD; + r_result.class_name="@GDScript"; + r_result.class_member=p_symbol; + return OK; + } + } + + GDParser p; + p.parse(p_code,p_base_path,false,"",true); + + if (p.get_completion_type()==GDParser::COMPLETION_NONE) + return ERR_CANT_RESOLVE; + + GDCompletionContext context; + + context._class=p.get_completion_class(); + context.block=p.get_completion_block(); + context.function=p.get_completion_function(); + context.base=p_owner; + context.base_path=p_base_path; + bool isfunction=false; + + switch(p.get_completion_type()) { + + case GDParser::COMPLETION_NONE: { + } break; + case GDParser::COMPLETION_BUILT_IN_TYPE_CONSTANT: { + + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT; + r_result.class_name=Variant::get_type_name(p.get_completion_built_in_constant()); + r_result.class_member=p_symbol; + return OK; + + } break; + case GDParser::COMPLETION_FUNCTION: { + + + if (context._class && context._class->functions.size()) { + for(int i=0;i<context._class->functions.size();i++) { + if (context._class->functions[i]->name==p_symbol) { + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=context._class->functions[i]->line; + return OK; + } + } + } + + Ref<GDScript> parent = _get_parent_class(context); + while(parent.is_valid()) { + int line = parent->get_member_line(p_symbol); + if (line>=0) { + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=line; + r_result.script=parent; + return OK; + + } + + parent=parent->get_base(); + } + + GDCompletionIdentifier identifier = _get_native_class(context); + print_line("identifier: "+String(identifier.obj_type)); + + if (ObjectTypeDB::has_method(identifier.obj_type,p_symbol)) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_METHOD; + r_result.class_name=identifier.obj_type; + r_result.class_member=p_symbol; + return OK; + } + + + } break; + case GDParser::COMPLETION_IDENTIFIER: { + + //check if a function + if (p.get_completion_identifier_is_function()) { + if (context._class && context._class->functions.size()) { + for(int i=0;i<context._class->functions.size();i++) { + if (context._class->functions[i]->name==p_symbol) { + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=context._class->functions[i]->line; + return OK; + } + } + } + + Ref<GDScript> parent = _get_parent_class(context); + while(parent.is_valid()) { + int line = parent->get_member_line(p_symbol); + if (line>=0) { + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=line; + r_result.script=parent; + return OK; + + } + + parent=parent->get_base(); + } + + GDCompletionIdentifier identifier = _get_native_class(context); + + + if (ObjectTypeDB::has_method(identifier.obj_type,p_symbol)) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_METHOD; + r_result.class_name=identifier.obj_type; + r_result.class_member=p_symbol; + return OK; + } + } else { + + + const GDParser::BlockNode *block=context.block; + //search in blocks going up (local var?) + while(block) { + + + + for (int i=0;i<block->statements.size();i++) { + + if (block->statements[i]->line>p.get_completion_line()) + continue; + + + if (block->statements[i]->type==GDParser::BlockNode::TYPE_LOCAL_VAR) { + + const GDParser::LocalVarNode *lv=static_cast<const GDParser::LocalVarNode *>(block->statements[i]); + + if (lv->assign && lv->name==p_symbol) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=block->statements[i]->line; + return OK; + } + } + } + block=block->parent_block; + } + + //guess from function arguments + if (context.function && context.function->name!=StringName()) { + + for(int i=0;i<context.function->arguments.size();i++) { + + if (context.function->arguments[i]==p_symbol) { + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=context.function->line; + return OK; + } + + } + } + + //guess in class constants + + for(int i=0;i<context._class->constant_expressions.size();i++) { + + if (context._class->constant_expressions[i].identifier==p_symbol) { + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=context._class->constant_expressions[i].expression->line; + return OK; + } + } + + //guess in class variables + if (!(context.function && context.function->_static)) { + + for(int i=0;i<context._class->variables.size();i++) { + + if (context._class->variables[i].identifier==p_symbol) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=context._class->variables[i].line; + return OK; + } + } + } + + //guess in autoloads as singletons + List<PropertyInfo> props; + Globals::get_singleton()->get_property_list(&props); + + for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { + + String s = E->get().name; + if (!s.begins_with("autoload/")) + continue; + String name = s.get_slice("/",1); + if (name==String(p_symbol)) { + + String path = Globals::get_singleton()->get(s); + if (path.begins_with("*")) { + String script =path.substr(1,path.length()); + + if (!script.ends_with(".gd")) { + //not a script, try find the script anyway, + //may have some success + script=script.basename()+".gd"; + } + + if (FileAccess::exists(script)) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=0; + r_result.script=ResourceLoader::load(script); + return OK; + } + } + } + } + + //global + for(Map<StringName,int>::Element *E=GDScriptLanguage::get_singleton()->get_global_map().front();E;E=E->next()) { + if (E->key()==p_symbol) { + + Variant value = GDScriptLanguage::get_singleton()->get_global_array()[E->get()]; + if (value.get_type()==Variant::OBJECT) { + Object *obj = value; + if (obj) { + + if (obj->cast_to<GDNativeClass>()) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS; + r_result.class_name=obj->cast_to<GDNativeClass>()->get_name(); + + } else { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS; + r_result.class_name=obj->get_type(); + } + return OK; + } + } else { + + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT; + r_result.class_name="@Global Scope"; + r_result.class_member=p_symbol; + return OK; + } + } + + } +#if 0 + GDCompletionIdentifier identifier; + if (_guess_identifier_type(context,p.get_completion_line(),p_symbol,identifier)) { + + print_line("var type: "+Variant::get_type_name(identifier.type)); + if (identifier.script.is_valid()) { + print_line("var script: "+identifier.script->get_path()); + } + print_line("obj type: "+String(identifier.obj_type)); + print_line("value: "+String(identifier.value)); + } +#endif + } + + } break; + case GDParser::COMPLETION_PARENT_FUNCTION: { + + } break; + case GDParser::COMPLETION_METHOD: + isfunction=true; + case GDParser::COMPLETION_INDEX: { + + const GDParser::Node *node = p.get_completion_node(); + if (node->type!=GDParser::Node::TYPE_OPERATOR) + break; + + + + + GDCompletionIdentifier t; + if (_guess_expression_type(context,static_cast<const GDParser::OperatorNode *>(node)->arguments[0],p.get_completion_line(),t)) { + + if (t.type==Variant::OBJECT && t.obj_type=="GDNativeClass") { + //native enum + Ref<GDNativeClass> gdn = t.value; + if (gdn.is_valid()) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT; + r_result.class_name=gdn->get_name();; + r_result.class_member=p_symbol; + return OK; + + } + } else if (t.type==Variant::OBJECT && t.obj_type!=StringName()) { + + Ref<GDScript> on_script; + + if (t.value.get_type()) { + Object *obj=t.value; + + + if (obj) { + + + on_script=obj->get_script(); + + if (on_script.is_valid()) { + int loc = on_script->get_member_line(p_symbol); + if (loc>=0) { + r_result.script=on_script; + r_result.type=ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION; + r_result.location=loc; + return OK; + } + } + } + } + + if (ObjectTypeDB::has_method(t.obj_type,p_symbol)) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_METHOD; + r_result.class_name=t.obj_type; + r_result.class_member=p_symbol; + return OK; + + } + + bool success; + ObjectTypeDB::get_integer_constant(t.obj_type,p_symbol,&success); + if (success) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT; + r_result.class_name=t.obj_type; + r_result.class_member=p_symbol; + return OK; + } + + ObjectTypeDB::get_property_type(t.obj_type,p_symbol,&success); + + if (success) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_PROPERTY; + r_result.class_name=t.obj_type; + r_result.class_member=p_symbol; + return OK; + } + + + } else { + + Variant::CallError ce; + Variant v = Variant::construct(t.type,NULL,0,ce); + + bool valid; + v.get_numeric_constant_value(t.type,p_symbol,&valid); + if (valid) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT; + r_result.class_name=Variant::get_type_name(t.type); + r_result.class_member=p_symbol; + return OK; + } + + //todo check all inputevent types for property + + v.get(p_symbol,&valid); + + if (valid) { + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_PROPERTY; + r_result.class_name=Variant::get_type_name(t.type); + r_result.class_member=p_symbol; + return OK; + } + + if (v.has_method(p_symbol)) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_METHOD; + r_result.class_name=Variant::get_type_name(t.type); + r_result.class_member=p_symbol; + return OK; + + } + + + } + } + + + } break; + case GDParser::COMPLETION_CALL_ARGUMENTS: { + + return ERR_CANT_RESOLVE; + } break; + case GDParser::COMPLETION_VIRTUAL_FUNC: { + + GDCompletionIdentifier cid = _get_native_class(context); + + if (cid.obj_type!=StringName()) { + List<MethodInfo> vm; + ObjectTypeDB::get_virtual_methods(cid.obj_type,&vm); + for(List<MethodInfo>::Element *E=vm.front();E;E=E->next()) { + + if (p_symbol==E->get().name) { + + r_result.type=ScriptLanguage::LookupResult::RESULT_CLASS_METHOD; + r_result.class_name=cid.obj_type; + r_result.class_member=p_symbol; + return OK; + + } + } + } + } break; + case GDParser::COMPLETION_YIELD: { + + return ERR_CANT_RESOLVE; + + } break; + + } + + + return ERR_CANT_RESOLVE; +} + +#endif diff --git a/modules/gdscript/gd_function.cpp b/modules/gdscript/gd_function.cpp index b2cc6341c1..094e21bb4f 100644 --- a/modules/gdscript/gd_function.cpp +++ b/modules/gdscript/gd_function.cpp @@ -1437,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_functions.cpp b/modules/gdscript/gd_functions.cpp index a565e866d0..e82eb83773 100644 --- a/modules/gdscript/gd_functions.cpp +++ b/modules/gdscript/gd_functions.cpp @@ -840,8 +840,13 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument=0; r_ret=Variant(); + } else if(((String)(*p_args[0])).begins_with("/")) { + r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument=0; + r_ret=RTR("Paths cannot start with '/', absolute paths must start with 'res://', 'user://', or 'local://'"); + } else { + r_ret=ResourceLoader::load(*p_args[0]); } - r_ret=ResourceLoader::load(*p_args[0]); } break; case INST2DICT: { diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index e5a8dc0152..3c01f469f9 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -203,6 +203,7 @@ bool GDParser::_get_completable_identifier(CompletionType p_type,StringName& ide completion_line=tokenizer->get_token_line(); completion_block=current_block; completion_found=true; + completion_ident_is_call=false; tokenizer->advance(); if (tokenizer->get_token()==GDTokenizer::TK_IDENTIFIER) { @@ -210,6 +211,9 @@ bool GDParser::_get_completable_identifier(CompletionType p_type,StringName& ide tokenizer->advance(); } + if (tokenizer->get_token()==GDTokenizer::TK_PARENTHESIS_OPEN) { + completion_ident_is_call=true; + } return true; } @@ -303,6 +307,10 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ _set_error("expected string constant as 'preload' argument."); return NULL; } + if (path.begins_with("/")) { + _set_error("Paths cannot start with '/', absolute paths must start with \'res://\', \'user://\', or \'local://\'"); + return NULL; + } if (!path.is_abs_path() && base_path!="") path=base_path+"/"+path; path = path.replace("///","//").simplify_path(); @@ -936,6 +944,8 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ case GDTokenizer::TK_OP_BIT_OR: op=OperatorNode::OP_BIT_OR ; break; case GDTokenizer::TK_OP_BIT_XOR: op=OperatorNode::OP_BIT_XOR ; break; case GDTokenizer::TK_PR_EXTENDS: op=OperatorNode::OP_EXTENDS; break; + case GDTokenizer::TK_CF_IF: op=OperatorNode::OP_TERNARY_IF; break; + case GDTokenizer::TK_CF_ELSE: op=OperatorNode::OP_TERNARY_ELSE; break; default: valid=false; break; } @@ -958,6 +968,7 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ int next_op=-1; int min_priority=0xFFFFF; bool is_unary=false; + bool is_ternary=false; for(int i=0;i<expression.size();i++) { @@ -971,6 +982,8 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ int priority; bool unary=false; + bool ternary=false; + bool error=false; switch(expression[i].op) { @@ -1001,25 +1014,27 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ case OperatorNode::OP_EQUAL: priority=8; break; case OperatorNode::OP_NOT_EQUAL: priority=8; break; + case OperatorNode::OP_IN: priority=10; break; - + case OperatorNode::OP_NOT: priority=11; unary=true; break; case OperatorNode::OP_AND: priority=12; break; case OperatorNode::OP_OR: priority=13; break; - - // ?: = 10 - - case OperatorNode::OP_ASSIGN: priority=14; break; - case OperatorNode::OP_ASSIGN_ADD: priority=14; break; - case OperatorNode::OP_ASSIGN_SUB: priority=14; break; - case OperatorNode::OP_ASSIGN_MUL: priority=14; break; - case OperatorNode::OP_ASSIGN_DIV: priority=14; break; - case OperatorNode::OP_ASSIGN_MOD: priority=14; break; - case OperatorNode::OP_ASSIGN_SHIFT_LEFT: priority=14; break; - case OperatorNode::OP_ASSIGN_SHIFT_RIGHT: priority=14; break; - case OperatorNode::OP_ASSIGN_BIT_AND: priority=14; break; - case OperatorNode::OP_ASSIGN_BIT_OR: priority=14; break; - case OperatorNode::OP_ASSIGN_BIT_XOR: priority=14; break; + + case OperatorNode::OP_TERNARY_IF: priority=14; ternary=true; break; + case OperatorNode::OP_TERNARY_ELSE: priority=14; error=true; break; // Errors out when found without IF (since IF would consume it) + + case OperatorNode::OP_ASSIGN: priority=15; break; + case OperatorNode::OP_ASSIGN_ADD: priority=15; break; + case OperatorNode::OP_ASSIGN_SUB: priority=15; break; + case OperatorNode::OP_ASSIGN_MUL: priority=15; break; + case OperatorNode::OP_ASSIGN_DIV: priority=15; break; + case OperatorNode::OP_ASSIGN_MOD: priority=15; break; + case OperatorNode::OP_ASSIGN_SHIFT_LEFT: priority=15; break; + case OperatorNode::OP_ASSIGN_SHIFT_RIGHT: priority=15; break; + case OperatorNode::OP_ASSIGN_BIT_AND: priority=15; break; + case OperatorNode::OP_ASSIGN_BIT_OR: priority=15; break; + case OperatorNode::OP_ASSIGN_BIT_XOR: priority=15; break; default: { @@ -1030,11 +1045,16 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ } if (priority<min_priority) { + if(error) { + _set_error("Unexpected operator"); + return NULL; + } // < is used for left to right (default) // <= is used for right to left next_op=i; min_priority=priority; is_unary=unary; + is_ternary=ternary; } } @@ -1075,6 +1095,62 @@ GDParser::Node* GDParser::_parse_expression(Node *p_parent,bool p_static,bool p_ } + } else if(is_ternary) { + if (next_op <1 || next_op>=(expression.size()-1)) { + _set_error("Parser bug.."); + ERR_FAIL_V(NULL); + } + + if(next_op>=(expression.size()-2) || expression[next_op+2].op != OperatorNode::OP_TERNARY_ELSE) { + _set_error("Expected else after ternary if."); + ERR_FAIL_V(NULL); + } + if(next_op>=(expression.size()-3)) { + _set_error("Expected value after ternary else."); + ERR_FAIL_V(NULL); + } + + OperatorNode *op = alloc_node<OperatorNode>(); + op->op=expression[next_op].op; + op->line=op_line; //line might have been changed from a \n + + 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 after ternary if."); + return NULL; + } + + if (expression[next_op+3].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 after ternary else."); + return NULL; + } + + + op->arguments.push_back(expression[next_op+1].node); //next expression goes as first + op->arguments.push_back(expression[next_op-1].node); //left expression goes as when-true + op->arguments.push_back(expression[next_op+3].node); //expression after next goes as when-false + + //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); + expression.remove(next_op); + expression.remove(next_op); } else { if (next_op <1 || next_op>=(expression.size()-1)) { @@ -2037,6 +2113,10 @@ void GDParser::_parse_extends(ClassNode *p_class) { _set_error("'extends' constant must be a string."); return; } + if (((String)(constant)).begins_with("/")) { + _set_error("Paths cannot start with '/', absolute paths must start with \'res://\', \'user://\', or \'local://\'"); + return; + } p_class->extends_file=constant; tokenizer->advance(); @@ -3029,6 +3109,16 @@ void GDParser::_parse_class(ClassNode *p_class) { } member._export.type=cn->value.get_type(); member._export.usage|=PROPERTY_USAGE_SCRIPT_VARIABLE; + if (cn->value.get_type()==Variant::OBJECT) { + Object *obj = cn->value; + Resource *res = obj->cast_to<Resource>(); + if(res==NULL) { + _set_error("Exported constant not a type or resource."); + return; + } + member._export.hint=PROPERTY_HINT_RESOURCE_TYPE; + member._export.hint_string=res->get_type(); + } } } #ifdef TOOLS_ENABLED @@ -3157,6 +3247,114 @@ void GDParser::_parse_class(ClassNode *p_class) { } } break; + case GDTokenizer::TK_PR_ENUM: { + //mutiple constant declarations.. + + int last_assign = -1; // Incremented by 1 right before the assingment. + String enum_name; + Dictionary enum_dict; + + tokenizer->advance(); + if (tokenizer->get_token()==GDTokenizer::TK_IDENTIFIER) { + enum_name=tokenizer->get_token_identifier(); + tokenizer->advance(); + } + if (tokenizer->get_token()!=GDTokenizer::TK_CURLY_BRACKET_OPEN) { + _set_error("Expected '{' in enum declaration"); + return; + } + tokenizer->advance(); + + while(true) { + if(tokenizer->get_token()==GDTokenizer::TK_NEWLINE) { + + tokenizer->advance(); // Ignore newlines + } else if (tokenizer->get_token()==GDTokenizer::TK_CURLY_BRACKET_CLOSE) { + + tokenizer->advance(); + break; // End of enum + } else if (tokenizer->get_token()!=GDTokenizer::TK_IDENTIFIER) { + + if(tokenizer->get_token()==GDTokenizer::TK_EOF) { + _set_error("Unexpected end of file."); + } else { + _set_error(String("Unexpected ") + GDTokenizer::get_token_name(tokenizer->get_token()) + ", expected identifier"); + } + + return; + } else { // tokenizer->get_token()==GDTokenizer::TK_IDENTIFIER + ClassNode::Constant constant; + + constant.identifier=tokenizer->get_token_identifier(); + + tokenizer->advance(); + + if (tokenizer->get_token()==GDTokenizer::TK_OP_ASSIGN) { + tokenizer->advance(); + + Node *subexpr=NULL; + + subexpr = _parse_and_reduce_expression(p_class,true,true); + if (!subexpr) { + if (_recover_from_completion()) { + break; + } + return; + } + + if (subexpr->type!=Node::TYPE_CONSTANT) { + _set_error("Expected constant expression"); + } + + const ConstantNode *subexpr_const = static_cast<const ConstantNode*>(subexpr); + + if(subexpr_const->value.get_type() != Variant::INT) { + _set_error("Expected an int value for enum"); + } + + last_assign = subexpr_const->value; + + constant.expression=subexpr; + + } else { + last_assign = last_assign + 1; + ConstantNode *cn = alloc_node<ConstantNode>(); + cn->value = last_assign; + constant.expression = cn; + } + + if(tokenizer->get_token()==GDTokenizer::TK_COMMA) { + tokenizer->advance(); + } + + if(enum_name != "") { + const ConstantNode *cn = static_cast<const ConstantNode*>(constant.expression); + enum_dict[constant.identifier] = cn->value; + } + + p_class->constant_expressions.push_back(constant); + } + + } + + if(enum_name != "") { + ClassNode::Constant enum_constant; + enum_constant.identifier=enum_name; + ConstantNode *cn = alloc_node<ConstantNode>(); + cn->value = enum_dict; + enum_constant.expression=cn; + p_class->constant_expressions.push_back(enum_constant); + } + + if (!_end_statement()) { + _set_error("Expected end of statement (enum)"); + return; + } + + + + + } break; default: { @@ -3376,6 +3574,11 @@ int GDParser::get_completion_argument_index() { return completion_argument; } +int GDParser::get_completion_identifier_is_function() { + + return completion_ident_is_call; +} + GDParser::GDParser() { head=NULL; diff --git a/modules/gdscript/gd_parser.h b/modules/gdscript/gd_parser.h index 9e6f6e6765..75653e0916 100644 --- a/modules/gdscript/gd_parser.h +++ b/modules/gdscript/gd_parser.h @@ -247,6 +247,9 @@ public: OP_BIT_AND, OP_BIT_OR, OP_BIT_XOR, + //ternary operators + OP_TERNARY_IF, + OP_TERNARY_ELSE, }; Operator op; @@ -429,6 +432,7 @@ private: int completion_line; int completion_argument; bool completion_found; + bool completion_ident_is_call; PropertyInfo current_export; @@ -475,7 +479,7 @@ public: BlockNode *get_completion_block(); FunctionNode *get_completion_function(); int get_completion_argument_index(); - + int get_completion_identifier_is_function(); void clear(); GDParser(); diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp index b97a0fcbb6..0ea10950df 100644 --- a/modules/gdscript/gd_script.cpp +++ b/modules/gdscript/gd_script.cpp @@ -751,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); diff --git a/modules/gdscript/gd_script.h b/modules/gdscript/gd_script.h index 0c3e1eb614..051e80634f 100644 --- a/modules/gdscript/gd_script.h +++ b/modules/gdscript/gd_script.h @@ -65,6 +65,7 @@ class GDScript : public Script { StringName setter; StringName getter; ScriptInstance::RPCMode rpc_mode; + }; friend class GDInstance; @@ -86,8 +87,11 @@ friend class GDScriptLanguage; Map<StringName,Ref<GDScript> > subclasses; Map<StringName,Vector<StringName> > _signals; + #ifdef TOOLS_ENABLED + Map<StringName,int> member_lines; + Map<StringName,Variant> member_default_values; List<PropertyInfo> members_cache; @@ -193,6 +197,16 @@ public: virtual ScriptLanguage *get_language() const; + virtual int get_member_line(const StringName& p_member) const { +#ifdef TOOLS_ENABLED + if (member_lines.has(p_member)) + return member_lines[p_member]; + else +#endif + return -1; + + } + GDScript(); ~GDScript(); }; @@ -394,6 +408,9 @@ public: virtual int find_function(const String& p_function,const String& p_code) const; virtual String make_function(const String& p_class,const String& p_name,const StringArray& p_args) const; virtual Error complete_code(const String& p_code, const String& p_base_path, Object*p_owner,List<String>* r_options,String& r_call_hint); +#ifdef TOOLS_ENABLED + virtual Error lookup_code(const String& p_code, const String& p_symbol, const String& p_base_path, Object*p_owner, LookupResult& r_result); +#endif virtual void auto_indent_code(String& p_code,int p_from_line,int p_to_line) const; virtual void add_global_constant(const StringName& p_variable,const Variant& p_value); diff --git a/modules/gdscript/gd_tokenizer.cpp b/modules/gdscript/gd_tokenizer.cpp index 47e740b227..2041ec12ad 100644 --- a/modules/gdscript/gd_tokenizer.cpp +++ b/modules/gdscript/gd_tokenizer.cpp @@ -95,6 +95,7 @@ const char* GDTokenizer::token_names[TK_MAX]={ "setget", "const", "var", +"enum", "preload", "assert", "yield", @@ -874,6 +875,7 @@ void GDTokenizerText::_advance() { {TK_PR_SLAVE,"slave"}, {TK_PR_SYNC,"sync"}, {TK_PR_CONST,"const"}, + {TK_PR_ENUM,"enum"}, //controlflow {TK_CF_IF,"if"}, {TK_CF_ELIF,"elif"}, @@ -1330,7 +1332,7 @@ StringName GDTokenizerBuffer::get_token_identifier(int p_offset) const{ ERR_FAIL_INDEX_V(offset,tokens.size(),StringName()); uint32_t identifier = tokens[offset]>>TOKEN_BITS; - ERR_FAIL_INDEX_V(identifier,identifiers.size(),StringName()); + ERR_FAIL_INDEX_V(identifier,(uint32_t)identifiers.size(),StringName()); return identifiers[identifier]; } @@ -1389,7 +1391,7 @@ const Variant& GDTokenizerBuffer::get_token_constant(int p_offset) const{ int offset = token+p_offset; ERR_FAIL_INDEX_V(offset,tokens.size(),nil); uint32_t constant = tokens[offset]>>TOKEN_BITS; - ERR_FAIL_INDEX_V(constant,constants.size(),nil); + ERR_FAIL_INDEX_V(constant,(uint32_t)constants.size(),nil); return constants[constant]; } diff --git a/modules/gdscript/gd_tokenizer.h b/modules/gdscript/gd_tokenizer.h index 1815f82894..b91229ab1e 100644 --- a/modules/gdscript/gd_tokenizer.h +++ b/modules/gdscript/gd_tokenizer.h @@ -102,6 +102,7 @@ public: TK_PR_SETGET, TK_PR_CONST, TK_PR_VAR, + TK_PR_ENUM, TK_PR_PRELOAD, TK_PR_ASSERT, TK_PR_YIELD, diff --git a/modules/visual_script/register_types.cpp b/modules/visual_script/register_types.cpp index 58afeef3e3..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; @@ -60,6 +61,7 @@ void register_visual_script_types() { 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>(); @@ -97,11 +99,14 @@ void register_visual_script_types() { ObjectTypeDB::register_type<VisualScriptBuiltinFunc>(); + 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(); diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp index aa09e7f005..bd042c8989 100644 --- a/modules/visual_script/visual_script.cpp +++ b/modules/visual_script/visual_script.cpp @@ -3,7 +3,7 @@ #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 @@ -574,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)); @@ -598,8 +615,6 @@ void VisualScript::add_variable(const StringName& p_name,const Variant& p_defaul v._export=p_export; variables[p_name]=v; - script_variable_remap[SCRIPT_VARIABLES_PREFIX+String(p_name)]=p_name; - #ifdef TOOLS_ENABLED _update_placeholders(); @@ -616,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(); @@ -911,7 +925,7 @@ void VisualScript::_update_placeholders() { 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; } @@ -947,7 +961,7 @@ ScriptInstance* VisualScript::instance_create(Object *p_this) { 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; } @@ -1045,10 +1059,10 @@ 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_script_method_list(List<MethodInfo> *p_list) const { @@ -1116,6 +1130,7 @@ void VisualScript::get_script_property_list(List<PropertyInfo> *p_list) const { } } +#ifdef TOOLS_ENABLED bool VisualScript::are_subnodes_edited() const { for(const Map<StringName,Function>::Element *E=functions.front();E;E=E->next()) { @@ -1129,7 +1144,7 @@ bool VisualScript::are_subnodes_edited() const { return false; } - +#endif void VisualScript::_set_data(const Dictionary& p_data) { @@ -1385,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; @@ -1400,14 +1413,12 @@ 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{ @@ -1416,21 +1427,15 @@ void VisualScriptInstance::get_property_list(List<PropertyInfo> *p_properties) c 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; @@ -1892,17 +1897,21 @@ Variant VisualScriptInstance::_call_internal(const StringName& p_method, void* p 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)+"."; + 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."; + 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."; + error_str+="Expected "+itos(r_error.argument)+" arguments."; } else if (r_error.error==Variant::CallError::CALL_ERROR_INVALID_METHOD) { - error_str="Invalid Call."; + error_str+="Invalid Call."; } else if (r_error.error==Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL) { - error_str="Instance is null"; + error_str+="Base Instance is null"; } } @@ -2430,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() { diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h index 9e96967c6f..63b018b0c2 100644 --- a/modules/visual_script/visual_script.h +++ b/modules/visual_script/visual_script.h @@ -38,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; @@ -63,7 +65,7 @@ public: Variant::Type type; InputEvent::Type ev_type; StringName obj_type; - String script_type; + Ref<Script> script; TypeGuess() { type=Variant::NIL; ev_type=InputEvent::NONE; } }; @@ -225,7 +227,6 @@ friend class VisualScriptInstance; Map<StringName,Function> functions; Map<StringName,Variable> variables; - Map<StringName,StringName> script_variable_remap; Map<StringName,Vector<Argument> > custom_signals; Map<Object*,VisualScriptInstance*> instances; @@ -279,6 +280,7 @@ 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(),bool p_export=false); bool has_variable(const StringName& p_name) const; @@ -342,7 +344,9 @@ public: virtual void get_script_property_list(List<PropertyInfo> *p_list) const; +#ifdef TOOLS_ENABLED virtual bool are_subnodes_edited() const; +#endif VisualScript(); ~VisualScript(); diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp index 1d0bca0b30..24a44d3506 100644 --- a/modules/visual_script/visual_script_builtin_funcs.cpp +++ b/modules/visual_script/visual_script_builtin_funcs.cpp @@ -65,6 +65,21 @@ 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 { @@ -88,10 +103,10 @@ bool VisualScriptBuiltinFunc::has_input_sequence_port() const{ } -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: @@ -157,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) { @@ -560,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; @@ -679,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: { - } break; - case VisualScriptBuiltinFunc::MATH_RANDSEED: { + VALIDATE_ARG_NUM(0); + *r_return=Math::rad2deg(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_LINEAR2DB: { - 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::linear2db(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::MATH_DB2LINEAR: { - } break; - case VisualScriptBuiltinFunc::MATH_DEG2RAD: { + VALIDATE_ARG_NUM(0); + *r_return=Math::db2linear(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::LOGIC_MAX: { - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::deg2rad(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_RAD2DEG: { + 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::rad2deg(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_LINEAR2DB: { + VALIDATE_ARG_NUM(1); - VALIDATE_ARG_NUM(0); - *p_outputs[0]=Math::linear2db(*p_inputs[0]); - } break; - case VisualScriptBuiltinFunc::MATH_DB2LINEAR: { + real_t a = *p_inputs[0]; + real_t b = *p_inputs[1]; + + *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); + } - real_t a = *p_inputs[0]; - real_t b = *p_inputs[1]; - real_t c = *p_inputs[2]; + if (p_inputs[0]->is_ref()) { - *p_outputs[0]=CLAMP(a,b,c); + REF r = *p_inputs[0]; + if (!r.is_valid()) { + + 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); - fr->set_instance(*p_inputs[0]); - fr->set_function(*p_inputs[1]); + *r_return=Variant::construct(Variant::Type(type),p_inputs,1,r_error); + } + } break; + case VisualScriptBuiltinFunc::TYPE_OF: { - *p_outputs[0]=fr; - } break; - case VisualScriptBuiltinFunc::TYPE_CONVERT: { + *r_return = p_inputs[0]->get_type(); - VALIDATE_ARG_NUM(1); - int type=*p_inputs[1]; - if (type<0 || type>=Variant::VARIANT_MAX) { + } break; + case VisualScriptBuiltinFunc::TYPE_EXISTS: { - *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; - } else { + *r_return = ObjectTypeDB::type_exists(*p_inputs[0]); + } break; + case VisualScriptBuiltinFunc::TEXT_STR: { - *p_outputs[0]=Variant::construct(Variant::Type(type),p_inputs,1,r_error); - } - } break; - case VisualScriptBuiltinFunc::TYPE_OF: { + String str = *p_inputs[0]; + + *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 7f09a265fb..02d3c453c4 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -3,6 +3,7 @@ #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" @@ -330,7 +331,7 @@ static Color _color_from_type(Variant::Type p_type) { 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::TRANSFORM: color = Color::html("f6a86e"); break; case Variant::COLOR: color = Color::html("9dff70"); break; case Variant::IMAGE: color = Color::html("93f1b9"); break; @@ -502,9 +503,20 @@ void VisualScriptEditor::_update_graph(int p_only_id) { } - 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; @@ -523,19 +535,27 @@ 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; @@ -554,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; @@ -620,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))); @@ -639,7 +667,11 @@ 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++; } @@ -1177,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(); @@ -2084,6 +2140,7 @@ Vector<String> VisualScriptEditor::get_functions(){ void VisualScriptEditor::set_edited_script(const Ref<Script>& p_script){ + script=p_script; signal_editor->script=p_script; signal_editor->undo_redo=undo_redo; @@ -2558,11 +2615,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() { @@ -2889,6 +3255,9 @@ void VisualScriptEditor::_bind_methods() { 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); @@ -2949,7 +3318,7 @@ 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 ); left_vb->add_margin_child(TTR("Base Type:"),base_type_select); @@ -3093,6 +3462,15 @@ VisualScriptEditor::VisualScriptEditor() { 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() { diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h index 5a40822bfe..483ae1644c 100644 --- a/modules/visual_script/visual_script_editor.h +++ b/modules/visual_script/visual_script_editor.h @@ -33,6 +33,19 @@ class VisualScriptEditor : public ScriptEditorBase { 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; Ref<VisualScript> script; @@ -53,6 +66,7 @@ class VisualScriptEditor : public ScriptEditorBase { PropertyEditor *edit_signal_edit; PropertySelector *method_select; + PropertySelector *new_connect_node_select; VisualScriptEditorVariableEdit *variable_editor; @@ -114,6 +128,16 @@ class VisualScriptEditor : public ScriptEditorBase { 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; @@ -144,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; @@ -173,6 +199,8 @@ class VisualScriptEditor : public ScriptEditorBase { 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: 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 5066a4214d..97338da187 100644 --- a/modules/visual_script/visual_script_flow_control.cpp +++ b/modules/visual_script/visual_script_flow_control.cpp @@ -616,7 +616,7 @@ bool VisualScriptSwitch::has_input_sequence_port() const{ int VisualScriptSwitch::get_input_value_port_count() const{ - return 1; + return case_values.size()+1; } int VisualScriptSwitch::get_output_value_port_count() const{ @@ -628,14 +628,15 @@ String VisualScriptSwitch::get_output_sequence_port_text(int p_port) const { if (p_port==case_values.size()) return "done"; - if (case_values[p_port].value.get_type()==Variant::NIL) - return "null"; - return case_values[p_port].value; + return String(); } PropertyInfo VisualScriptSwitch::get_input_value_port_info(int p_idx) const{ - return PropertyInfo(Variant::NIL,"input"); + if (p_idx<case_values.size()) { + return PropertyInfo(case_values[p_idx].type," ="); + } else + return PropertyInfo(Variant::NIL,"input"); } PropertyInfo VisualScriptSwitch::get_output_value_port_info(int p_idx) const{ @@ -659,7 +660,7 @@ class VisualScriptNodeInstanceSwitch : public VisualScriptNodeInstance { public: VisualScriptInstance* instance; - Vector<Variant> case_values; + int case_count; //virtual int get_working_memory_size() const { return 0; } //virtual bool is_output_port_unsequenced(int p_idx) const { return false; } @@ -668,17 +669,17 @@ 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_start_mode==START_MODE_CONTINUE_SEQUENCE) { - return case_values.size(); //exit + return case_count; //exit } - for(int i=0;i<case_values.size();i++) { + for(int i=0;i<case_count;i++) { - if (*p_inputs[0]==case_values[i]) { + if (*p_inputs[i]==*p_inputs[case_count]) { return i|STEP_FLAG_PUSH_STACK_BIT; } } - return case_values.size(); + return case_count; } @@ -688,10 +689,7 @@ VisualScriptNodeInstance* VisualScriptSwitch::instance(VisualScriptInstance* p_i VisualScriptNodeInstanceSwitch * instance = memnew(VisualScriptNodeInstanceSwitch ); instance->instance=p_instance; - instance->case_values.resize(case_values.size()); - for(int i=0;i<case_values.size();i++) { - instance->case_values[i]=case_values[i].value; - } + instance->case_count=case_values.size(); return instance; } @@ -708,23 +706,12 @@ bool VisualScriptSwitch::_set(const StringName& p_name, const Variant& p_value) int idx = String(p_name).get_slice("/",1).to_int(); ERR_FAIL_INDEX_V(idx,case_values.size(),false); - String what = String(p_name).get_slice("/",2); - - if (what=="type") { - case_values[idx].type=Variant::Type(int(p_value)); - Variant::CallError ce; - case_values[idx].value=Variant::construct(case_values[idx].type,NULL,0,ce); - _change_notify(); - ports_changed_notify(); - return true; - } + case_values[idx].type=Variant::Type(int(p_value)); + _change_notify(); + ports_changed_notify(); - if (what=="value") { - case_values[idx].value=p_value; - ports_changed_notify(); - return true; - } + return true; } return false; @@ -741,17 +728,9 @@ bool VisualScriptSwitch::_get(const StringName& p_name,Variant &r_ret) const { int idx = String(p_name).get_slice("/",1).to_int(); ERR_FAIL_INDEX_V(idx,case_values.size(),false); - String what = String(p_name).get_slice("/",2); - - if (what=="type") { - r_ret=case_values[idx].type; - return true; - } - if (what=="value") { - r_ret=case_values[idx].value; - return true; - } + r_ret=case_values[idx].type; + return true; } return false; @@ -767,8 +746,7 @@ void VisualScriptSwitch::_get_property_list( List<PropertyInfo> *p_list) const { } for(int i=0;i<case_values.size();i++) { - p_list->push_back(PropertyInfo(Variant::INT,"case/"+itos(i)+"/type",PROPERTY_HINT_ENUM,argt)); - p_list->push_back(PropertyInfo(case_values[i].type,"case/"+itos(i)+"/value")); + p_list->push_back(PropertyInfo(Variant::INT,"case/"+itos(i),PROPERTY_HINT_ENUM,argt)); } } diff --git a/modules/visual_script/visual_script_flow_control.h b/modules/visual_script/visual_script_flow_control.h index e1730a2264..e0da84a534 100644 --- a/modules/visual_script/visual_script_flow_control.h +++ b/modules/visual_script/visual_script_flow_control.h @@ -203,7 +203,6 @@ class VisualScriptSwitch : public VisualScriptNode { struct Case { Variant::Type type; - Variant value; Case() { type=Variant::NIL; } }; @@ -224,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; diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp index 79910aa2bd..5a21cb40e9 100644 --- a/modules/visual_script/visual_script_func_nodes.cpp +++ b/modules/visual_script/visual_script_func_nodes.cpp @@ -12,7 +12,7 @@ int VisualScriptFunctionCall::get_output_sequence_port_count() const { - if (method_cache.flags&METHOD_FLAG_CONST) + if (method_cache.flags&METHOD_FLAG_CONST || call_mode==CALL_MODE_BASIC_TYPE) return 0; else return 1; @@ -20,7 +20,7 @@ int VisualScriptFunctionCall::get_output_sequence_port_count() const { bool VisualScriptFunctionCall::has_input_sequence_port() const{ - if (method_cache.flags&METHOD_FLAG_CONST) + if (method_cache.flags&METHOD_FLAG_CONST || call_mode==CALL_MODE_BASIC_TYPE) return false; else return true; @@ -417,6 +417,14 @@ void VisualScriptFunctionCall::_update_method_cache() { 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); @@ -920,6 +928,18 @@ VisualScriptNodeInstance* VisualScriptFunctionCall::instance(VisualScriptInstanc 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() { validate=true; @@ -1600,6 +1620,17 @@ VisualScriptNodeInstance* VisualScriptPropertySet::instance(VisualScriptInstance 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_SELF; diff --git a/modules/visual_script/visual_script_func_nodes.h b/modules/visual_script/visual_script_func_nodes.h index 5367deed7f..43ef276cf4 100644 --- a/modules/visual_script/visual_script_func_nodes.h +++ b/modules/visual_script/visual_script_func_nodes.h @@ -105,6 +105,9 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + + VisualScriptFunctionCall(); }; @@ -195,6 +198,7 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; VisualScriptPropertySet(); }; diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp index f5c5159af7..7ada292b13 100644 --- a/modules/visual_script/visual_script_nodes.cpp +++ b/modules/visual_script/visual_script_nodes.cpp @@ -553,7 +553,7 @@ void VisualScriptOperator::_bind_methods() { argt+=","+Variant::get_type_name(Variant::Type(i)); } - ADD_PROPERTY(PropertyInfo(Variant::INT,"operator_value/type",PROPERTY_HINT_ENUM,types,PROPERTY_USAGE_NOEDITOR),_SCS("set_operator"),_SCS("get_operator")); + 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")); } @@ -1071,7 +1071,13 @@ PropertyInfo VisualScriptPreload::get_input_value_port_info(int p_idx) const{ PropertyInfo VisualScriptPreload::get_output_value_port_info(int p_idx) const{ - return PropertyInfo(Variant::OBJECT,"res"); + PropertyInfo pinfo=PropertyInfo(Variant::OBJECT,"res"); + if (preload.is_valid()) { + pinfo.hint=PROPERTY_HINT_RESOURCE_TYPE; + pinfo.hint_string=preload->get_type(); + } + + return pinfo; } @@ -1569,6 +1575,151 @@ VisualScriptClassConstant::VisualScriptClassConstant() { } +////////////////////////////////////////// +////////////////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; +} + ////////////////////////////////////////// @@ -1782,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() { @@ -1919,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) { @@ -1942,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 @@ -2079,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 { @@ -2270,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() { @@ -3247,13 +3480,29 @@ PropertyInfo VisualScriptInputAction::get_output_value_port_info(int p_idx) cons String VisualScriptInputAction::get_caption() const { + return "Action"; } String VisualScriptInputAction::get_text() const { - return name; + 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(); } @@ -3278,19 +3527,50 @@ 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) { - *p_outputs[0]=Input::get_singleton()->is_action_pressed(action); + 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; } @@ -3302,6 +3582,7 @@ VisualScriptNodeInstance* VisualScriptInputAction::instance(VisualScriptInstance VisualScriptNodeInstanceInputAction * instance = memnew(VisualScriptNodeInstanceInputAction ); instance->instance=p_instance; instance->action=name; + instance->mode=mode; return instance; } @@ -3348,13 +3629,18 @@ 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; } @@ -3593,6 +3879,7 @@ void register_visual_script_nodes() { 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>); diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h index c0ffb17e15..94eeadca57 100644 --- a/modules/visual_script/visual_script_nodes.h +++ b/modules/visual_script/visual_script_nodes.h @@ -412,6 +412,48 @@ public: 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 { @@ -496,6 +538,9 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + + VisualScriptEngineSingleton(); }; @@ -535,6 +580,8 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + VisualScriptSceneNode(); }; @@ -571,6 +618,8 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + VisualScriptSceneTree(); }; @@ -644,6 +693,8 @@ public: virtual VisualScriptNodeInstance* instance(VisualScriptInstance* p_instance); + virtual TypeGuess guess_output_type(TypeGuess* p_inputs, int p_output) const; + VisualScriptSelf(); }; @@ -906,8 +957,16 @@ public: 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: @@ -936,12 +995,15 @@ public: 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 { 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/android/detect.py b/platform/android/detect.py index 49ffc86658..7e482047c9 100644 --- a/platform/android/detect.py +++ b/platform/android/detect.py @@ -168,11 +168,11 @@ def configure(env): env['neon_enabled']=False if env['android_arch']=='x86': - env['CCFLAGS'] = string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__GLIBC__ -Wno-psabi -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED') + env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__GLIBC__ -Wno-psabi -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED')) elif env["android_arch"]=="armv6": - env['CCFLAGS'] = string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_6__ -D__GLIBC__ -Wno-psabi -march=armv6 -mfpu=vfp -mfloat-abi=softfp -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED') + env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_6__ -D__GLIBC__ -Wno-psabi -march=armv6 -mfpu=vfp -mfloat-abi=softfp -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED')) elif env["android_arch"]=="armv7": - env['CCFLAGS'] = string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -D__GLIBC__ -Wno-psabi -march=armv7-a -mfloat-abi=softfp -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED') + env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -D__GLIBC__ -Wno-psabi -march=armv7-a -mfloat-abi=softfp -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED')) if env['android_neon']=='yes': env['neon_enabled']=True env.Append(CCFLAGS=['-mfpu=neon','-D__ARM_NEON__']) diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 10d77aba6c..4735a91f43 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -495,7 +495,7 @@ static String _parse_string(const uint8_t *p_bytes,bool p_utf8) { Vector<uint8_t> str8; str8.resize(len+1); - for(int i=0;i<len;i++) { + for(uint32_t i=0;i<len;i++) { str8[i]=p_bytes[offset+i]; } str8[len]=0; @@ -505,7 +505,7 @@ static String _parse_string(const uint8_t *p_bytes,bool p_utf8) { } else { String str; - for(int i=0;i<len;i++) { + for(uint32_t i=0;i<len;i++) { CharType c = decode_uint16(&p_bytes[offset+i*2]); if (c==0) break; @@ -535,7 +535,7 @@ void EditorExportPlatformAndroid::_fix_resources(Vector<uint8_t>& p_manifest) { printf("stirng count: %i\n",string_count); printf("flags: %x\n",string_flags); - for(int i=0;i<string_count;i++) { + for(uint32_t i=0;i<string_count;i++) { uint32_t offset = decode_uint32(&p_manifest[string_table_begins+i*4]); offset+=string_table_begins+string_count*4; @@ -569,7 +569,7 @@ void EditorExportPlatformAndroid::_fix_resources(Vector<uint8_t>& p_manifest) { Vector<uint8_t> ret; ret.resize(string_table_begins+string_table.size()*4); - for(int i=0;i<string_table_begins;i++) { + for(uint32_t i=0;i<string_table_begins;i++) { ret[i]=p_manifest[i]; } @@ -660,7 +660,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool uint32_t filesize = decode_uint32(&p_manifest[ofs+4]); ofs+=8; -// print_line("FILESIZE: "+itos(filesize)+" ACTUAL: "+itos(p_manifest.size())); + //print_line("FILESIZE: "+itos(filesize)+" ACTUAL: "+itos(p_manifest.size())); uint32_t string_count; uint32_t styles_count; @@ -672,7 +672,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool uint32_t string_table_ends; Vector<uint8_t> stable_extra; - while(ofs < p_manifest.size()) { + while(ofs < (uint32_t)p_manifest.size()) { uint32_t chunk = decode_uint32(&p_manifest[ofs]); uint32_t size = decode_uint32(&p_manifest[ofs+4]); @@ -687,7 +687,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool string_count=decode_uint32(&p_manifest[iofs]); styles_count=decode_uint32(&p_manifest[iofs+4]); - uint32_t string_flags=decode_uint32(&p_manifest[iofs+8]); + string_flags=decode_uint32(&p_manifest[iofs+8]); string_data_offset=decode_uint32(&p_manifest[iofs+12]); styles_offset=decode_uint32(&p_manifest[iofs+16]); /* @@ -703,7 +703,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool string_table_begins=st_offset; - for(int i=0;i<string_count;i++) { + for(uint32_t i=0;i<string_count;i++) { uint32_t string_at = decode_uint32(&p_manifest[st_offset+i*4]); string_at+=st_offset+string_count*4; @@ -719,7 +719,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool uint32_t len = decode_uint16(&p_manifest[string_at]); Vector<CharType> ucstring; ucstring.resize(len+1); - for(int j=0;j<len;j++) { + for(uint32_t j=0;j<len;j++) { uint16_t c=decode_uint16(&p_manifest[string_at+2+2*j]); ucstring[j]=c; } @@ -732,7 +732,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool // print_line("String "+itos(i)+": "+string_table[i]); } - for(int i=string_end;i<(ofs+size);i++) { + for(uint32_t i=string_end;i<(ofs+size);i++) { stable_extra.push_back(p_manifest[i]); } @@ -758,7 +758,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool uint32_t attrcount=decode_uint32(&p_manifest[iofs+20]); iofs+=28; //printf("ATTRCOUNT: %x\n",attrcount); - for(int i=0;i<attrcount;i++) { + for(uint32_t i=0;i<attrcount;i++) { uint32_t attr_nspace=decode_uint32(&p_manifest[iofs]); uint32_t attr_name=decode_uint32(&p_manifest[iofs+4]); uint32_t attr_value=decode_uint32(&p_manifest[iofs+8]); @@ -883,7 +883,7 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool Vector<uint8_t> ret; ret.resize(string_table_begins+string_table.size()*4); - for(int i=0;i<string_table_begins;i++) { + for(uint32_t i=0;i<string_table_begins;i++) { ret[i]=p_manifest[i]; } @@ -913,21 +913,19 @@ void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool } - ret.resize(ret.size()+stable_extra.size()); - while(ret.size()%4) - ret.push_back(0); - for(int i=0;i<stable_extra.size();i++) { - - chars[i]=stable_extra[i]; + ret.push_back(stable_extra[i]); } + while(ret.size()%4) + ret.push_back(0); + uint32_t new_stable_end=ret.size(); uint32_t extra = (p_manifest.size()-string_table_ends); ret.resize(new_stable_end + extra); - for(int i=0;i<extra;i++) + for(uint32_t i=0;i<extra;i++) ret[new_stable_end+i]=p_manifest[string_table_ends+i]; while(ret.size()%4) @@ -1355,7 +1353,7 @@ Error EditorExportPlatformAndroid::export_project(const String& p_path, bool p_d args.push_back(unaligned_path); args.push_back(user); int retval; - int err = OS::get_singleton()->execute(jarsigner,args,true,NULL,NULL,&retval); + OS::get_singleton()->execute(jarsigner,args,true,NULL,NULL,&retval); if (retval) { EditorNode::add_io_error("'jarsigner' returned with error #"+itos(retval)); return ERR_CANT_CREATE; @@ -1368,7 +1366,7 @@ Error EditorExportPlatformAndroid::export_project(const String& p_path, bool p_d args.push_back(unaligned_path); args.push_back("-verbose"); - err = OS::get_singleton()->execute(jarsigner,args,true,NULL,NULL,&retval); + OS::get_singleton()->execute(jarsigner,args,true,NULL,NULL,&retval); if (retval) { EditorNode::add_io_error("'jarsigner' verification of APK failed. Make sure to use jarsigner from Java 6."); return ERR_CANT_CREATE; @@ -1515,7 +1513,7 @@ void EditorExportPlatformAndroid::_device_poll_thread(void *ud) { List<String> args; args.push_back("devices"); int ec; - Error err = OS::get_singleton()->execute(adb,args,true,NULL,&devices,&ec); + OS::get_singleton()->execute(adb,args,true,NULL,&devices,&ec); Vector<String> ds = devices.split("\n"); Vector<String> ldevices; for(int i=1;i<ds.size();i++) { @@ -1574,7 +1572,7 @@ void EditorExportPlatformAndroid::_device_poll_thread(void *ud) { int ec; String dp; - Error err = OS::get_singleton()->execute(adb,args,true,NULL,&dp,&ec); + OS::get_singleton()->execute(adb,args,true,NULL,&dp,&ec); Vector<String> props = dp.split("\n"); String vendor; diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index 4e395a6f9f..862709fc7d 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -132,15 +132,10 @@ void OS_Android::initialize(const VideoMode& p_desired,int p_video_driver,int p_ AudioDriverManagerSW::add_driver(&audio_driver_android); - if (true) { - RasterizerGLES2 *rasterizer_gles22=memnew( RasterizerGLES2(false,use_reload_hooks,false,use_reload_hooks ) ); - if (gl_extensions) - rasterizer_gles22->set_extensions(gl_extensions); - rasterizer = rasterizer_gles22; - } else { - //rasterizer = memnew( RasterizerGLES1(use_reload_hooks, use_reload_hooks) ); - - } + RasterizerGLES2 *rasterizer_gles22=memnew( RasterizerGLES2(false,use_reload_hooks,false,use_reload_hooks ) ); + if (gl_extensions) + rasterizer_gles22->set_extensions(gl_extensions); + rasterizer = rasterizer_gles22; rasterizer->set_force_16_bits_fbo(use_16bits_fbo); 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/export/export.cpp b/platform/osx/export/export.cpp index 47b0392b25..30f4c58150 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -445,7 +445,7 @@ Error EditorExportPlatformOSX::export_project(const String& p_path, bool p_debug { //write datapack - int err = zipOpenNewFileInZip(dpkg, + zipOpenNewFileInZip(dpkg, (pkg_name+".app/Contents/Resources/data.pck").utf8().get_data(), NULL, NULL, 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 2414cee57e..12ea5a93ee 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -1,10 +1,11 @@ # -# tested on | Windows native | Linux cross-compilation -# ------------------------+-------------------+--------------------------- -# MSVS C++ 2010 Express | WORKS | n/a -# Mingw-w64 | WORKS | WORKS -# Mingw-w32 | WORKS | WORKS -# MinGW | WORKS | untested +# tested on | Windows native | Linux cross-compilation +# ----------------------------+-------------------+--------------------------- +# MSVS C++ 2010 Express | WORKS | n/a +# Visual C++ Build Tools 2015 | WORKS | n/a +# Mingw-w64 | WORKS | WORKS +# Mingw-w32 | WORKS | WORKS +# MinGW | WORKS | untested # ##### # Notes about MSVS C++ : @@ -12,6 +13,12 @@ # - MSVC2010-Express compiles to 32bits only. # ##### +# Note about Visual C++ Build Tools : +# +# - Visual C++ Build Tools is the standalone MSVC compiler : +# http://landinghub.visualstudio.com/visual-cpp-build-tools +# +##### # Notes about Mingw-w64 and Mingw-w32 under Windows : # # - both can be installed using the official installer : @@ -78,7 +85,7 @@ ##### # TODO : -# +# # - finish to cleanup this script to remove all the remains of previous hacks and workarounds # - make it work with the Windows7 SDK that is supposed to enable 64bits compilation for MSVC2010-Express # - confirm it works well with other Visual Studio versions. @@ -90,6 +97,7 @@ import os import sys +import methods def is_active(): return True @@ -101,7 +109,7 @@ def can_build(): if (os.name=="nt"): #building natively on windows! - if (os.getenv("VSINSTALLDIR")): + if ( methods.msvc_is_detected() ): return True else: print("\nMSVC not detected, attempting Mingw.") @@ -196,7 +204,7 @@ def configure(env): env.Append(CPPPATH=['#platform/windows']) env['is_mingw']=False - if (os.name=="nt" and os.getenv("VSINSTALLDIR")!=None): + if (os.name=="nt" and methods.msvc_is_detected() ): #build using visual studio env['ENV']['TMP'] = os.environ['TMP'] env.Append(CPPPATH=['#platform/windows/include']) @@ -258,7 +266,7 @@ def configure(env): env['ENV'] = os.environ; # This detection function needs the tools env (that is env['ENV'], not SCons's env), and that is why it's this far bellow in the code - compiler_version_str = detect_visual_c_compiler_version(env['ENV']) + compiler_version_str = methods.detect_visual_c_compiler_version(env['ENV']) # Note: this detection/override code from here onward should be here instead of in SConstruct because it's platform and compiler specific (MSVC/Windows) if(env["bits"] != "default"): @@ -272,7 +280,7 @@ def configure(env): # that decide the architecture that is build for. Scons can only detect the os.getenviron (because vsvarsall.bat sets a lot of stuff for cl.exe to work with) env["bits"]="32" env["x86_opt_vc"]=True - + print "Detected MSVC compiler: "+compiler_version_str # If building for 64bit architecture, disable assembly optimisations for 32 bit builds (theora as of writting)... vc compiler for 64bit can not compile _asm if(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"): @@ -282,9 +290,14 @@ def configure(env): elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"): print "Compiled program architecture will be a 32 bit executable. (forcing bits=32)." else: - print "Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup." + print "Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup." if env["bits"]=="64": env.Append(CCFLAGS=['/D_WIN64']) + + # Incremental linking fix + env['BUILDERS']['ProgramOriginal'] = env['BUILDERS']['Program'] + env['BUILDERS']['Program'] = methods.precious_program + else: # Workaround for MinGW. See: @@ -379,73 +392,7 @@ def configure(env): env['is_mingw']=True env.Append( BUILDERS = { 'RES' : env.Builder(action = build_res_file, suffix = '.o',src_suffix = '.rc') } ) - import methods env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) - -def detect_visual_c_compiler_version(tools_env): - # tools_env is the variable scons uses to call tools that execute tasks, SCons's env['ENV'] that executes tasks... - # (see the SCons documentation for more information on what it does)... - # in order for this function to be well encapsulated i choose to force it to recieve SCons's TOOLS env (env['ENV'] - # and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect - # the propper vc version that will be called - - # These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc) - # There are many different cl.exe files that are run, and each one compiles & links to a different architecture - # As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program() - # is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns: - # the following string values: - - # "" Compiler not detected - # "amd64" Native 64 bit compiler - # "amd64_x86" 64 bit Cross Compiler for 32 bit - # "x86" Native 32 bit compiler - # "x86_amd64" 32 bit Cross Compiler for 64 bit - - # There are other architectures, but Godot does not support them currently, so this function does not detect arm/amd64_arm - # and similar architectures/compilers - - # Set chosen compiler to "not detected" - vc_chosen_compiler_index = -1 - vc_chosen_compiler_str = "" - - # find() works with -1 so big ifs bellow are needed... the simplest solution, in fact - # First test if amd64 and amd64_x86 compilers are present in the path - vc_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64;") - if(vc_amd64_compiler_detection_index > -1): - vc_chosen_compiler_index = vc_amd64_compiler_detection_index - vc_chosen_compiler_str = "amd64" - - vc_amd64_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64_x86;") - if(vc_amd64_x86_compiler_detection_index > -1 - and (vc_chosen_compiler_index == -1 - or vc_chosen_compiler_index > vc_amd64_x86_compiler_detection_index)): - vc_chosen_compiler_index = vc_amd64_x86_compiler_detection_index - vc_chosen_compiler_str = "amd64_x86" - - - # Now check the 32 bit compilers - vc_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN;") - if(vc_x86_compiler_detection_index > -1 - and (vc_chosen_compiler_index == -1 - or vc_chosen_compiler_index > vc_x86_compiler_detection_index)): - vc_chosen_compiler_index = vc_x86_compiler_detection_index - vc_chosen_compiler_str = "x86" - - vc_x86_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env['VCINSTALLDIR']+"BIN\\x86_amd64;") - if(vc_x86_amd64_compiler_detection_index > -1 - and (vc_chosen_compiler_index == -1 - or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index)): - vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index - vc_chosen_compiler_str = "x86_amd64" - - # debug help - #print vc_amd64_compiler_detection_index - #print vc_amd64_x86_compiler_detection_index - #print vc_x86_compiler_detection_index - #print vc_x86_amd64_compiler_detection_index - #print "chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str) - - return vc_chosen_compiler_str diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index cebafdabce..35d90a8308 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1312,10 +1312,13 @@ void OS_Windows::finalize_core() { void OS_Windows::vprint(const char* p_format, va_list p_list, bool p_stderr) { - char buf[16384+1]; - int len = vsnprintf(buf,16384,p_format,p_list); + const unsigned int BUFFER_SIZE = 16384; + char buf[BUFFER_SIZE+1]; // +1 for the terminating character + int len = vsnprintf(buf,BUFFER_SIZE,p_format,p_list); if (len<=0) return; + if(len >= BUFFER_SIZE) + len = BUFFER_SIZE; // Output is too big, will be truncated buf[len]=0; @@ -2154,10 +2157,15 @@ String OS_Windows::get_stdin_string(bool p_block) { } +void OS_Windows::enable_for_stealing_focus(ProcessID pid) { + + AllowSetForegroundWindow(pid); + +} + void OS_Windows::move_window_to_foreground() { SetForegroundWindow(hWnd); - BringWindowToTop(hWnd); } diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index e3e037e57b..70ef694957 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -269,6 +269,7 @@ public: virtual String get_locale() const; virtual LatinKeyboardVariant get_latin_keyboard_variant() const; + virtual void enable_for_stealing_focus(ProcessID pid); virtual void move_window_to_foreground(); virtual String get_data_dir() const; virtual String get_system_dir(SystemDir p_dir) const; diff --git a/platform/winrt/SCsub b/platform/winrt/SCsub index 2ea8cbd0de..fde0c11f3b 100644 --- a/platform/winrt/SCsub +++ b/platform/winrt/SCsub @@ -2,10 +2,21 @@ Import('env') files = [ 'thread_winrt.cpp', -# '#platform/windows/stream_peer_winsock.cpp', + '#platform/windows/tcp_server_winsock.cpp', + '#platform/windows/packet_peer_udp_winsock.cpp', + '#platform/windows/stream_peer_winsock.cpp', + '#platform/windows/key_mapping_win.cpp', + 'joystick_winrt.cpp', 'gl_context_egl.cpp', + 'audio_driver_winrt.cpp', 'app.cpp', 'os_winrt.cpp', ] -env.Program('#bin/godot', files) +if "build_angle" in env and env["build_angle"]: + cmd = env.AlwaysBuild(env.ANGLE('libANGLE.lib', None)) + +prog = env.Program('#bin/godot', files) + +if "build_angle" in env and env["build_angle"]: + env.Depends(prog, [cmd]) diff --git a/platform/winrt/app.cpp b/platform/winrt/app.cpp index ea7619a64b..c2b7ba0641 100644 --- a/platform/winrt/app.cpp +++ b/platform/winrt/app.cpp @@ -1,4 +1,32 @@ -// +/*************************************************************************/ +/* app.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. */ +/*************************************************************************/ +// // This file demonstrates how to initialize EGL in a Windows Store app, using ICoreWindow. // @@ -7,17 +35,25 @@ #include "main/main.h" #include "core/os/dir_access.h" #include "core/os/file_access.h" +#include "core/os/keyboard.h" + +#include "platform/windows/key_mapping_win.h" + +#include <collection.h> using namespace Windows::ApplicationModel::Core; using namespace Windows::ApplicationModel::Activation; using namespace Windows::UI::Core; using namespace Windows::UI::Input; +using namespace Windows::Devices::Input; +using namespace Windows::UI::Xaml::Input; using namespace Windows::Foundation; using namespace Windows::Graphics::Display; +using namespace Windows::System; +using namespace Windows::System::Threading::Core; using namespace Microsoft::WRL; -using namespace Platform; -using namespace $ext_safeprojectname$; +using namespace GodotWinRT; // Helper to convert a length in device-independent pixels (DIPs) to a length in physical pixels. inline float ConvertDipsToPixels(float dips, float dpi) @@ -27,7 +63,7 @@ inline float ConvertDipsToPixels(float dips, float dpi) } // Implementation of the IFrameworkViewSource interface, necessary to run our app. -ref class HelloTriangleApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource +ref class GodotWinrtViewSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource { public: virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView() @@ -40,8 +76,8 @@ public: [Platform::MTAThread] int main(Platform::Array<Platform::String^>^) { - auto helloTriangleApplicationSource = ref new HelloTriangleApplicationSource(); - CoreApplication::Run(helloTriangleApplicationSource); + auto godotApplicationSource = ref new GodotWinrtViewSource(); + CoreApplication::Run(godotApplicationSource); return 0; } @@ -52,7 +88,8 @@ App::App() : mWindowHeight(0), mEglDisplay(EGL_NO_DISPLAY), mEglContext(EGL_NO_CONTEXT), - mEglSurface(EGL_NO_SURFACE) + mEglSurface(EGL_NO_SURFACE), + number_of_contacts(0) { } @@ -69,6 +106,7 @@ void App::Initialize(CoreApplicationView^ applicationView) // http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh994930.aspx os = new OSWinrt; + } // Called when the CoreWindow object is created (or re-created). @@ -95,20 +133,31 @@ void App::SetWindow(CoreWindow^ p_window) window->PointerPressed += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerPressed); - window->PointerMoved += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerMoved); - window->PointerReleased += ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerReleased); + window->PointerWheelChanged += + ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerWheelChanged); + + mouseChangedNotifier = SignalNotifier::AttachToEvent(L"os_mouse_mode_changed", ref new SignalHandler( + this, &App::OnMouseModeChanged + )); - //window->PointerWheelChanged += - // ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &App::OnPointerWheelChanged); + mouseChangedNotifier->Enable(); + window->CharacterReceived += + ref new TypedEventHandler<CoreWindow^, CharacterReceivedEventArgs^>(this, &App::OnCharacterReceived); + window->KeyDown += + ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &App::OnKeyDown); + window->KeyUp += + ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &App::OnKeyUp); - char* args[] = {"-path", "game", NULL}; - Main::setup("winrt", 2, args, false); + unsigned int argc; + char** argv = get_command_line(&argc); + + Main::setup("winrt", argc, argv, false); // The CoreWindow has been created, so EGL can be initialized. ContextEGL* context = memnew(ContextEGL(window)); @@ -217,7 +266,7 @@ static int _get_finger(uint32_t p_touch_id) { return p_touch_id % 31; // for now }; -void App::pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed) { +void App::pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed, bool p_is_wheel) { Windows::UI::Input::PointerPoint ^point = args->CurrentPoint; Windows::Foundation::Point pos = _get_pixel_position(window, point->Position, os); @@ -236,7 +285,7 @@ void App::pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core last_touch_y[event.screen_touch.index] = pos.Y; os->input_event(event); - if (event.screen_touch.index != 0) + if (number_of_contacts > 1) return; }; // fallthrought of sorts @@ -251,6 +300,14 @@ void App::pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core event.mouse_button.global_x = pos.X; event.mouse_button.global_y = pos.Y; + if (p_is_wheel) { + if (point->Properties->MouseWheelDelta > 0) { + event.mouse_button.button_index = point->Properties->IsHorizontalMouseWheel ? BUTTON_WHEEL_RIGHT : BUTTON_WHEEL_UP; + } else if (point->Properties->MouseWheelDelta < 0) { + event.mouse_button.button_index = point->Properties->IsHorizontalMouseWheel ? BUTTON_WHEEL_LEFT : BUTTON_WHEEL_DOWN; + } + } + last_touch_x[31] = pos.X; last_touch_y[31] = pos.Y; @@ -260,21 +317,56 @@ void App::pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core void App::OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) { + number_of_contacts++; pointer_event(sender, args, true); }; void App::OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) { + number_of_contacts--; pointer_event(sender, args, false); }; +void App::OnPointerWheelChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) { + + pointer_event(sender, args, true, true); +} + +void App::OnMouseModeChanged(Windows::System::Threading::Core::SignalNotifier^ signalNotifier, bool timedOut) { + + OS::MouseMode mode = os->get_mouse_mode(); + SignalNotifier^ notifier = mouseChangedNotifier; + + window->Dispatcher->RunAsync( + CoreDispatcherPriority::High, + ref new DispatchedHandler( + [mode, notifier, this]() { + if (mode == OS::MOUSE_MODE_CAPTURED) { + + this->MouseMovedToken = MouseDevice::GetForCurrentView()->MouseMoved += + ref new TypedEventHandler<MouseDevice^, MouseEventArgs^>(this, &App::OnMouseMoved); + + } else { + + MouseDevice::GetForCurrentView()->MouseMoved -= MouseMovedToken; + + } + + notifier->Enable(); + })); + + ResetEvent(os->mouse_mode_changed); + + +} + void App::OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) { Windows::UI::Input::PointerPoint ^point = args->CurrentPoint; Windows::Foundation::Point pos = _get_pixel_position(window, point->Position, os); - if (_is_touch(point)) { + if (point->IsInContact && _is_touch(point)) { InputEvent event; event.type = InputEvent::SCREEN_DRAG; @@ -286,11 +378,15 @@ void App::OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Cor event.screen_drag.relative_y = event.screen_drag.y - last_touch_y[event.screen_drag.index]; os->input_event(event); - if (event.screen_drag.index != 0) + if (number_of_contacts > 1) return; }; // fallthrought of sorts + // In case the mouse grabbed, MouseMoved will handle this + if (os->get_mouse_mode() == OS::MouseMode::MOUSE_MODE_CAPTURED) + return; + InputEvent event; event.type = InputEvent::MOUSE_MOTION; event.device = 0; @@ -301,16 +397,90 @@ void App::OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Cor event.mouse_motion.relative_x = pos.X - last_touch_x[31]; event.mouse_motion.relative_y = pos.Y - last_touch_y[31]; + last_mouse_pos = pos; + os->input_event(event); -}; +} + +void App::OnMouseMoved(MouseDevice ^ mouse_device, MouseEventArgs ^ args) { + + // In case the mouse isn't grabbed, PointerMoved will handle this + if (os->get_mouse_mode() != OS::MouseMode::MOUSE_MODE_CAPTURED) + return; + + Windows::Foundation::Point pos; + pos.X = last_mouse_pos.X + args->MouseDelta.X; + pos.Y = last_mouse_pos.Y + args->MouseDelta.Y; + + InputEvent event; + event.type = InputEvent::MOUSE_MOTION; + event.device = 0; + event.mouse_motion.x = pos.X; + event.mouse_motion.y = pos.Y; + event.mouse_motion.global_x = pos.X; + event.mouse_motion.global_y = pos.Y; + event.mouse_motion.relative_x = args->MouseDelta.X; + event.mouse_motion.relative_y = args->MouseDelta.Y; + + last_mouse_pos = pos; + + os->input_event(event); +} + +void App::key_event(Windows::UI::Core::CoreWindow^ sender, bool p_pressed, Windows::UI::Core::KeyEventArgs^ key_args, Windows::UI::Core::CharacterReceivedEventArgs^ char_args) +{ + + OSWinrt::KeyEvent ke; + + InputModifierState mod; + mod.meta = false; + mod.command = false; + mod.control = sender->GetAsyncKeyState(VirtualKey::Control) == CoreVirtualKeyStates::Down; + mod.alt = sender->GetAsyncKeyState(VirtualKey::Menu) == CoreVirtualKeyStates::Down; + mod.shift = sender->GetAsyncKeyState(VirtualKey::Shift) == CoreVirtualKeyStates::Down; + ke.mod_state = mod; + + ke.pressed = p_pressed; + + if (key_args != nullptr) { + + ke.type = OSWinrt::KeyEvent::MessageType::KEY_EVENT_MESSAGE; + ke.unicode = 0; + ke.scancode = KeyMappingWindows::get_keysym((unsigned int)key_args->VirtualKey); + ke.echo = (!p_pressed && !key_args->KeyStatus.IsKeyReleased) || (p_pressed && key_args->KeyStatus.WasKeyDown); + + } else { + + ke.type = OSWinrt::KeyEvent::MessageType::CHAR_EVENT_MESSAGE; + ke.unicode = char_args->KeyCode; + ke.scancode = 0; + ke.echo = (!p_pressed && !char_args->KeyStatus.IsKeyReleased) || (p_pressed && char_args->KeyStatus.WasKeyDown); + } + + os->queue_key_event(ke); + +} +void App::OnKeyDown(CoreWindow^ sender, KeyEventArgs^ args) +{ + key_event(sender, true, args); +} + +void App::OnKeyUp(CoreWindow^ sender, KeyEventArgs^ args) +{ + key_event(sender, false, args); +} + +void App::OnCharacterReceived(CoreWindow^ sender, CharacterReceivedEventArgs^ args) +{ + key_event(sender, true, nullptr, args); +} // Initializes scene resources void App::Load(Platform::String^ entryPoint) { - //char* args[] = {"-test", "render", NULL}; - //Main::setup("winrt", 2, args); + } // This method is called after the window becomes active. @@ -383,3 +553,95 @@ void App::UpdateWindowSize(Size size) vm.resizable = false; os->set_video_mode(vm); } + +char** App::get_command_line(unsigned int* out_argc) { + + static char* fail_cl[] = { "-path", "game", NULL }; + *out_argc = 2; + + FILE* f = _wfopen(L"__cl__.cl", L"rb"); + + if (f == NULL) { + + wprintf(L"Couldn't open command line file."); + return fail_cl; + } + +#define READ_LE_4(v) ((int)(##v[3] & 0xFF) << 24) | ((int)(##v[2] & 0xFF) << 16) | ((int)(##v[1] & 0xFF) << 8) | ((int)(##v[0] & 0xFF)) +#define CMD_MAX_LEN 65535 + + uint8_t len[4]; + int r = fread(len, sizeof(uint8_t), 4, f); + + Platform::Collections::Vector<Platform::String^> cl; + + if (r < 4) { + fclose(f); + wprintf(L"Wrong cmdline length."); + return(fail_cl); + } + + int argc = READ_LE_4(len); + + for (int i = 0; i < argc; i++) { + + r = fread(len, sizeof(uint8_t), 4, f); + + if (r < 4) { + fclose(f); + wprintf(L"Wrong cmdline param length."); + return(fail_cl); + } + + int strlen = READ_LE_4(len); + + if (strlen > CMD_MAX_LEN) { + fclose(f); + wprintf(L"Wrong command length."); + return(fail_cl); + } + + char* arg = new char[strlen + 1]; + r = fread(arg, sizeof(char), strlen, f); + arg[strlen] = '\0'; + + if (r == strlen) { + + int warg_size = MultiByteToWideChar(CP_UTF8, 0, arg, -1, NULL, 0); + wchar_t* warg = new wchar_t[warg_size]; + + MultiByteToWideChar(CP_UTF8, 0, arg, -1, warg, warg_size); + + cl.Append(ref new Platform::String(warg, warg_size)); + + } else { + + delete[] arg; + fclose(f); + wprintf(L"Error reading command."); + return(fail_cl); + } + } + +#undef READ_LE_4 +#undef CMD_MAX_LEN + + fclose(f); + + char** ret = new char*[cl.Size + 1]; + + for (int i = 0; i < cl.Size; i++) { + + int arg_size = WideCharToMultiByte(CP_UTF8, 0, cl.GetAt(i)->Data(), -1, NULL, 0, NULL, NULL); + char* arg = new char[arg_size]; + + WideCharToMultiByte(CP_UTF8, 0, cl.GetAt(i)->Data(), -1, arg, arg_size, NULL, NULL); + + ret[i] = arg; + + } + ret[cl.Size] = NULL; + *out_argc = cl.Size; + + return ret; +} diff --git a/platform/winrt/app.h b/platform/winrt/app.h index 25b0d524ae..652ec86e1f 100644 --- a/platform/winrt/app.h +++ b/platform/winrt/app.h @@ -1,4 +1,32 @@ -#pragma once +/*************************************************************************/ +/* app.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. */ +/*************************************************************************/ +#pragma once #include <string> @@ -7,7 +35,7 @@ #include "os_winrt.h" #include "GLES2/gl2.h" -namespace $ext_safeprojectname$ +namespace GodotWinRT { ref class App sealed : public Windows::ApplicationModel::Core::IFrameworkView { @@ -21,6 +49,11 @@ namespace $ext_safeprojectname$ virtual void Run(); virtual void Uninitialize(); + property Windows::Foundation::EventRegistrationToken MouseMovedToken { + Windows::Foundation::EventRegistrationToken get() { return this->mouseMovedToken; } + void set(Windows::Foundation::EventRegistrationToken p_token) { this->mouseMovedToken = p_token; } + }; + private: void RecreateRenderer(); @@ -32,16 +65,28 @@ namespace $ext_safeprojectname$ void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args); void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args); - void pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed); + void pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed, bool p_is_wheel = false); void OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args); void OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args); void OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args); + void OnMouseMoved(Windows::Devices::Input::MouseDevice^ mouse_device, Windows::Devices::Input::MouseEventArgs^ args); + void OnPointerWheelChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args); + + Windows::System::Threading::Core::SignalNotifier^ mouseChangedNotifier; + Windows::Foundation::EventRegistrationToken mouseMovedToken; + void OnMouseModeChanged(Windows::System::Threading::Core::SignalNotifier^ signalNotifier, bool timedOut); + void key_event(Windows::UI::Core::CoreWindow^ sender, bool p_pressed, Windows::UI::Core::KeyEventArgs^ key_args = nullptr, Windows::UI::Core::CharacterReceivedEventArgs^ char_args = nullptr); + void OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args); + void OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args); + void OnCharacterReceived(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CharacterReceivedEventArgs^ args); void UpdateWindowSize(Windows::Foundation::Size size); void InitializeEGL(Windows::UI::Core::CoreWindow^ window); void CleanupEGL(); + char** get_command_line(unsigned int* out_argc); + bool mWindowClosed; bool mWindowVisible; GLsizei mWindowWidth; @@ -56,6 +101,8 @@ namespace $ext_safeprojectname$ int last_touch_x[32]; // 20 fingers, index 31 reserved for the mouse int last_touch_y[32]; + int number_of_contacts; + Windows::Foundation::Point last_mouse_pos; }; } diff --git a/platform/winrt/audio_driver_winrt.cpp b/platform/winrt/audio_driver_winrt.cpp new file mode 100644 index 0000000000..ff46244ac3 --- /dev/null +++ b/platform/winrt/audio_driver_winrt.cpp @@ -0,0 +1,244 @@ +/*************************************************************************/ +/* audio_driver_winrt.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 "audio_driver_winrt.h" + +#include "globals.h" +#include "os/os.h" + +using namespace Windows::Media; +using namespace Windows::Media::Core; +using namespace Windows::Media::MediaProperties; +using namespace Windows::Media::Editing; +using namespace Windows::Foundation; + +const char * AudioDriverWinRT::get_name() const +{ + return "WinRT"; +} + +Error AudioDriverWinRT::init() { + + active = false; + thread_exited = false; + exit_thread = false; + pcm_open = false; + samples_in = NULL; + + + mix_rate = 48000; + output_format = OUTPUT_STEREO; + channels = 2; + + int latency = GLOBAL_DEF("audio/output_latency", 25); + buffer_size = nearest_power_of_2(latency * mix_rate / 1000); + + samples_in = memnew_arr(int32_t, buffer_size*channels); + for (int i = 0; i < AUDIO_BUFFERS; i++) { + samples_out[i] = memnew_arr(int16_t, buffer_size*channels); + xaudio_buffer[i].AudioBytes = buffer_size * channels * sizeof(int16_t); + xaudio_buffer[i].pAudioData = (const BYTE*)(samples_out[i]); + xaudio_buffer[i].Flags = 0; + } + + HRESULT hr; + hr = XAudio2Create(&xaudio, 0, XAUDIO2_DEFAULT_PROCESSOR); + if (hr != S_OK) { + ERR_EXPLAIN("Error creating XAudio2 engine."); + ERR_FAIL_V(ERR_UNAVAILABLE); + } + hr = xaudio->CreateMasteringVoice(&mastering_voice); + if (hr != S_OK) { + ERR_EXPLAIN("Error creating XAudio2 mastering voice."); + ERR_FAIL_V(ERR_UNAVAILABLE); + } + + wave_format.nChannels = channels; + wave_format.cbSize = 0; + wave_format.nSamplesPerSec = mix_rate; + wave_format.wFormatTag = WAVE_FORMAT_PCM; + wave_format.wBitsPerSample = 16; + wave_format.nBlockAlign = channels * wave_format.wBitsPerSample >> 3; + wave_format.nAvgBytesPerSec = mix_rate * wave_format.nBlockAlign; + + voice_callback = memnew(XAudio2DriverVoiceCallback); + + hr = xaudio->CreateSourceVoice(&source_voice, &wave_format, 0, XAUDIO2_MAX_FREQ_RATIO, voice_callback); + if (hr != S_OK) { + ERR_EXPLAIN("Error creating XAudio2 source voice. " + itos(hr)); + ERR_FAIL_V(ERR_UNAVAILABLE); + } + + mutex = Mutex::create(); + thread = Thread::create(AudioDriverWinRT::thread_func, this); + + return OK; +}; + +void AudioDriverWinRT::thread_func(void* p_udata) { + + AudioDriverWinRT* ad = (AudioDriverWinRT*)p_udata; + + uint64_t usdelay = (ad->buffer_size / float(ad->mix_rate)) * 1000000; + + while (!ad->exit_thread) { + + + if (!ad->active) { + + for (int i = 0; i < AUDIO_BUFFERS; i++) { + ad->xaudio_buffer[i].Flags = XAUDIO2_END_OF_STREAM; + } + + } else { + + ad->lock(); + + ad->audio_server_process(ad->buffer_size, ad->samples_in); + + ad->unlock(); + + for (unsigned int i = 0;i < ad->buffer_size*ad->channels;i++) { + + ad->samples_out[ad->current_buffer][i] = ad->samples_in[i] >> 16; + } + + ad->xaudio_buffer[ad->current_buffer].Flags = 0; + ad->xaudio_buffer[ad->current_buffer].AudioBytes = ad->buffer_size * ad->channels * sizeof(int16_t); + ad->xaudio_buffer[ad->current_buffer].pAudioData = (const BYTE*)(ad->samples_out[ad->current_buffer]); + ad->xaudio_buffer[ad->current_buffer].PlayBegin = 0; + ad->source_voice->SubmitSourceBuffer(&(ad->xaudio_buffer[ad->current_buffer])); + + ad->current_buffer = (ad->current_buffer + 1) % AUDIO_BUFFERS; + + XAUDIO2_VOICE_STATE state; + while (ad->source_voice->GetState(&state), state.BuffersQueued > AUDIO_BUFFERS - 1) + { + WaitForSingleObject(ad->voice_callback->buffer_end_event, INFINITE); + } + } + + }; + + ad->thread_exited = true; + +}; + +void AudioDriverWinRT::start() { + + active = true; + HRESULT hr = source_voice->Start(0); + if (hr != S_OK) { + ERR_EXPLAIN("XAudio2 start error " + itos(hr)); + ERR_FAIL(); + } +}; + +int AudioDriverWinRT::get_mix_rate() const { + + return mix_rate; +}; + +AudioDriverSW::OutputFormat AudioDriverWinRT::get_output_format() const { + + return output_format; +}; + +float AudioDriverWinRT::get_latency() { + + XAUDIO2_PERFORMANCE_DATA perf_data; + xaudio->GetPerformanceData(&perf_data); + if (perf_data.CurrentLatencyInSamples) { + return (float)(perf_data.CurrentLatencyInSamples / ((float)mix_rate)); + } else { + return 0; + } +} + +void AudioDriverWinRT::lock() { + + if (!thread || !mutex) + return; + mutex->lock(); +}; +void AudioDriverWinRT::unlock() { + + if (!thread || !mutex) + return; + mutex->unlock(); +}; + +void AudioDriverWinRT::finish() { + + if (!thread) + return; + + exit_thread = true; + Thread::wait_to_finish(thread); + + if (source_voice) { + source_voice->Stop(0); + memdelete(source_voice); + } + + if (samples_in) { + memdelete_arr(samples_in); + }; + if (samples_out[0]) { + for (int i = 0; i < AUDIO_BUFFERS; i++) { + memdelete_arr(samples_out[i]); + } + }; + + memdelete(voice_callback); + memdelete(mastering_voice); + + memdelete(thread); + if (mutex) + memdelete(mutex); + thread = NULL; +}; + +AudioDriverWinRT::AudioDriverWinRT() { + + mutex = NULL; + thread = NULL; + wave_format = { 0 }; + for (int i = 0; i < AUDIO_BUFFERS; i++) { + xaudio_buffer[i] = { 0 }; + samples_out[i] = 0; + } + current_buffer = 0; +}; + +AudioDriverWinRT::~AudioDriverWinRT() { + + +}; + + diff --git a/platform/winrt/audio_driver_winrt.h b/platform/winrt/audio_driver_winrt.h new file mode 100644 index 0000000000..d7a69994f8 --- /dev/null +++ b/platform/winrt/audio_driver_winrt.h @@ -0,0 +1,109 @@ +/*************************************************************************/ +/* audio_driver_winrt.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 AUDIO_DRIVER_WINRT_H +#define AUDIO_DRIVER_WINRT_H + +#include "servers/audio/audio_server_sw.h" + +#include "core/os/thread.h" +#include "core/os/mutex.h" + +#include <windows.h> +#include <mmsystem.h> +#include <mmreg.h> +#include <xaudio2.h> +#include <wrl/client.h> + +class AudioDriverWinRT : public AudioDriverSW { + + enum { + AUDIO_BUFFERS = 2 + }; + + struct XAudio2DriverVoiceCallback : public IXAudio2VoiceCallback { + + HANDLE buffer_end_event; + XAudio2DriverVoiceCallback() : buffer_end_event(CreateEvent(NULL, FALSE, FALSE, NULL)) {} + void STDMETHODCALLTYPE OnBufferEnd(void* pBufferContext) { /*print_line("buffer ended");*/ SetEvent(buffer_end_event); } + + //Unused methods are stubs + void STDMETHODCALLTYPE OnStreamEnd() { } + void STDMETHODCALLTYPE OnVoiceProcessingPassEnd() { } + void STDMETHODCALLTYPE OnVoiceProcessingPassStart(UINT32 SamplesRequired) { } + void STDMETHODCALLTYPE OnBufferStart(void * pBufferContext) { } + void STDMETHODCALLTYPE OnLoopEnd(void * pBufferContext) { } + void STDMETHODCALLTYPE OnVoiceError(void * pBufferContext, HRESULT Error) { } + + }; + + Thread* thread; + Mutex* mutex; + + int32_t* samples_in; + int16_t* samples_out[AUDIO_BUFFERS]; + + static void thread_func(void* p_udata); + int buffer_size; + + unsigned int mix_rate; + OutputFormat output_format; + + int channels; + + bool active; + bool thread_exited; + mutable bool exit_thread; + bool pcm_open; + + WAVEFORMATEX wave_format; + Microsoft::WRL::ComPtr<IXAudio2> xaudio; + int current_buffer; + IXAudio2MasteringVoice* mastering_voice; + XAUDIO2_BUFFER xaudio_buffer[AUDIO_BUFFERS]; + IXAudio2SourceVoice* source_voice; + XAudio2DriverVoiceCallback* voice_callback; + +public: + + const char* get_name() const; + + virtual Error init(); + virtual void start(); + virtual int get_mix_rate() const; + virtual OutputFormat get_output_format() const; + virtual float get_latency(); + virtual void lock(); + virtual void unlock(); + virtual void finish(); + + AudioDriverWinRT(); + ~AudioDriverWinRT(); +}; + +#endif diff --git a/platform/winrt/detect.py b/platform/winrt/detect.py index 86028d3af8..7f220736d7 100644 --- a/platform/winrt/detect.py +++ b/platform/winrt/detect.py @@ -1,9 +1,8 @@ - - import os import sys import string +import methods def is_active(): @@ -16,6 +15,10 @@ def can_build(): if (os.name=="nt"): #building natively on windows! if (os.getenv("VSINSTALLDIR")): + + if (os.getenv("ANGLE_SRC_PATH") == None): + return False + return True return False @@ -24,133 +27,139 @@ def get_opts(): def get_flags(): - return [] + return [ + ('tools', 'no'), + ('openssl', 'builtin'), + ] def configure(env): - env.Append(CPPPATH=['#platform/winrt', '#platform/winrt/include']) - arch = "" - - if os.getenv('PLATFORM') == "ARM": - - # compiler commandline - # debug: /Yu"pch.h" /MP /GS /analyze- /W3 /wd"4453" /wd"28204" /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Debug\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /Od /sdl /Fd"ARM\Debug\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /D "_DEBUG" /errorReport:prompt /WX- /Zc:forScope /RTC1 /ZW /Gd /Oy- /MDd /Fa"ARM\Debug\" /EHsc /nologo /Fo"ARM\Debug\" /Fp"ARM\Debug\App2.WindowsPhone.pch" - # release: /Yu"pch.h" /MP /GS /GL /analyze- /W3 /wd"4453" /wd"28204" /Gy /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Release\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /O2 /sdl /Fd"ARM\Release\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /ZW /Gd /Oy- /Oi /MD /Fa"ARM\Release\" /EHsc /nologo /Fo"ARM\Release\" /Fp"ARM\Release\App2.WindowsPhone.pch" - - # linker commandline - # debug: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /INCREMENTAL /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Debug\App2.WindowsPhone.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 - # release: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /LTCG /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /OPT:REF /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Release\App2.WindowsPhone.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 - - arch = "arm" + if(env["bits"] != "default"): + print "Error: bits argument is disabled for MSVC" + print ("Bits argument is not supported for MSVC compilation. Architecture depends on the Native/Cross Compile Tools Prompt/Developer Console (or Visual Studio settings)" + +" that is being used to run SCons. As a consequence, bits argument is disabled. Run scons again without bits argument (example: scons p=winrt) and SCons will attempt to detect what MSVC compiler" + +" will be executed and inform you.") + sys.exit() - env.Append(LINKFLAGS=['/INCREMENTAL:NO', '/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "WindowsPhoneCore.lib", "RuntimeObject.lib", "PhoneAppModelHost.lib", "/DEBUG", "/MACHINE:ARM", '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1']) - env.Append(LIBPATH=['#platform/winrt/ARM/lib']) + arch = "" + env['ENV'] = os.environ; - env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /analyze- /Zc:wchar_t /Zi /Gm- /Od /fp:precise /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /DWINDOWSPHONE_ENABLED /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /RTC1 /Gd /EHsc /nologo')) - env.Append(CXXFLAGS=string.split('/ZW')) + # ANGLE + angle_root = os.getenv("ANGLE_SRC_PATH") + env.Append(CPPPATH=[angle_root + '/include']) + jobs = str(env.GetOption("num_jobs")) + angle_build_cmd = "msbuild.exe " + angle_root + "/winrt/10/src/angle.sln /nologo /v:m /m:" + jobs + " /p:Configuration=Release /p:Platform=" - if (env["target"]=="release"): + if os.path.isfile(str(os.getenv("ANGLE_SRC_PATH")) + "/winrt/10/src/angle.sln"): + env["build_angle"] = True - env.Append(CCFLAGS=['/O2']) - env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS']) + if os.getenv('Platform') == "ARM": - elif (env["target"]=="test"): + print "Compiled program architecture will be an ARM executable. (forcing bits=32)." - env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) - env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) + arch="arm" + env["bits"]="32" + env.Append(LINKFLAGS=['/MACHINE:ARM']) + env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/arm']) - elif (env["target"]=="debug"): + angle_build_cmd += "ARM" - env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) - env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) - env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG']) + env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_ARM/lib']) - elif (env["target"]=="profile"): + else: - env.Append(CCFLAGS=['-g','-pg']) - env.Append(LINKFLAGS=['-pg']) + compiler_version_str = methods.detect_visual_c_compiler_version(env['ENV']) + if(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"): + env["bits"]="64" + print "Compiled program architecture will be a x64 executable (forcing bits=64)." + elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"): + env["bits"]="32" + print "Compiled program architecture will be a x86 executable. (forcing bits=32)." + else: + print "Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup." + env["bits"]="32" - env['ENV'] = os.environ; - # fix environment for windows phone 8.1 - env['ENV']['WINDOWSPHONEKITDIR'] = env['ENV']['WINDOWSPHONEKITDIR'].replace("8.0", "8.1") # wtf - env['ENV']['INCLUDE'] = env['ENV']['INCLUDE'].replace("8.0", "8.1") - env['ENV']['LIB'] = env['ENV']['LIB'].replace("8.0", "8.1") - env['ENV']['PATH'] = env['ENV']['PATH'].replace("8.0", "8.1") - env['ENV']['LIBPATH'] = env['ENV']['LIBPATH'].replace("8.0\\Windows Metadata", "8.1\\References\\CommonConfiguration\\Neutral") + if (env["bits"] == "32"): + arch = "x86" - else: + angle_build_cmd += "Win32" - arch = "x64" - env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "kernel32.lib", '/MACHINE:X64', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1']) + env.Append(CPPFLAGS=['/DPNG_ABORT=abort']) + env.Append(LINKFLAGS=['/MACHINE:X86']) + env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store']) + env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_Win32/lib']) - env.Append(LIBPATH=['#platform/winrt/x64/lib']) + else: + arch = "x64" + angle_build_cmd += "x64" - if (env["target"]=="release"): + env.Append(LINKFLAGS=['/MACHINE:X64']) + env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/amd64']) + env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_x64/lib']) - env.Append(CCFLAGS=['/O2']) - env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS']) - env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup']) + env.Append(CPPPATH=['#platform/winrt','#drivers/windows']) + env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', '/WINMD', '/APPCONTAINER', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1', '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"']) + env.Append(CPPFLAGS=['/D','__WRL_NO_DEFAULT_LIB__','/D','WIN32']) + env.Append(CPPFLAGS=['/FU', os.environ['VCINSTALLDIR'] + 'lib/store/references/platform.winmd']) + env.Append(CPPFLAGS=['/AI', os.environ['VCINSTALLDIR'] + 'lib/store/references']) - elif (env["target"]=="test"): + env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/references']) - env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) - env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) + if (env["target"]=="release"): - elif (env["target"]=="debug"): + env.Append(CPPFLAGS=['/O2', '/GL']) + env.Append(CPPFLAGS=['/MD']) + env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS', '/LTCG']) - env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) - env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) - env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG']) + elif (env["target"]=="release_debug"): - elif (env["target"]=="profile"): + env.Append(CCFLAGS=['/O2','/Zi','/DDEBUG_ENABLED']) + env.Append(CPPFLAGS=['/MD']) + env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) - env.Append(CCFLAGS=['-g','-pg']) - env.Append(LINKFLAGS=['-pg']) + elif (env["target"]=="debug"): + env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED']) + env.Append(CPPFLAGS=['/MDd']) + env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) + env.Append(LINKFLAGS=['/DEBUG']) - env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /Zc:wchar_t /Gm- /Od /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /EHsc /nologo')) - env.Append(CXXFLAGS=string.split('/ZW')) - env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR']+'\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR']+'\\References\\CommonConfiguration\\Neutral']) - env.Append(CCFLAGS=['/DWINAPI_FAMILY=WINAPI_FAMILY_APP', '/D_WIN32_WINNT=0x0603', '/DNTDDI_VERSION=0x06030000']) - env['ENV'] = os.environ; + env.Append(CCFLAGS=string.split('/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo')) + env.Append(CXXFLAGS=string.split('/ZW /FS')) + env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR']+'\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR']+'\\References\\CommonConfiguration\\Neutral']) env["PROGSUFFIX"]="."+arch+env["PROGSUFFIX"] env["OBJSUFFIX"]="."+arch+env["OBJSUFFIX"] env["LIBSUFFIX"]="."+arch+env["LIBSUFFIX"] - - #env.Append(CCFLAGS=['/Gd','/GR','/nologo', '/EHsc']) - #env.Append(CXXFLAGS=['/TP', '/ZW']) - #env.Append(CPPFLAGS=['/DMSVC', '/GR', ]) - ##env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"]) env.Append(CCFLAGS=['/DWINRT_ENABLED']) env.Append(CCFLAGS=['/DWINDOWS_ENABLED']) - env.Append(CCFLAGS=['/DRTAUDIO_ENABLED']) - #env.Append(CCFLAGS=['/DWIN32']) env.Append(CCFLAGS=['/DTYPED_METHOD_BIND']) - env.Append(CCFLAGS=['/DGLES2_ENABLED']) - #env.Append(CCFLAGS=['/DGLES1_ENABLED']) + env.Append(CCFLAGS=['/DGLES2_ENABLED','/DGL_GLEXT_PROTOTYPES','/DEGL_EGLEXT_PROTOTYPES','/DANGLE_ENABLED']) - LIBS=[ - #'winmm', + LIBS = [ + 'xaudio2', + 'WindowsApp', + 'mincore', + 'libANGLE', 'libEGL', 'libGLESv2', - 'libANGLE', - #'kernel32','ole32','user32', 'advapi32' ] env.Append(LINKFLAGS=[p+".lib" for p in LIBS]) - import methods + # Incremental linking fix + env['BUILDERS']['ProgramOriginal'] = env['BUILDERS']['Program'] + env['BUILDERS']['Program'] = methods.precious_program + + env.Append( BUILDERS = { 'ANGLE' : env.Builder(action = angle_build_cmd) } ) + env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) - - -#/c/Program Files (x86)/Windows Phone Kits/8.1/lib/ARM/WindowsPhoneCore.lib diff --git a/platform/winrt/export/export.cpp b/platform/winrt/export/export.cpp new file mode 100644 index 0000000000..eca9f09de6 --- /dev/null +++ b/platform/winrt/export/export.cpp @@ -0,0 +1,2391 @@ +/*************************************************************************/ +/* export.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. */ +/*************************************************************************/ + +/************************************************************************* + * The code for signing the package was ported from fb-util-for-appx + * available at https://github.com/facebook/fb-util-for-appx + * and distributed also under the following license: + +BSD License + +For fb-util-for-appx software + +Copyright (c) 2016, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*************************************************************************/ + + +#include "version.h" +#include "export.h" +#include "object.h" +#include "tools/editor/editor_import_export.h" +#include "tools/editor/editor_node.h" +#include "platform/winrt/logo.h" +#include "os/file_access.h" +#include "io/zip.h" +#include "io/unzip.h" +#include "io/zip_io.h" +#include "io/sha256.h" +#include "io/base64.h" +#include "bind/core_bind.h" +#include "globals.h" +#include "io/marshalls.h" + +#include <zlib.h> + +// Capabilities +static const char* uwp_capabilities[] = { + "allJoyn", + "codeGeneration", + "internetClient", + "internetClientServer", + "privateNetworkClientServer", + NULL +}; +static const char* uwp_uap_capabilities[] = { + "appointments", + "blockedChatMessages", + "chat", + "contacts", + "enterpriseAuthentication", + "musicLibrary", + "objects3D", + "picturesLibrary", + "phoneCall", + "removableStorage", + "sharedUserCertificates", + "userAccountInformation", + "videosLibrary", + "voipCall", + NULL +}; +static const char* uwp_device_capabilites[] = { + "bluetooth", + "location", + "microphone", + "proximity", + "webcam", + NULL +}; + +#ifdef OPENSSL_ENABLED +#include <openssl/bio.h> +#include <openssl/asn1.h> +#include <openssl/pkcs7.h> +#include <openssl/pkcs12.h> +#include <openssl/err.h> +#include <openssl/asn1t.h> +#include <openssl/x509.h> +#include <openssl/ossl_typ.h> + +namespace asn1 { + // https://msdn.microsoft.com/en-us/gg463180.aspx + + struct SPCStatementType { + ASN1_OBJECT *type; + }; + DECLARE_ASN1_FUNCTIONS(SPCStatementType) + + struct SPCSpOpusInfo { + ASN1_TYPE *programName; + ASN1_TYPE *moreInfo; + }; + DECLARE_ASN1_FUNCTIONS(SPCSpOpusInfo) + + struct DigestInfo { + X509_ALGOR *digestAlgorithm; + ASN1_OCTET_STRING *digest; + }; + DECLARE_ASN1_FUNCTIONS(DigestInfo) + + struct SPCAttributeTypeAndOptionalValue { + ASN1_OBJECT *type; + ASN1_TYPE *value; // SPCInfoValue + }; + DECLARE_ASN1_FUNCTIONS(SPCAttributeTypeAndOptionalValue) + + // Undocumented. + struct SPCInfoValue { + ASN1_INTEGER *i1; + ASN1_OCTET_STRING *s1; + ASN1_INTEGER *i2; + ASN1_INTEGER *i3; + ASN1_INTEGER *i4; + ASN1_INTEGER *i5; + ASN1_INTEGER *i6; + }; + DECLARE_ASN1_FUNCTIONS(SPCInfoValue) + + struct SPCIndirectDataContent { + SPCAttributeTypeAndOptionalValue *data; + DigestInfo *messageDigest; + }; + DECLARE_ASN1_FUNCTIONS(SPCIndirectDataContent) + + IMPLEMENT_ASN1_FUNCTIONS(SPCIndirectDataContent) + ASN1_SEQUENCE(SPCIndirectDataContent) = { + ASN1_SIMPLE(SPCIndirectDataContent, data, + SPCAttributeTypeAndOptionalValue), + ASN1_SIMPLE(SPCIndirectDataContent, messageDigest, DigestInfo), + } ASN1_SEQUENCE_END(SPCIndirectDataContent) + + IMPLEMENT_ASN1_FUNCTIONS(SPCAttributeTypeAndOptionalValue) + ASN1_SEQUENCE(SPCAttributeTypeAndOptionalValue) = { + ASN1_SIMPLE(SPCAttributeTypeAndOptionalValue, type, + ASN1_OBJECT), + ASN1_OPT(SPCAttributeTypeAndOptionalValue, value, ASN1_ANY), + } ASN1_SEQUENCE_END(SPCAttributeTypeAndOptionalValue) + + IMPLEMENT_ASN1_FUNCTIONS(SPCInfoValue) + ASN1_SEQUENCE(SPCInfoValue) = { + ASN1_SIMPLE(SPCInfoValue, i1, ASN1_INTEGER), + ASN1_SIMPLE(SPCInfoValue, s1, ASN1_OCTET_STRING), + ASN1_SIMPLE(SPCInfoValue, i2, ASN1_INTEGER), + ASN1_SIMPLE(SPCInfoValue, i3, ASN1_INTEGER), + ASN1_SIMPLE(SPCInfoValue, i4, ASN1_INTEGER), + ASN1_SIMPLE(SPCInfoValue, i5, ASN1_INTEGER), + ASN1_SIMPLE(SPCInfoValue, i6, ASN1_INTEGER), + } ASN1_SEQUENCE_END(SPCInfoValue) + + IMPLEMENT_ASN1_FUNCTIONS(DigestInfo) + ASN1_SEQUENCE(DigestInfo) = { + ASN1_SIMPLE(DigestInfo, digestAlgorithm, X509_ALGOR), + ASN1_SIMPLE(DigestInfo, digest, ASN1_OCTET_STRING), + } ASN1_SEQUENCE_END(DigestInfo) + + ASN1_SEQUENCE(SPCSpOpusInfo) = { + ASN1_OPT(SPCSpOpusInfo, programName, ASN1_ANY), + ASN1_OPT(SPCSpOpusInfo, moreInfo, ASN1_ANY), + } ASN1_SEQUENCE_END(SPCSpOpusInfo) + IMPLEMENT_ASN1_FUNCTIONS(SPCSpOpusInfo) + + ASN1_SEQUENCE(SPCStatementType) = { + ASN1_SIMPLE(SPCStatementType, type, ASN1_OBJECT), + } ASN1_SEQUENCE_END(SPCStatementType) + IMPLEMENT_ASN1_FUNCTIONS(SPCStatementType) +} + +class EncodedASN1 { + + uint8_t* i_data; + size_t i_size; + + EncodedASN1(uint8_t** p_data, size_t p_size) { + + i_data = *p_data; + i_size = p_size; + } + +public: + + template <typename T, int(*TEncode)(T *, uint8_t **)> + static EncodedASN1 FromItem(T *item) { + uint8_t *dataRaw = NULL; + int size = TEncode(item, &dataRaw); + + return EncodedASN1(&dataRaw, size); + } + + const uint8_t *data() const { + return i_data; + } + + size_t size() const { + return i_size; + } + + // Assumes the encoded ASN.1 represents a SEQUENCE and puts it into + // an ASN1_STRING. + // + // The returned object holds a copy of this object's data. + ASN1_STRING* ToSequenceString() { + ASN1_STRING* string = ASN1_STRING_new(); + if (!string) { + return NULL; + } + if (!ASN1_STRING_set(string, i_data, i_size)) { + return NULL; + } + return string; + } + + // Assumes the encoded ASN.1 represents a SEQUENCE and puts it into + // an ASN1_TYPE. + // + // The returned object holds a copy of this object's data. + ASN1_TYPE* ToSequenceType() { + ASN1_STRING* string = ToSequenceString(); + ASN1_TYPE* type = ASN1_TYPE_new(); + if (!type) { + return NULL; + } + type->type = V_ASN1_SEQUENCE; + type->value.sequence = string; + return type; + } + +}; + +#endif // OPENSSL_ENABLED + +class AppxPackager { + + enum { + FILE_HEADER_MAGIC = 0x04034b50, + DATA_DESCRIPTOR_MAGIC = 0x08074b50, + CENTRAL_DIR_MAGIC = 0x02014b50, + END_OF_CENTRAL_DIR_MAGIC = 0x06054b50, + ZIP64_END_OF_CENTRAL_DIR_MAGIC = 0x06064b50, + ZIP64_END_DIR_LOCATOR_MAGIC = 0x07064b50, + P7X_SIGNATURE = 0x58434b50, + ZIP64_HEADER_ID = 0x0001, + ZIP_VERSION = 20, + ZIP_ARCHIVE_VERSION = 45, + GENERAL_PURPOSE = 0x00, + BASE_FILE_HEADER_SIZE = 30, + DATA_DESCRIPTOR_SIZE = 24, + BASE_CENTRAL_DIR_SIZE = 46, + EXTRA_FIELD_LENGTH = 28, + ZIP64_HEADER_SIZE = 24, + ZIP64_END_OF_CENTRAL_DIR_SIZE = (56 - 12), + END_OF_CENTRAL_DIR_SIZE = 42, + BLOCK_SIZE = 65536, + }; + + struct BlockHash { + + String base64_hash; + size_t compressed_size; + }; + + struct FileMeta { + + String name; + int lfh_size; + bool compressed; + size_t compressed_size; + size_t uncompressed_size; + Vector<BlockHash> hashes; + uLong file_crc32; + ZPOS64_T zip_offset; + }; + + String progress_task; + FileAccess *package; + String tmp_blockmap_file_path; + String tmp_content_types_file_path; + + Set<String> mime_types; + + Vector<FileMeta> file_metadata; + + ZPOS64_T central_dir_offset; + ZPOS64_T end_of_central_dir_offset; + Vector<uint8_t> central_dir_data; + + String hash_block(uint8_t* p_block_data, size_t p_block_len); + + void make_block_map(); + void make_content_types(); + + + _FORCE_INLINE_ unsigned int buf_put_int16(uint16_t p_val, uint8_t * p_buf) { + for (int i = 0; i < 2; i++) { + *p_buf++ = (p_val >> (i * 8)) & 0xFF; + } + return 2; + } + + _FORCE_INLINE_ unsigned int buf_put_int32(uint32_t p_val, uint8_t * p_buf) { + for (int i = 0; i < 4; i++) { + *p_buf++ = (p_val >> (i * 8)) & 0xFF; + } + return 4; + } + + _FORCE_INLINE_ unsigned int buf_put_int64(uint64_t p_val, uint8_t * p_buf) { + for (int i = 0; i < 8; i++) { + *p_buf++ = (p_val >> (i * 8)) & 0xFF; + } + return 8; + } + + _FORCE_INLINE_ unsigned int buf_put_string(String p_val, uint8_t * p_buf) { + for (int i = 0; i < p_val.length(); i++) { + *p_buf++ = p_val.utf8().get(i); + } + return p_val.length(); + } + + Vector<uint8_t> make_file_header(FileMeta p_file_meta); + void store_central_dir_header(const FileMeta p_file, bool p_do_hash = true); + Vector<uint8_t> make_end_of_central_record(); + + String content_type(String p_extension); + +#ifdef OPENSSL_ENABLED + + // Signing methods and structs: + + String certificate_path; + String certificate_pass; + bool sign_package; + + struct CertFile { + + EVP_PKEY* private_key; + X509* certificate; + }; + + SHA256_CTX axpc_context; // SHA256 context for ZIP file entries + SHA256_CTX axcd_context; // SHA256 context for ZIP directory entries + + struct AppxDigests { + + uint8_t axpc[SHA256_DIGEST_LENGTH]; // ZIP file entries + uint8_t axcd[SHA256_DIGEST_LENGTH]; // ZIP directory entry + uint8_t axct[SHA256_DIGEST_LENGTH]; // Content types XML + uint8_t axbm[SHA256_DIGEST_LENGTH]; // Block map XML + uint8_t axci[SHA256_DIGEST_LENGTH]; // Code Integrity file (optional) + }; + + CertFile cert_file; + AppxDigests digests; + + void MakeSPCInfoValue(asn1::SPCInfoValue &info); + Error MakeIndirectDataContent(asn1::SPCIndirectDataContent &idc); + Error add_attributes(PKCS7_SIGNER_INFO *signerInfo); + void make_digests(); + void write_digest(Vector<uint8_t> &p_out_buffer); + + Error openssl_error(unsigned long p_err); + Error read_cert_file(const String &p_path, const String &p_password, CertFile* p_out_cf); + Error sign(const CertFile &p_cert, const AppxDigests &digests, PKCS7* p_out_signature); + +#endif // OPENSSL_ENABLED + +public: + + enum SignOption { + + SIGN, + DONT_SIGN, + }; + + void set_progress_task(String p_task) { progress_task = p_task; } + void init(FileAccess* p_fa, SignOption p_sign, String &p_certificate_path, String &p_certificate_password); + void add_file(String p_file_name, const uint8_t* p_buffer, size_t p_len, int p_file_no, int p_total_files, bool p_compress = false); + void finish(); + + AppxPackager(); + ~AppxPackager(); +}; + +class EditorExportPlatformWinrt : public EditorExportPlatform { + + OBJ_TYPE(EditorExportPlatformWinrt, EditorExportPlatform); + + Ref<ImageTexture> logo; + + enum Platform { + ARM, + X86, + X64 + } arch; + + bool is_debug; + + String custom_release_package; + String custom_debug_package; + + String cmdline; + + String display_name; + String short_name; + String unique_name; + String description; + String publisher; + String publisher_display_name; + + String product_guid; + String publisher_guid; + + int version_major; + int version_minor; + int version_build; + int version_revision; + + bool orientation_landscape; + bool orientation_portrait; + bool orientation_landscape_flipped; + bool orientation_portrait_flipped; + + String background_color; + Ref<ImageTexture> store_logo; + Ref<ImageTexture> square44; + Ref<ImageTexture> square71; + Ref<ImageTexture> square150; + Ref<ImageTexture> square310; + Ref<ImageTexture> wide310; + Ref<ImageTexture> splash; + + bool name_on_square150; + bool name_on_square310; + bool name_on_wide; + + Set<String> capabilities; + Set<String> uap_capabilities; + Set<String> device_capabilities; + + bool sign_package; + String certificate_path; + String certificate_pass; + + _FORCE_INLINE_ bool array_has(const char** p_array, const char* p_value) const { + while (*p_array) { + if (String(*p_array) == String(p_value)) return true; + p_array++; + } + return false; + } + + bool _valid_resource_name(const String &p_name) const; + bool _valid_guid(const String &p_guid) const; + bool _valid_bgcolor(const String &p_color) const; + bool _valid_image(const Ref<ImageTexture> p_image, int p_width, int p_height) const; + + Vector<uint8_t> _fix_manifest(const Vector<uint8_t> &p_template, bool p_give_internet) const; + Vector<uint8_t> _get_image_data(const String &p_path); + + static Error save_appx_file(void *p_userdata, const String& p_path, const Vector<uint8_t>& p_data, int p_file, int p_total); + static bool _should_compress_asset(const String& p_path, const Vector<uint8_t>& p_data); + +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 String get_name() const { return "Windows Universal"; } + virtual ImageCompression get_image_compression() const { return IMAGE_COMPRESSION_ETC1; } + virtual Ref<Texture> get_logo() const { return logo; } + + virtual bool can_export(String *r_error = NULL) const; + virtual String get_binary_extension() const { return "appx"; } + + virtual Error export_project(const String& p_path, bool p_debug, int p_flags = 0); + + EditorExportPlatformWinrt(); + ~EditorExportPlatformWinrt(); +}; + + +/////////////////////////////////////////////////////////////////////////// + +String AppxPackager::hash_block(uint8_t * p_block_data, size_t p_block_len) { + + char hash[32]; + char base64[45]; + + sha256_context ctx; + sha256_init(&ctx); + sha256_hash(&ctx, p_block_data, p_block_len); + sha256_done(&ctx, (uint8_t*)hash); + + base64_encode(base64, hash, 32); + base64[44] = '\0'; + + return String(base64); +} + +void AppxPackager::make_block_map() { + + FileAccess* tmp_file = FileAccess::open(tmp_blockmap_file_path, FileAccess::WRITE); + + tmp_file->store_string("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"); + tmp_file->store_string("<BlockMap xmlns=\"http://schemas.microsoft.com/appx/2010/blockmap\" HashMethod=\"http://www.w3.org/2001/04/xmlenc#sha256\">"); + + for (int i = 0; i < file_metadata.size(); i++) { + + FileMeta file = file_metadata[i]; + + tmp_file->store_string( + "<File Name=\"" + file.name.replace("/", "\\") + + "\" Size=\"" + itos(file.uncompressed_size) + + "\" LfhSize=\"" + itos(file.lfh_size) + "\">"); + + + for (int j = 0; j < file.hashes.size(); j++) { + + tmp_file->store_string("<Block Hash=\"" + + file.hashes[j].base64_hash + "\" "); + if (file.compressed) + tmp_file->store_string("Size=\"" + itos(file.hashes[j].compressed_size) + "\" "); + tmp_file->store_string("/>"); + } + + tmp_file->store_string("</File>"); + } + + tmp_file->store_string("</BlockMap>"); + + tmp_file->close(); + memdelete(tmp_file); + tmp_file = NULL; +} + +String AppxPackager::content_type(String p_extension) { + + if (p_extension == "png") + return "image/png"; + else if (p_extension == "jpg") + return "image/jpg"; + else if (p_extension == "xml") + return "application/xml"; + else if (p_extension == "exe" || p_extension == "dll") + return "application/x-msdownload"; + else + return "application/octet-stream"; +} + +void AppxPackager::make_content_types() { + + FileAccess* tmp_file = FileAccess::open(tmp_content_types_file_path, FileAccess::WRITE); + + tmp_file->store_string("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); + tmp_file->store_string("<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">"); + + Map<String, String> types; + + for (int i = 0; i < file_metadata.size(); i++) { + + String ext = file_metadata[i].name.extension(); + + if (types.has(ext)) continue; + + types[ext] = content_type(ext); + + tmp_file->store_string("<Default Extension=\"" + ext + + "\" ContentType=\"" + + types[ext] + "\" />"); + } + + // Appx signature file + tmp_file->store_string("<Default Extension=\"p7x\" ContentType=\"application/octet-stream\" />"); + + // Override for package files + tmp_file->store_string("<Override PartName=\"/AppxManifest.xml\" ContentType=\"application/vnd.ms-appx.manifest+xml\" />"); + tmp_file->store_string("<Override PartName=\"/AppxBlockMap.xml\" ContentType=\"application/vnd.ms-appx.blockmap+xml\" />"); + tmp_file->store_string("<Override PartName=\"/AppxSignature.p7x\" ContentType=\"application/vnd.ms-appx.signature\" />"); + tmp_file->store_string("<Override PartName=\"/AppxMetadata/CodeIntegrity.cat\" ContentType=\"application/vnd.ms-pkiseccat\" />"); + + tmp_file->store_string("</Types>"); + + tmp_file->close(); + memdelete(tmp_file); + tmp_file = NULL; +} + +Vector<uint8_t> AppxPackager::make_file_header(FileMeta p_file_meta) { + + Vector<uint8_t> buf; + buf.resize(BASE_FILE_HEADER_SIZE + p_file_meta.name.length()); + + int offs = 0; + // Write magic + offs += buf_put_int32(FILE_HEADER_MAGIC, &buf[offs]); + + // Version + offs += buf_put_int16(ZIP_VERSION, &buf[offs]); + + // Special flag + offs += buf_put_int16(GENERAL_PURPOSE, &buf[offs]); + + // Compression + offs += buf_put_int16(p_file_meta.compressed ? Z_DEFLATED : 0, &buf[offs]); + + // File date and time + offs += buf_put_int32(0, &buf[offs]); + + // CRC-32 + offs += buf_put_int32(p_file_meta.file_crc32, &buf[offs]); + + // Compressed size + offs += buf_put_int32(p_file_meta.compressed_size, &buf[offs]); + + // Uncompressed size + offs += buf_put_int32(p_file_meta.uncompressed_size, &buf[offs]); + + // File name length + offs += buf_put_int16(p_file_meta.name.length(), &buf[offs]); + + // Extra data length + offs += buf_put_int16(0, &buf[offs]); + + // File name + offs += buf_put_string(p_file_meta.name, &buf[offs]); + + // Done! + return buf; +} + +void AppxPackager::store_central_dir_header(const FileMeta p_file, bool p_do_hash) { + + Vector<uint8_t> &buf = central_dir_data; + int offs = buf.size(); + buf.resize(buf.size() + BASE_CENTRAL_DIR_SIZE + p_file.name.length()); + + + // Write magic + offs += buf_put_int32(CENTRAL_DIR_MAGIC, &buf[offs]); + + // ZIP versions + offs += buf_put_int16(ZIP_ARCHIVE_VERSION, &buf[offs]); + offs += buf_put_int16(ZIP_VERSION, &buf[offs]); + + // General purpose flag + offs += buf_put_int16(GENERAL_PURPOSE, &buf[offs]); + + // Compression + offs += buf_put_int16(p_file.compressed ? Z_DEFLATED : 0, &buf[offs]); + + // Modification date/time + offs += buf_put_int32(0, &buf[offs]); + + // Crc-32 + offs += buf_put_int32(p_file.file_crc32, &buf[offs]); + + // File sizes + offs += buf_put_int32(p_file.compressed_size, &buf[offs]); + offs += buf_put_int32(p_file.uncompressed_size, &buf[offs]); + + // File name length + offs += buf_put_int16(p_file.name.length(), &buf[offs]); + + // Extra field length + offs += buf_put_int16(0, &buf[offs]); + + // Comment length + offs += buf_put_int16(0, &buf[offs]); + + // Disk number start, internal/external file attributes + for (int i = 0; i < 8; i++) { + buf[offs++] = 0; + } + + // Relative offset + offs += buf_put_int32(p_file.zip_offset, &buf[offs]); + + // File name + offs += buf_put_string(p_file.name, &buf[offs]); + +#ifdef OPENSSL_ENABLED + // Calculate the hash for signing + if (p_do_hash) + SHA256_Update(&axcd_context, buf.ptr(), buf.size()); +#endif // OPENSSL_ENABLED + + // Done! +} + +Vector<uint8_t> AppxPackager::make_end_of_central_record() { + + Vector<uint8_t> buf; + buf.resize(ZIP64_END_OF_CENTRAL_DIR_SIZE + 12 + END_OF_CENTRAL_DIR_SIZE); // Size plus magic + + int offs = 0; + + // Write magic + offs += buf_put_int32(ZIP64_END_OF_CENTRAL_DIR_MAGIC, &buf[offs]); + + // Size of this record + offs += buf_put_int64(ZIP64_END_OF_CENTRAL_DIR_SIZE, &buf[offs]); + + // Version (yes, twice) + offs += buf_put_int16(ZIP_ARCHIVE_VERSION, &buf[offs]); + offs += buf_put_int16(ZIP_ARCHIVE_VERSION, &buf[offs]); + + // Disk number + for (int i = 0; i < 8; i++) { + buf[offs++] = 0; + } + + // Number of entries (total and per disk) + offs += buf_put_int64(file_metadata.size(), &buf[offs]); + offs += buf_put_int64(file_metadata.size(), &buf[offs]); + + // Size of central dir + offs += buf_put_int64(central_dir_data.size(), &buf[offs]); + + // Central dir offset + offs += buf_put_int64(central_dir_offset, &buf[offs]); + + ////// ZIP64 locator + + // Write magic for zip64 central dir locator + offs += buf_put_int32(ZIP64_END_DIR_LOCATOR_MAGIC, &buf[offs]); + + // Disk number + for (int i = 0; i < 4; i++) { + buf[offs++] = 0; + } + + // Relative offset + offs += buf_put_int64(end_of_central_dir_offset, &buf[offs]); + + // Number of disks + offs += buf_put_int32(1, &buf[offs]); + + /////// End of zip directory + + // Write magic for end central dir + offs += buf_put_int32(END_OF_CENTRAL_DIR_MAGIC, &buf[offs]); + + // Dummy stuff for Zip64 + for (int i = 0; i < 4; i++) { + buf[offs++] = 0x0; + } + for (int i = 0; i < 12; i++) { + buf[offs++] = 0xFF; + } + + // Size of comments + for (int i = 0; i < 2; i++) { + buf[offs++] = 0; + } + + // Done! + return buf; +} + +void AppxPackager::init(FileAccess * p_fa, SignOption p_sign, String &p_certificate_path, String &p_certificate_password) { + + package = p_fa; + central_dir_offset = 0; + end_of_central_dir_offset = 0; + tmp_blockmap_file_path = EditorSettings::get_singleton()->get_settings_path() + "/tmp/tmpblockmap.xml"; + tmp_content_types_file_path = EditorSettings::get_singleton()->get_settings_path() + "/tmp/tmpcontenttypes.xml"; +#ifdef OPENSSL_ENABLED + certificate_path = p_certificate_path; + certificate_pass = p_certificate_password; + sign_package = p_sign == SIGN; + SHA256_Init(&axpc_context); + SHA256_Init(&axcd_context); +#endif // OPENSSL_ENABLED +} + +void AppxPackager::add_file(String p_file_name, const uint8_t * p_buffer, size_t p_len, int p_file_no, int p_total_files, bool p_compress) { + + if (p_file_no >= 1 && p_total_files >= 1) { + EditorNode::progress_task_step(progress_task, "File: " + p_file_name, (p_file_no * 100) / p_total_files); + } + + bool do_hash = p_file_name != "AppxSignature.p7x"; + + FileMeta meta; + meta.name = p_file_name; + meta.uncompressed_size = p_len; + meta.compressed_size = p_len; + meta.compressed = p_compress; + meta.zip_offset = package->get_pos(); + + Vector<uint8_t> file_buffer; + + // Data for compression + z_stream strm; + FileAccess* strm_f = NULL; + Vector<uint8_t> strm_in; + strm_in.resize(BLOCK_SIZE); + Vector<uint8_t> strm_out; + + if (p_compress) { + + strm.zalloc = zipio_alloc; + strm.zfree = zipio_free; + strm.opaque = &strm_f; + + strm_out.resize(BLOCK_SIZE + 8); + + deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); + } + + int step = 0; + + while (p_len - step > 0) { + + size_t block_size = (p_len - step) > BLOCK_SIZE ? BLOCK_SIZE : (p_len - step); + + for (int i = 0; i < block_size; i++) { + strm_in[i] = p_buffer[step + i]; + } + + BlockHash bh; + bh.base64_hash = hash_block(strm_in.ptr(), block_size); + + if (p_compress) { + + strm.avail_in = block_size; + strm.avail_out = strm_out.size(); + strm.next_in = strm_in.ptr(); + strm.next_out = strm_out.ptr(); + + int total_out_before = strm.total_out; + + deflate(&strm, Z_FULL_FLUSH); + bh.compressed_size = strm.total_out - total_out_before; + + //package->store_buffer(strm_out.ptr(), strm.total_out - total_out_before); + int start = file_buffer.size(); + file_buffer.resize(file_buffer.size() + bh.compressed_size); + for (int i = 0; i < bh.compressed_size; i++) + file_buffer[start + i] = strm_out[i]; +#ifdef OPENSSL_ENABLED + if (do_hash) + SHA256_Update(&axpc_context, strm_out.ptr(), strm.total_out - total_out_before); +#endif // OPENSSL_ENABLED + + } else { + bh.compressed_size = block_size; + //package->store_buffer(strm_in.ptr(), block_size); + int start = file_buffer.size(); + file_buffer.resize(file_buffer.size() + block_size); + for (int i = 0; i < bh.compressed_size; i++) + file_buffer[start + i] = strm_in[i]; +#ifdef OPENSSL_ENABLED + if (do_hash) + SHA256_Update(&axpc_context, strm_in.ptr(), block_size); +#endif // OPENSSL_ENABLED + } + + meta.hashes.push_back(bh); + + step += block_size; + } + + if (p_compress) { + + strm.avail_in = 0; + strm.avail_out = strm_out.size(); + strm.next_in = strm_in.ptr(); + strm.next_out = strm_out.ptr(); + + int total_out_before = strm.total_out; + + deflate(&strm, Z_FINISH); + + //package->store_buffer(strm_out.ptr(), strm.total_out - total_out_before); + int start = file_buffer.size(); + file_buffer.resize(file_buffer.size() + (strm.total_out - total_out_before)); + for (int i = 0; i < (strm.total_out - total_out_before); i++) + file_buffer[start + i] = strm_out[i]; +#ifdef OPENSSL_ENABLED + if (do_hash) + SHA256_Update(&axpc_context, strm_out.ptr(), strm.total_out - total_out_before); +#endif // OPENSSL_ENABLED + + deflateEnd(&strm); + meta.compressed_size = strm.total_out; + + } else { + + meta.compressed_size = p_len; + } + + // Calculate file CRC-32 + uLong crc = crc32(0L, Z_NULL, 0); + crc = crc32(crc, p_buffer, p_len); + meta.file_crc32 = crc; + + // Create file header + Vector<uint8_t> file_header = make_file_header(meta); + meta.lfh_size = file_header.size(); + +#ifdef OPENSSL_ENABLED + // Hash the data for signing + if (do_hash) { + SHA256_Update(&axpc_context, file_header.ptr(), file_header.size()); + SHA256_Update(&axpc_context, file_buffer.ptr(), file_buffer.size()); + } +#endif // OPENSSL_ENABLED + + // Store the header and file; + package->store_buffer(file_header.ptr(), file_header.size()); + package->store_buffer(file_buffer.ptr(), file_buffer.size()); + + file_metadata.push_back(meta); +} + +void AppxPackager::finish() { + + // Create and add block map file + EditorNode::progress_task_step("export", "Creating block map...", 4); + + make_block_map(); + FileAccess* blockmap_file = FileAccess::open(tmp_blockmap_file_path, FileAccess::READ); + Vector<uint8_t> blockmap_buffer; + blockmap_buffer.resize(blockmap_file->get_len()); + + blockmap_file->get_buffer(blockmap_buffer.ptr(), blockmap_buffer.size()); + +#ifdef OPENSSL_ENABLED + // Hash the file for signing + if (sign_package) { + SHA256_CTX axbm_context; + SHA256_Init(&axbm_context); + SHA256_Update(&axbm_context, blockmap_buffer.ptr(), blockmap_buffer.size()); + SHA256_Final(digests.axbm, &axbm_context); + } +#endif // OPENSSL_ENABLED + + add_file("AppxBlockMap.xml", blockmap_buffer.ptr(), blockmap_buffer.size(), -1, -1, true); + + blockmap_file->close(); + memdelete(blockmap_file); + blockmap_file = NULL; + + // Add content types + EditorNode::progress_task_step("export", "Setting content types...", 5); + make_content_types(); + + FileAccess* types_file = FileAccess::open(tmp_content_types_file_path, FileAccess::READ); + Vector<uint8_t> types_buffer; + types_buffer.resize(types_file->get_len()); + + types_file->get_buffer(types_buffer.ptr(), types_buffer.size()); + +#ifdef OPENSSL_ENABLED + if (sign_package) { + // Hash the file for signing + SHA256_CTX axct_context; + SHA256_Init(&axct_context); + SHA256_Update(&axct_context, types_buffer.ptr(), types_buffer.size()); + SHA256_Final(digests.axct, &axct_context); + } +#endif // OPENSSL_ENABLED + + add_file("[Content_Types].xml", types_buffer.ptr(), types_buffer.size(), -1, -1, true); + + types_file->close(); + memdelete(types_file); + types_file = NULL; + + // Pre-process central directory before signing + for (int i = 0; i < file_metadata.size(); i++) { + store_central_dir_header(file_metadata[i]); + } + +#ifdef OPENSSL_ENABLED + // Create the signature file + if (sign_package) { + + Error err = read_cert_file(certificate_path, certificate_pass, &cert_file); + + if (err != OK) { + EditorNode::add_io_error(TTR("Couldn't read the certficate file. Are the path and password both correct?")); + package->close(); + memdelete(package); + package = NULL; + return; + } + + + // Make a temp end of the zip for hashing + central_dir_offset = package->get_pos(); + end_of_central_dir_offset = central_dir_offset + central_dir_data.size(); + Vector<uint8_t> zip_end_dir = make_end_of_central_record(); + + // Hash the end directory + SHA256_Update(&axcd_context, zip_end_dir.ptr(), zip_end_dir.size()); + + // Finish the hashes + make_digests(); + + PKCS7* signature = PKCS7_new(); + if (!signature) { + EditorNode::add_io_error(TTR("Error creating the signature object.")); + package->close(); + memdelete(package); + package = NULL; + return; + } + + err = sign(cert_file, digests, signature); + + if (err != OK) { + EditorNode::add_io_error(TTR("Error creating the package signature.")); + package->close(); + memdelete(package); + package = NULL; + return; + } + + // Read the signature as bytes + BIO* bio_out = BIO_new(BIO_s_mem()); + i2d_PKCS7_bio(bio_out, signature); + + BIO_flush(bio_out); + + uint8_t* bio_ptr; + size_t bio_size = BIO_get_mem_data(bio_out, &bio_ptr); + + // Create the signature buffer with magic number + Vector<uint8_t> signature_file; + signature_file.resize(4 + bio_size); + buf_put_int32(P7X_SIGNATURE, signature_file.ptr()); + for (int i = 0; i < bio_size; i++) + signature_file[i + 4] = bio_ptr[i]; + + // Add the signature to the package + add_file("AppxSignature.p7x", signature_file.ptr(), signature_file.size(), -1, -1, true); + + // Add central directory entry + store_central_dir_header(file_metadata[file_metadata.size() - 1], false); + } +#endif // OPENSSL_ENABLED + + + // Write central directory + EditorNode::progress_task_step("export", "Finishing package...", 6); + central_dir_offset = package->get_pos(); + package->store_buffer(central_dir_data.ptr(), central_dir_data.size()); + + // End record + end_of_central_dir_offset = package->get_pos(); + Vector<uint8_t> end_record = make_end_of_central_record(); + package->store_buffer(end_record.ptr(), end_record.size()); + + package->close(); + memdelete(package); + package = NULL; +} + +#ifdef OPENSSL_ENABLED +// https://support.microsoft.com/en-us/kb/287547 +const char SPC_INDIRECT_DATA_OBJID[] = "1.3.6.1.4.1.311.2.1.4"; +const char SPC_STATEMENT_TYPE_OBJID[] = "1.3.6.1.4.1.311.2.1.11"; +const char SPC_SP_OPUS_INFO_OBJID[] = "1.3.6.1.4.1.311.2.1.12"; +const char SPC_SIPINFO_OBJID[] = "1.3.6.1.4.1.311.2.1.30"; +#endif // OPENSSL_ENABLED + +AppxPackager::AppxPackager() {} + +AppxPackager::~AppxPackager() {} + + +//////////////////////////////////////////////////////////////////// + +#ifdef OPENSSL_ENABLED +Error AppxPackager::openssl_error(unsigned long p_err) { + + ERR_load_crypto_strings(); + + char buffer[256]; + ERR_error_string_n(p_err, buffer, sizeof(buffer)); + + String err(buffer); + + ERR_EXPLAIN(err); + ERR_FAIL_V(FAILED); +} + +void AppxPackager::MakeSPCInfoValue(asn1::SPCInfoValue &info) { + + // I have no idea what these numbers mean. + static uint8_t s1Magic[] = { + 0x4B, 0xDF, 0xC5, 0x0A, 0x07, 0xCE, 0xE2, 0x4D, + 0xB7, 0x6E, 0x23, 0xC8, 0x39, 0xA0, 0x9F, 0xD1, + }; + ASN1_INTEGER_set(info.i1, 0x01010000); + ASN1_OCTET_STRING_set(info.s1, s1Magic, sizeof(s1Magic)); + ASN1_INTEGER_set(info.i2, 0x00000000); + ASN1_INTEGER_set(info.i3, 0x00000000); + ASN1_INTEGER_set(info.i4, 0x00000000); + ASN1_INTEGER_set(info.i5, 0x00000000); + ASN1_INTEGER_set(info.i6, 0x00000000); +} + +Error AppxPackager::MakeIndirectDataContent(asn1::SPCIndirectDataContent &idc) { + + using namespace asn1; + + ASN1_TYPE* algorithmParameter = ASN1_TYPE_new(); + if (!algorithmParameter) { + return openssl_error(ERR_peek_last_error()); + } + algorithmParameter->type = V_ASN1_NULL; + + SPCInfoValue* infoValue = SPCInfoValue_new(); + if (!infoValue) { + return openssl_error(ERR_peek_last_error()); + } + MakeSPCInfoValue(*infoValue); + + ASN1_TYPE* value = + EncodedASN1::FromItem<asn1::SPCInfoValue, + asn1::i2d_SPCInfoValue>(infoValue) + .ToSequenceType(); + + { + Vector<uint8_t> digest; + write_digest(digest); + if (!ASN1_OCTET_STRING_set(idc.messageDigest->digest, + digest.ptr(), digest.size())) { + + return openssl_error(ERR_peek_last_error()); + } + } + + idc.data->type = OBJ_txt2obj(SPC_SIPINFO_OBJID, 1); + idc.data->value = value; + idc.messageDigest->digestAlgorithm->algorithm = OBJ_nid2obj(NID_sha256); + idc.messageDigest->digestAlgorithm->parameter = algorithmParameter; + + return OK; +} + +Error AppxPackager::add_attributes(PKCS7_SIGNER_INFO * p_signer_info) { + + // Add opus attribute + asn1::SPCSpOpusInfo* opus = asn1::SPCSpOpusInfo_new(); + if (!opus) return openssl_error(ERR_peek_last_error()); + + ASN1_STRING* opus_value = EncodedASN1::FromItem<asn1::SPCSpOpusInfo, asn1::i2d_SPCSpOpusInfo>(opus) + .ToSequenceString(); + + if (!PKCS7_add_signed_attribute( + p_signer_info, + OBJ_txt2nid(SPC_SP_OPUS_INFO_OBJID), + V_ASN1_SEQUENCE, + opus_value + )) { + + asn1::SPCSpOpusInfo_free(opus); + + ASN1_STRING_free(opus_value); + return openssl_error(ERR_peek_last_error()); + } + + // Add content type attribute + if (!PKCS7_add_signed_attribute( + p_signer_info, + NID_pkcs9_contentType, + V_ASN1_OBJECT, + OBJ_txt2obj(SPC_INDIRECT_DATA_OBJID, 1) + )) { + + asn1::SPCSpOpusInfo_free(opus); + ASN1_STRING_free(opus_value); + return openssl_error(ERR_peek_last_error()); + } + + // Add statement type attribute + asn1::SPCStatementType* statement_type = asn1::SPCStatementType_new(); + if (!statement_type) return openssl_error(ERR_peek_last_error()); + + statement_type->type = OBJ_nid2obj(NID_ms_code_ind); + ASN1_STRING* statement_type_value = + EncodedASN1::FromItem<asn1::SPCStatementType, asn1::i2d_SPCStatementType>(statement_type) + .ToSequenceString(); + + if (!PKCS7_add_signed_attribute( + p_signer_info, + OBJ_txt2nid(SPC_STATEMENT_TYPE_OBJID), + V_ASN1_SEQUENCE, + statement_type_value + )) { + + ASN1_STRING_free(opus_value); + asn1::SPCStatementType_free(statement_type); + ASN1_STRING_free(statement_type_value); + + return openssl_error(ERR_peek_last_error()); + } + + return OK; + +} + +void AppxPackager::make_digests() { + + // AXPC + SHA256_Final(digests.axpc, &axpc_context); + + // AXCD + SHA256_Final(digests.axcd, &axcd_context); + + // AXCI + for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) + digests.axci[i] = 0; + +} + +void AppxPackager::write_digest(Vector<uint8_t>& p_out_buffer) { + + // Size of digests plus 6 32-bit magic numbers + p_out_buffer.resize((SHA256_DIGEST_LENGTH * 5) + (6 * 4)); + + int offs = 0; + + // APPX + uint32_t sig = 0x58505041; + offs += buf_put_int32(sig, &p_out_buffer[offs]); + + // AXPC + uint32_t axpc_sig = 0x43505841; + offs += buf_put_int32(axpc_sig, &p_out_buffer[offs]); + for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) { + p_out_buffer[offs++] = digests.axpc[i]; + } + + // AXCD + uint32_t axcd_sig = 0x44435841; + offs += buf_put_int32(axcd_sig, &p_out_buffer[offs]); + for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) { + p_out_buffer[offs++] = digests.axcd[i]; + } + + // AXCT + uint32_t axct_sig = 0x54435841; + offs += buf_put_int32(axct_sig, &p_out_buffer[offs]); + for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) { + p_out_buffer[offs++] = digests.axct[i]; + } + + // AXBM + uint32_t axbm_sig = 0x4D425841; + offs += buf_put_int32(axbm_sig, &p_out_buffer[offs]); + for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) { + p_out_buffer[offs++] = digests.axbm[i]; + } + + // AXCI + uint32_t axci_sig = 0x49435841; + offs += buf_put_int32(axci_sig, &p_out_buffer[offs]); + for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) { + p_out_buffer[offs++] = digests.axci[i]; + } + + // Done! +} + +Error AppxPackager::read_cert_file(const String & p_path, const String &p_password, CertFile* p_out_cf) { + + ERR_FAIL_COND_V(!p_out_cf, ERR_INVALID_PARAMETER); + + BIO* bio = BIO_new_file(p_path.utf8().get_data(), "rb"); + if (!bio) { + return openssl_error(ERR_peek_last_error()); + } + + PKCS12* data = d2i_PKCS12_bio(bio, NULL); + if (!data) { + BIO_free(bio); + return openssl_error(ERR_peek_last_error()); + } + + /* Fails to link with GCC, need to solve when implement signing + if (!PKCS12_parse(data, p_password.utf8().get_data(), &p_out_cf->private_key, &p_out_cf->certificate, NULL)) { + PKCS12_free(data); + BIO_free(bio); + return openssl_error(ERR_peek_last_error()); + }*/ + + if (!p_out_cf->private_key) { + PKCS12_free(data); + BIO_free(bio); + return openssl_error(ERR_peek_last_error()); + } + + if (!p_out_cf->certificate) { + PKCS12_free(data); + BIO_free(bio); + return openssl_error(ERR_peek_last_error()); + } + + PKCS12_free(data); + BIO_free(bio); + + return OK; +} + +Error AppxPackager::sign(const CertFile & p_cert, const AppxDigests & digests, PKCS7 * p_out_signature) { + + OpenSSL_add_all_algorithms(); + + // Register object IDs + OBJ_create_and_add_object(SPC_INDIRECT_DATA_OBJID, NULL, NULL); + OBJ_create_and_add_object(SPC_SIPINFO_OBJID, NULL, NULL); + OBJ_create_and_add_object(SPC_SP_OPUS_INFO_OBJID, NULL, NULL); + OBJ_create_and_add_object(SPC_STATEMENT_TYPE_OBJID, NULL, NULL); + + if (!PKCS7_set_type(p_out_signature, NID_pkcs7_signed)) { + + return openssl_error(ERR_peek_last_error()); + } + + PKCS7_SIGNER_INFO *signer_info = PKCS7_add_signature(p_out_signature, p_cert.certificate, p_cert.private_key, EVP_sha256()); + if (!signer_info) return openssl_error(ERR_peek_last_error()); + + add_attributes(signer_info); + + if (!PKCS7_content_new(p_out_signature, NID_pkcs7_data)) { + + return openssl_error(ERR_peek_last_error()); + } + + if (!PKCS7_add_certificate(p_out_signature, p_cert.certificate)) { + + return openssl_error(ERR_peek_last_error()); + } + + asn1::SPCIndirectDataContent* idc = asn1::SPCIndirectDataContent_new(); + + MakeIndirectDataContent(*idc); + EncodedASN1 idc_encoded = + EncodedASN1::FromItem<asn1::SPCIndirectDataContent, asn1::i2d_SPCIndirectDataContent>(idc); + + BIO* signed_data = PKCS7_dataInit(p_out_signature, NULL); + + if (idc_encoded.size() < 2) { + + ERR_EXPLAIN("Invalid encoded size"); + ERR_FAIL_V(FAILED); + } + + if ((idc_encoded.data()[1] & 0x80) == 0x00) { + + ERR_EXPLAIN("Invalid encoded data"); + ERR_FAIL_V(FAILED); + } + + size_t skip = 4; + + if (BIO_write(signed_data, idc_encoded.data() + skip, idc_encoded.size() - skip) + != idc_encoded.size() - skip) { + + return openssl_error(ERR_peek_last_error()); + } + if (BIO_flush(signed_data) != 1) { + + return openssl_error(ERR_peek_last_error()); + } + + if (!PKCS7_dataFinal(p_out_signature, signed_data)) { + + return openssl_error(ERR_peek_last_error()); + } + + PKCS7* content = PKCS7_new(); + if (!content) { + + return openssl_error(ERR_peek_last_error()); + } + + content->type = OBJ_txt2obj(SPC_INDIRECT_DATA_OBJID, 1); + + ASN1_TYPE* idc_sequence = idc_encoded.ToSequenceType(); + content->d.other = idc_sequence; + + if (!PKCS7_set_content(p_out_signature, content)) { + + return openssl_error(ERR_peek_last_error()); + } + + return OK; +} + +#endif // OPENSSL_ENABLED + +//////////////////////////////////////////////////////////////////// + + +bool EditorExportPlatformWinrt::_valid_resource_name(const String &p_name) const { + + if (p_name.empty()) return false; + if (p_name.ends_with(".")) return false; + + static const char* invalid_names[] = { + "CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7", + "COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9", + NULL + }; + + const char** t = invalid_names; + while (*t) { + if (p_name == *t) return false; + t++; + } + + return true; +} + +bool EditorExportPlatformWinrt::_valid_guid(const String & p_guid) const { + + Vector<String> parts = p_guid.split("-"); + + if (parts.size() != 5) return false; + if (parts[0].length() != 8) return false; + for (int i = 1; i < 4; i++) + if (parts[i].length() != 4) return false; + if (parts[4].length() != 12) return false; + + return true; +} + +bool EditorExportPlatformWinrt::_valid_bgcolor(const String & p_color) const { + + if (p_color.empty()) return true; + if (p_color.begins_with("#") && p_color.is_valid_html_color()) return true; + + // Colors from https://msdn.microsoft.com/en-us/library/windows/apps/dn934817.aspx + static const char* valid_colors[] = { + "aliceBlue","antiqueWhite","aqua","aquamarine","azure","beige", + "bisque","black","blanchedAlmond","blue","blueViolet","brown", + "burlyWood","cadetBlue","chartreuse","chocolate","coral","cornflowerBlue", + "cornsilk","crimson","cyan","darkBlue","darkCyan","darkGoldenrod", + "darkGray","darkGreen","darkKhaki","darkMagenta","darkOliveGreen","darkOrange", + "darkOrchid","darkRed","darkSalmon","darkSeaGreen","darkSlateBlue","darkSlateGray", + "darkTurquoise","darkViolet","deepPink","deepSkyBlue","dimGray","dodgerBlue", + "firebrick","floralWhite","forestGreen","fuchsia","gainsboro","ghostWhite", + "gold","goldenrod","gray","green","greenYellow","honeydew", + "hotPink","indianRed","indigo","ivory","khaki","lavender", + "lavenderBlush","lawnGreen","lemonChiffon","lightBlue","lightCoral","lightCyan", + "lightGoldenrodYellow","lightGreen","lightGray","lightPink","lightSalmon","lightSeaGreen", + "lightSkyBlue","lightSlateGray","lightSteelBlue","lightYellow","lime","limeGreen", + "linen","magenta","maroon","mediumAquamarine","mediumBlue","mediumOrchid", + "mediumPurple","mediumSeaGreen","mediumSlateBlue","mediumSpringGreen","mediumTurquoise","mediumVioletRed", + "midnightBlue","mintCream","mistyRose","moccasin","navajoWhite","navy", + "oldLace","olive","oliveDrab","orange","orangeRed","orchid", + "paleGoldenrod","paleGreen","paleTurquoise","paleVioletRed","papayaWhip","peachPuff", + "peru","pink","plum","powderBlue","purple","red", + "rosyBrown","royalBlue","saddleBrown","salmon","sandyBrown","seaGreen", + "seaShell","sienna","silver","skyBlue","slateBlue","slateGray", + "snow","springGreen","steelBlue","tan","teal","thistle", + "tomato","transparent","turquoise","violet","wheat","white", + "whiteSmoke","yellow","yellowGreen", + NULL + }; + + const char** color = valid_colors; + + while(*color) { + if (p_color == *color) return true; + color++; + } + + return false; +} + +bool EditorExportPlatformWinrt::_valid_image(const Ref<ImageTexture> p_image, int p_width, int p_height) const { + + if (!p_image.is_valid()) return false; + + // TODO: Add resource creation or image rescaling to enable other scales: + // 1.25, 1.5, 2.0 + real_t scales[] = { 1.0 }; + bool valid_w = false; + bool valid_h = false; + + for (int i = 0; i < 1; i++) { + + int w = ceil(p_width * scales[i]); + int h = ceil(p_height * scales[i]); + + if (w == p_image->get_width()) + valid_w = true; + if (h == p_image->get_height()) + valid_h = true; + } + + return valid_w && valid_h; +} + +Vector<uint8_t> EditorExportPlatformWinrt::_fix_manifest(const Vector<uint8_t> &p_template, bool p_give_internet) const { + + String result = String::utf8((const char*)p_template.ptr(), p_template.size()); + + result = result.replace("$godot_version$", VERSION_FULL_NAME); + + result = result.replace("$identity_name$", unique_name); + result = result.replace("$publisher$", publisher); + + result = result.replace("$product_guid$", product_guid); + result = result.replace("$publisher_guid$", publisher_guid); + + String version = itos(version_major) + "." + itos(version_minor) + "." + itos(version_build) + "." + itos(version_revision); + result = result.replace("$version_string$", version); + + String architecture = arch == ARM ? "ARM" : arch == X86 ? "x86" : "x64"; + result = result.replace("$architecture$", architecture); + + result = result.replace("$display_name$", display_name.empty() ? (String)Globals::get_singleton()->get("application/name") : display_name); + result = result.replace("$publisher_display_name$", publisher_display_name); + result = result.replace("$app_description$", description); + result = result.replace("$bg_color$", background_color); + result = result.replace("$short_name$", short_name); + + String name_on_tiles = ""; + if (name_on_square150) { + name_on_tiles += " <uap:ShowOn Tile=\"square150x150Logo\" />\n"; + } + if (name_on_wide) { + name_on_tiles += " <uap:ShowOn Tile=\"wide310x150Logo\" />\n"; + } + if (name_on_square310) { + name_on_tiles += " <uap:ShowOn Tile=\"square310x310Logo\" />\n"; + } + + String show_name_on_tiles = ""; + if (!name_on_tiles.empty()) { + show_name_on_tiles = "<uap:ShowNameOnTiles>\n" + name_on_tiles + " </uap:ShowNameOnTiles>"; + } + + result = result.replace("$name_on_tiles$", name_on_tiles); + + String rotations = ""; + if (orientation_landscape) { + rotations += " <uap:Rotation Preference=\"landscape\" />\n"; + } + if (orientation_portrait) { + rotations += " <uap:Rotation Preference=\"portrait\" />\n"; + } + if (orientation_landscape_flipped) { + rotations += " <uap:Rotation Preference=\"landscapeFlipped\" />\n"; + } + if (orientation_portrait_flipped) { + rotations += " <uap:Rotation Preference=\"portraitFlipped\" />\n"; + } + + String rotation_preference = ""; + if (!rotations.empty()) { + rotation_preference = "<uap:InitialRotationPreference>\n" + rotations + " </uap:InitialRotationPreference>"; + } + + result = result.replace("$rotation_preference$", rotation_preference); + + String capabilities_elements = ""; + const char **basic = uwp_capabilities; + while (*basic) { + if (capabilities.has(*basic)) { + capabilities_elements += " <Capability Name=\"" + String(*basic) + "\" />\n"; + } + basic++; + } + const char **uap = uwp_uap_capabilities; + while (*uap) { + if (uap_capabilities.has(*uap)) { + capabilities_elements += " <uap:Capability Name=\"" + String(*uap) + "\" />\n"; + } + uap++; + } + const char **device = uwp_device_capabilites; + while (*device) { + if (uap_capabilities.has(*device)) { + capabilities_elements += " <DeviceCapability Name=\"" + String(*device) + "\" />\n"; + } + device++; + } + + if (!capabilities.has("internetClient") && p_give_internet) { + capabilities_elements += " <Capability Name=\"internetClient\" />\n"; + } + + String capabilities_string = "<Capabilities />"; + if (!capabilities_elements.empty()) { + capabilities_string = "<Capabilities>\n" + capabilities_elements + " </Capabilities>"; + } + + result = result.replace("$capabilities_place$", capabilities_string); + + Vector<uint8_t> r_ret; + r_ret.resize(result.length()); + + for (int i = 0; i < result.length(); i++) + r_ret[i] = result.utf8().get(i); + + return r_ret; +} + +Vector<uint8_t> EditorExportPlatformWinrt::_get_image_data(const String & p_path) { + + Vector<uint8_t> data; + Ref<ImageTexture> ref; + + if (p_path.find("StoreLogo") != -1) { + ref = store_logo; + } else if (p_path.find("Square44x44Logo") != -1) { + ref = square44; + } else if (p_path.find("Square71x71Logo") != -1) { + ref = square71; + } else if (p_path.find("Square150x150Logo") != -1) { + ref = square150; + } else if (p_path.find("Square310x310Logo") != -1) { + ref = square310; + } else if (p_path.find("Wide310x150Logo") != -1) { + ref = wide310; + } else if (p_path.find("SplashScreen") != -1) { + ref = splash; + } + + if (!ref.is_valid()) return data; + + + String tmp_path = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp/uwp_tmp_logo.png"); + + Error err = ref->get_data().save_png(tmp_path); + + if (err != OK) { + + String err_string = "Couldn't save temp logo file."; + + EditorNode::add_io_error(err_string); + ERR_EXPLAIN(err_string); + ERR_FAIL_V(data); + } + + FileAccess* f = FileAccess::open(tmp_path, FileAccess::READ, &err); + + if (err != OK) { + + String err_string = "Couldn't open temp logo file."; + + EditorNode::add_io_error(err_string); + ERR_EXPLAIN(err_string); + ERR_FAIL_V(data); + } + + data.resize(f->get_len()); + f->get_buffer(data.ptr(), data.size()); + + f->close(); + memdelete(f); + + // Delete temp file + DirAccess* dir = DirAccess::open(tmp_path.get_base_dir(), &err); + + if (err != OK) { + + String err_string = "Couldn't open temp path to remove temp logo file."; + + EditorNode::add_io_error(err_string); + ERR_EXPLAIN(err_string); + ERR_FAIL_V(data); + } + + err = dir->remove(tmp_path); + + memdelete(dir); + + if (err != OK) { + + String err_string = "Couldn't remove temp logo file."; + + EditorNode::add_io_error(err_string); + ERR_EXPLAIN(err_string); + ERR_FAIL_V(data); + } + + return data; +} + +Error EditorExportPlatformWinrt::save_appx_file(void * p_userdata, const String & p_path, const Vector<uint8_t>& p_data, int p_file, int p_total) { + + AppxPackager *packager = (AppxPackager*)p_userdata; + String dst_path = p_path.replace_first("res://", "game/"); + + packager->add_file(dst_path, p_data.ptr(), p_data.size(), p_file, p_total, _should_compress_asset(p_path, p_data)); + + return OK; +} + +bool EditorExportPlatformWinrt::_should_compress_asset(const String & p_path, const Vector<uint8_t>& p_data) { + + /* TODO: This was copied verbatim from Android export. It should be + * refactored to the parent class and also be used for .zip export. + */ + + /* + * By not compressing files with little or not benefit in doing so, + * a performance gain is expected at runtime. Moreover, if the APK is + * zip-aligned, assets stored as they are can be efficiently read by + * Android by memory-mapping them. + */ + + // -- Unconditional uncompress to mimic AAPT plus some other + + static const char* unconditional_compress_ext[] = { + // From https://github.com/android/platform_frameworks_base/blob/master/tools/aapt/Package.cpp + // These formats are already compressed, or don't compress well: + ".jpg", ".jpeg", ".png", ".gif", + ".wav", ".mp2", ".mp3", ".ogg", ".aac", + ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet", + ".rtttl", ".imy", ".xmf", ".mp4", ".m4a", + ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", + ".amr", ".awb", ".wma", ".wmv", + // Godot-specific: + ".webp", // Same reasoning as .png + ".cfb", // Don't let small config files slow-down startup + // Trailer for easier processing + NULL + }; + + for (const char** ext = unconditional_compress_ext; *ext; ++ext) { + if (p_path.to_lower().ends_with(String(*ext))) { + return false; + } + } + + // -- Compressed resource? + + if (p_data.size() >= 4 && p_data[0] == 'R' && p_data[1] == 'S' && p_data[2] == 'C' && p_data[3] == 'C') { + // Already compressed + return false; + } + + // --- TODO: Decide on texture resources according to their image compression setting + + return true; +} + +bool EditorExportPlatformWinrt::_set(const StringName& p_name, const Variant& p_value) { + + String n = p_name; + + if (n == "architecture/target") + arch = (Platform)((int)p_value); + else if (n == "custom_package/debug") + custom_debug_package = p_value; + else if (n == "custom_package/release") + custom_release_package = p_value; + else if (n == "command_line/extra_args") + cmdline = p_value; + else if (n == "package/display_name") + display_name = p_value; + else if (n == "package/short_name") + short_name = p_value; + else if (n == "package/unique_name") + unique_name = p_value; + else if (n == "package/description") + description = p_value; + else if (n == "package/publisher") + publisher = p_value; + else if (n == "package/publisher_display_name") + publisher_display_name = p_value; + else if (n == "identity/product_guid") + product_guid = p_value; + else if (n == "identity/publisher_guid") + publisher_guid = p_value; + else if (n == "version/major") + version_major = p_value; + else if (n == "version/minor") + version_minor = p_value; + else if (n == "version/build") + version_build = p_value; + else if (n == "version/revision") + version_revision = p_value; + else if (n == "orientation/landscape") + orientation_landscape = p_value; + else if (n == "orientation/portrait") + orientation_portrait = p_value; + else if (n == "orientation/landscape_flipped") + orientation_landscape_flipped = p_value; + else if (n == "orientation/portrait_flipped") + orientation_portrait_flipped = p_value; + else if (n == "images/background_color") + background_color = p_value; + else if (n == "images/store_logo") + store_logo = p_value; + else if (n == "images/square44x44_logo") + square44 = p_value; + else if (n == "images/square71x71_logo") + square71 = p_value; + else if (n == "images/square150x150_logo") + square150 = p_value; + else if (n == "images/square310x310_logo") + square310 = p_value; + else if (n == "images/wide310x150_logo") + wide310 = p_value; + else if (n == "images/splash_screen") + splash = p_value; + else if (n == "tiles/show_name_on_square150x150") + name_on_square150 = p_value; + else if (n == "tiles/show_name_on_wide310x150") + name_on_wide = p_value; + else if (n == "tiles/show_name_on_square310x310") + name_on_square310 = p_value; + +#if 0 // Signing disabled + else if (n == "signing/sign") + sign_package = p_value; + else if (n == "signing/certificate_file") + certificate_path = p_value; + else if (n == "signing/certificate_password") + certificate_pass = p_value; +#endif + else if (n.begins_with("capabilities/")) { + + String what = n.get_slice("/", 1).replace("_", ""); + bool enable = p_value; + + if (array_has(uwp_capabilities, what.utf8().get_data())) { + + if (enable) + capabilities.insert(what); + else + capabilities.erase(what); + + } else if (array_has(uwp_uap_capabilities, what.utf8().get_data())) { + + if (enable) + uap_capabilities.insert(what); + else + uap_capabilities.erase(what); + + } else if (array_has(uwp_device_capabilites, what.utf8().get_data())) { + + if (enable) + device_capabilities.insert(what); + else + device_capabilities.erase(what); + } + } else return false; + + return true; +} + +bool EditorExportPlatformWinrt::_get(const StringName& p_name, Variant &r_ret) const { + + String n = p_name; + + if (n == "architecture/target") + r_ret = (int)arch; + else if (n == "custom_package/debug") + r_ret = custom_debug_package; + else if (n == "custom_package/release") + r_ret = custom_release_package; + else if (n == "command_line/extra_args") + r_ret = cmdline; + else if (n == "package/display_name") + r_ret = display_name; + else if (n == "package/short_name") + r_ret = short_name; + else if (n == "package/unique_name") + r_ret = unique_name; + else if (n == "package/description") + r_ret = description; + else if (n == "package/publisher") + r_ret = publisher; + else if (n == "package/publisher_display_name") + r_ret = publisher_display_name; + else if (n == "identity/product_guid") + r_ret = product_guid; + else if (n == "identity/publisher_guid") + r_ret = publisher_guid; + else if (n == "version/major") + r_ret = version_major; + else if (n == "version/minor") + r_ret = version_minor; + else if (n == "version/build") + r_ret = version_build; + else if (n == "version/revision") + r_ret = version_revision; + else if (n == "orientation/landscape") + r_ret = orientation_landscape; + else if (n == "orientation/portrait") + r_ret = orientation_portrait; + else if (n == "orientation/landscape_flipped") + r_ret = orientation_landscape_flipped; + else if (n == "orientation/portrait_flipped") + r_ret = orientation_portrait_flipped; + else if (n == "images/background_color") + r_ret = background_color; + else if (n == "images/store_logo") + r_ret = store_logo; + else if (n == "images/square44x44_logo") + r_ret = square44; + else if (n == "images/square71x71_logo") + r_ret = square71; + else if (n == "images/square150x150_logo") + r_ret = square150; + else if (n == "images/square310x310_logo") + r_ret = square310; + else if (n == "images/wide310x150_logo") + r_ret = wide310; + else if (n == "images/splash_screen") + r_ret = splash; + else if (n == "tiles/show_name_on_square150x150") + r_ret = name_on_square150; + else if (n == "tiles/show_name_on_wide310x150") + r_ret = name_on_wide; + else if (n == "tiles/show_name_on_square310x310") + r_ret = name_on_square310; + +#if 0 // Signing disabled + else if (n == "signing/sign") + r_ret = sign_package; + else if (n == "signing/certificate_file") + r_ret = certificate_path; + else if (n == "signing/certificate_password") + r_ret = certificate_pass; +#endif + else if (n.begins_with("capabilities/")) { + + String what = n.get_slice("/", 1).replace("_", ""); + + if (array_has(uwp_capabilities, what.utf8().get_data())) { + + r_ret = capabilities.has(what); + + } else if (array_has(uwp_uap_capabilities, what.utf8().get_data())) { + + r_ret = uap_capabilities.has(what); + + } else if (array_has(uwp_device_capabilites, what.utf8().get_data())) { + + r_ret = device_capabilities.has(what); + } + } else return false; + + return true; +} + +void EditorExportPlatformWinrt::_get_property_list(List<PropertyInfo>* p_list) const { + + p_list->push_back(PropertyInfo(Variant::STRING, "custom_package/debug", PROPERTY_HINT_GLOBAL_FILE, "appx")); + p_list->push_back(PropertyInfo(Variant::STRING, "custom_package/release", PROPERTY_HINT_GLOBAL_FILE, "appx")); + + p_list->push_back(PropertyInfo(Variant::INT, "architecture/target", PROPERTY_HINT_ENUM, "ARM,x86,x64")); + + p_list->push_back(PropertyInfo(Variant::STRING, "command_line/extra_args")); + + p_list->push_back(PropertyInfo(Variant::STRING, "package/display_name")); + p_list->push_back(PropertyInfo(Variant::STRING, "package/short_name")); + p_list->push_back(PropertyInfo(Variant::STRING, "package/unique_name")); + p_list->push_back(PropertyInfo(Variant::STRING, "package/description")); + p_list->push_back(PropertyInfo(Variant::STRING, "package/publisher")); + p_list->push_back(PropertyInfo(Variant::STRING, "package/publisher_display_name")); + + p_list->push_back(PropertyInfo(Variant::STRING, "identity/product_guid")); + p_list->push_back(PropertyInfo(Variant::STRING, "identity/publisher_guid")); + + p_list->push_back(PropertyInfo(Variant::INT, "version/major")); + p_list->push_back(PropertyInfo(Variant::INT, "version/minor")); + p_list->push_back(PropertyInfo(Variant::INT, "version/build")); + p_list->push_back(PropertyInfo(Variant::INT, "version/revision")); + + p_list->push_back(PropertyInfo(Variant::BOOL, "orientation/landscape")); + p_list->push_back(PropertyInfo(Variant::BOOL, "orientation/portrait")); + p_list->push_back(PropertyInfo(Variant::BOOL, "orientation/landscape_flipped")); + p_list->push_back(PropertyInfo(Variant::BOOL, "orientation/portrait_flipped")); + + p_list->push_back(PropertyInfo(Variant::STRING, "images/background_color")); + p_list->push_back(PropertyInfo(Variant::OBJECT, "images/store_logo", PROPERTY_HINT_RESOURCE_TYPE, "ImageTexture")); + p_list->push_back(PropertyInfo(Variant::OBJECT, "images/square44x44_logo", PROPERTY_HINT_RESOURCE_TYPE, "ImageTexture")); + p_list->push_back(PropertyInfo(Variant::OBJECT, "images/square71x71_logo", PROPERTY_HINT_RESOURCE_TYPE, "ImageTexture")); + p_list->push_back(PropertyInfo(Variant::OBJECT, "images/square150x150_logo", PROPERTY_HINT_RESOURCE_TYPE, "ImageTexture")); + p_list->push_back(PropertyInfo(Variant::OBJECT, "images/square310x310_logo", PROPERTY_HINT_RESOURCE_TYPE, "ImageTexture")); + p_list->push_back(PropertyInfo(Variant::OBJECT, "images/wide310x150_logo", PROPERTY_HINT_RESOURCE_TYPE, "ImageTexture")); + p_list->push_back(PropertyInfo(Variant::OBJECT, "images/splash_screen", PROPERTY_HINT_RESOURCE_TYPE, "ImageTexture")); + + p_list->push_back(PropertyInfo(Variant::BOOL, "tiles/show_name_on_square150x150")); + p_list->push_back(PropertyInfo(Variant::BOOL, "tiles/show_name_on_wide310x150")); + p_list->push_back(PropertyInfo(Variant::BOOL, "tiles/show_name_on_square310x310")); + +#if 0 // Signing does not work :( disabling for now + p_list->push_back(PropertyInfo(Variant::BOOL, "signing/sign")); + p_list->push_back(PropertyInfo(Variant::STRING, "signing/certificate_file", PROPERTY_HINT_GLOBAL_FILE, "pfx")); + p_list->push_back(PropertyInfo(Variant::STRING, "signing/certificate_password")); +#endif + + // Capabilites + const char **basic = uwp_capabilities; + while (*basic) { + p_list->push_back(PropertyInfo(Variant::BOOL, "capabilities/" + String(*basic).camelcase_to_underscore(false))); + basic++; + } + + const char **uap = uwp_uap_capabilities; + while (*uap) { + p_list->push_back(PropertyInfo(Variant::BOOL, "capabilities/" + String(*uap).camelcase_to_underscore(false))); + uap++; + } + + const char **device = uwp_device_capabilites; + while (*device) { + p_list->push_back(PropertyInfo(Variant::BOOL, "capabilities/" + String(*device).camelcase_to_underscore(false))); + device++; + } + +} + +bool EditorExportPlatformWinrt::can_export(String * r_error) const { + + String err; + bool valid = true; + + if (!exists_export_template("winrt_x86_debug.zip") || !exists_export_template("winrt_x86_release.zip") + || !exists_export_template("winrt_arm_debug.zip") || !exists_export_template("winrt_arm_release.zip") + || !exists_export_template("winrt_x64_debug.zip") || !exists_export_template("winrt_x64_release.zip")) { + valid = false; + err += TTR("No export templates found.\nDownload and install export templates.") + "\n"; + } + + if (custom_debug_package != "" && !FileAccess::exists(custom_debug_package)) { + valid = false; + err += TTR("Custom debug package not found.") + "\n"; + } + + if (custom_release_package != "" && !FileAccess::exists(custom_release_package)) { + valid = false; + err += TTR("Custom release package not found.") + "\n"; + } + + if (!_valid_resource_name(unique_name)) { + valid = false; + err += TTR("Invalid unique name.") + "\n"; + } + + if (!_valid_guid(product_guid)) { + valid = false; + err += TTR("Invalid product GUID.") + "\n"; + } + + if (!_valid_guid(publisher_guid)) { + valid = false; + err += TTR("Invalid publisher GUID.") + "\n"; + } + + if (!_valid_bgcolor(background_color)) { + valid = false; + err += TTR("Invalid background color.") + "\n"; + } + + if (store_logo.is_valid() && !_valid_image(store_logo, 50, 50)) { + valid = false; + err += TTR("Invalid Store Logo image dimensions (should be 50x50).") + "\n"; + } + + if (square44.is_valid() && !_valid_image(square44, 44, 44)) { + valid = false; + err += TTR("Invalid square 44x44 logo image dimensions (should be 44x44).") + "\n"; + } + + if (square71.is_valid() && !_valid_image(square71, 71, 71)) { + valid = false; + err += TTR("Invalid square 71x71 logo image dimensions (should be 71x71).") + "\n"; + } + + if (square150.is_valid() && !_valid_image(square150, 150, 150)) { + valid = false; + err += TTR("Invalid square 150x150 logo image dimensions (should be 150x150).") + "\n"; + } + + if (square310.is_valid() && !_valid_image(square310, 310, 310)) { + valid = false; + err += TTR("Invalid square 310x310 logo image dimensions (should be 310x310).") + "\n"; + } + + if (wide310.is_valid() && !_valid_image(wide310, 310, 150)) { + valid = false; + err += TTR("Invalid wide 310x150 logo image dimensions (should be 310x150).") + "\n"; + } + + if (splash.is_valid() && !_valid_image(splash, 620, 300)) { + valid = false; + err += TTR("Invalid splash screen image dimensions (should be 620x300).") + "\n"; + } + + if (r_error) + *r_error = err; + + return valid; +} + +Error EditorExportPlatformWinrt::export_project(const String & p_path, bool p_debug, int p_flags) { + + String src_appx; + + EditorProgress ep("export", "Exporting for Windows Universal", 7); + + if (is_debug) + src_appx = custom_debug_package; + else + src_appx = custom_release_package; + + if (src_appx == "") { + String err; + if (p_debug) { + switch (arch) { + case X86: { + src_appx = find_export_template("winrt_x86_debug.zip", &err); + break; + } + case X64: { + src_appx = find_export_template("winrt_x64_debug.zip", &err); + break; + } + case ARM: { + src_appx = find_export_template("winrt_arm_debug.zip", &err); + break; + } + } + } else { + switch (arch) { + case X86: { + src_appx = find_export_template("winrt_x86_release.zip", &err); + break; + } + case X64: { + src_appx = find_export_template("winrt_x64_release.zip", &err); + break; + } + case ARM: { + src_appx = find_export_template("winrt_arm_release.zip", &err); + break; + } + } + } + if (src_appx == "") { + EditorNode::add_io_error(err); + return ERR_FILE_NOT_FOUND; + } + } + + Error err = OK; + + FileAccess *fa_pack = FileAccess::open(p_path, FileAccess::WRITE, &err); + ERR_FAIL_COND_V(err != OK, ERR_CANT_CREATE); + + AppxPackager packager; + packager.init(fa_pack, sign_package ? AppxPackager::SIGN : AppxPackager::DONT_SIGN, certificate_path, certificate_pass); + + FileAccess *src_f = NULL; + zlib_filefunc_def io = zipio_create_io_from_file(&src_f); + + ep.step("Creating package...", 0); + + unzFile pkg = unzOpen2(src_appx.utf8().get_data(), &io); + + if (!pkg) { + + EditorNode::add_io_error("Could not find template appx to export:\n" + src_appx); + return ERR_FILE_NOT_FOUND; + } + + int ret = unzGoToFirstFile(pkg); + + ep.step("Copying template files...", 1); + + EditorNode::progress_add_task("template_files", "Template files", 100); + packager.set_progress_task("template_files"); + + int template_files_amount = 9; + int template_file_no = 1; + + while (ret == UNZ_OK) { + + // get file name + unz_file_info info; + char fname[16834]; + ret = unzGetCurrentFileInfo(pkg, &info, fname, 16834, NULL, 0, NULL, 0); + + String path = fname; + + if (path.ends_with("/")) { + // Ignore directories + ret = unzGoToNextFile(pkg); + continue; + } + + Vector<uint8_t> data; + bool do_read = true; + + if (path.begins_with("Assets/")) { + + path = path.replace(".scale-100", ""); + + data = _get_image_data(path); + if (data.size() > 0) do_read = false; + } + + //read + if (do_read) { + data.resize(info.uncompressed_size); + unzOpenCurrentFile(pkg); + unzReadCurrentFile(pkg, data.ptr(), data.size()); + unzCloseCurrentFile(pkg); + } + + if (path == "AppxManifest.xml") { + + data = _fix_manifest(data, p_flags&(EXPORT_DUMB_CLIENT | EXPORT_REMOTE_DEBUG)); + } + + print_line("ADDING: " + path); + + packager.add_file(path, data.ptr(), data.size(), template_file_no++, template_files_amount, _should_compress_asset(path, data)); + + ret = unzGoToNextFile(pkg); + } + + EditorNode::progress_end_task("template_files"); + + ep.step("Creating command line...", 2); + + Vector<String> cl = cmdline.strip_edges().split(" "); + for (int i = 0;i<cl.size();i++) { + if (cl[i].strip_edges().length() == 0) { + cl.remove(i); + i--; + } + } + + if (!(p_flags & EXPORT_DUMB_CLIENT)) { + cl.push_back("-path"); + cl.push_back("game"); + } + + gen_export_flags(cl, p_flags); + + // Command line file + Vector<uint8_t> clf; + + // Argc + clf.resize(4); + encode_uint32(cl.size(), clf.ptr()); + + for (int i = 0; i < cl.size(); i++) { + + CharString txt = cl[i].utf8(); + int base = clf.size(); + clf.resize(base + 4 + txt.length()); + encode_uint32(txt.length(), &clf[base]); + copymem(&clf[base + 4], txt.ptr(), txt.length()); + print_line(itos(i) + " param: " + cl[i]); + } + + packager.add_file("__cl__.cl", clf.ptr(), clf.size(), -1, -1, false); + + ep.step("Adding project files...", 3); + + EditorNode::progress_add_task("project_files", "Project Files", 100); + packager.set_progress_task("project_files"); + + err = export_project_files(save_appx_file, &packager, false); + + EditorNode::progress_end_task("project_files"); + + ep.step("Closing package...", 7); + + unzClose(pkg); + + packager.finish(); + + return OK; +} + +EditorExportPlatformWinrt::EditorExportPlatformWinrt() { + + Image img(_winrt_logo); + logo = Ref<ImageTexture>(memnew(ImageTexture)); + logo->create_from_image(img); + + is_debug = true; + + custom_release_package = ""; + custom_debug_package = ""; + + arch = X86; + + display_name = ""; + short_name = "Godot"; + unique_name = "Godot.Engine"; + description = "Godot Engine"; + publisher = "CN=GodotEngine"; + publisher_display_name = "Godot Engine"; + + product_guid = "00000000-0000-0000-0000-000000000000"; + publisher_guid = "00000000-0000-0000-0000-000000000000"; + + version_major = 1; + version_minor = 0; + version_build = 0; + version_revision = 0; + + orientation_landscape = true; + orientation_portrait = true; + orientation_landscape_flipped = true; + orientation_portrait_flipped = true; + + background_color = "transparent"; + + name_on_square150 = false; + name_on_square310 = false; + name_on_wide = false; + + sign_package = false; + certificate_path = ""; + certificate_pass = ""; +} + +EditorExportPlatformWinrt::~EditorExportPlatformWinrt() {} + + +void register_winrt_exporter() { + + Ref<EditorExportPlatformWinrt> exporter = Ref<EditorExportPlatformWinrt>(memnew(EditorExportPlatformWinrt)); + EditorImportExport::get_singleton()->add_export_platform(exporter); +} diff --git a/platform/winrt/export/export.h b/platform/winrt/export/export.h new file mode 100644 index 0000000000..278d6d23cd --- /dev/null +++ b/platform/winrt/export/export.h @@ -0,0 +1,29 @@ +/*************************************************************************/ +/* export.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. */ +/*************************************************************************/ +void register_winrt_exporter(); diff --git a/platform/winrt/gl_context_egl.cpp b/platform/winrt/gl_context_egl.cpp index 12ccd404a9..f7b514b3c0 100644 --- a/platform/winrt/gl_context_egl.cpp +++ b/platform/winrt/gl_context_egl.cpp @@ -103,9 +103,22 @@ Error ContextEGL::initialize() { const EGLint displayAttributes[] = { - EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, + /*EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, 9, EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE, 3, + EGL_NONE,*/ + // These are the default display attributes, used to request ANGLE's D3D11 renderer. + // eglInitialize will only succeed with these attributes if the hardware supports D3D11 Feature Level 10_0+. + EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, + + // EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER is an optimization that can have large performance benefits on mobile devices. + // Its syntax is subject to change, though. Please update your Visual Studio templates if you experience compilation issues with it. + //EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE, + + // EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE is an option that enables ANGLE to automatically call + // the IDXGIDevice3::Trim method on behalf of the application when it gets suspended. + // Calling IDXGIDevice3::Trim when an application is suspended is a Windows Store application certification requirement. + EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE, EGL_NONE, }; diff --git a/platform/winrt/gl_context_egl.h b/platform/winrt/gl_context_egl.h index 68dcdd5035..8124c2903d 100644 --- a/platform/winrt/gl_context_egl.h +++ b/platform/winrt/gl_context_egl.h @@ -49,6 +49,8 @@ class ContextEGL : public ContextGL { EGLint width; EGLint height; + bool vsync; + public: virtual void release_current(); @@ -59,6 +61,9 @@ public: virtual int get_window_height(); virtual void swap_buffers(); + void set_use_vsync(bool use) { vsync = use; } + bool is_using_vsync() const { return vsync; } + virtual Error initialize(); void reset(); diff --git a/platform/winrt/include/EGL/egl.h b/platform/winrt/include/EGL/egl.h deleted file mode 100644 index 12590a0e20..0000000000 --- a/platform/winrt/include/EGL/egl.h +++ /dev/null @@ -1,298 +0,0 @@ -#ifndef __egl_h_ -#define __egl_h_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2013-2014 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are 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 Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* -** This header is generated from the Khronos OpenGL / OpenGL ES XML -** API Registry. The current version of the Registry, generator scripts -** used to make the header, and the header can be found at -** http://www.opengl.org/registry/ -** -** Khronos $Revision: 27018 $ on $Date: 2014-06-10 08:06:12 -0700 (Tue, 10 Jun 2014) $ -*/ - -#include <EGL/eglplatform.h> - -/* Generated on date 20140610 */ - -/* Generated C header for: - * API: egl - * Versions considered: .* - * Versions emitted: .* - * Default extensions included: None - * Additional extensions included: _nomatch_^ - * Extensions removed: _nomatch_^ - */ - -#ifndef EGL_VERSION_1_0 -#define EGL_VERSION_1_0 1 -typedef unsigned int EGLBoolean; -typedef void *EGLDisplay; -#include <KHR/khrplatform.h> -#include <EGL/eglplatform.h> -typedef void *EGLConfig; -typedef void *EGLSurface; -typedef void *EGLContext; -typedef void (*__eglMustCastToProperFunctionPointerType)(void); -#define EGL_ALPHA_SIZE 0x3021 -#define EGL_BAD_ACCESS 0x3002 -#define EGL_BAD_ALLOC 0x3003 -#define EGL_BAD_ATTRIBUTE 0x3004 -#define EGL_BAD_CONFIG 0x3005 -#define EGL_BAD_CONTEXT 0x3006 -#define EGL_BAD_CURRENT_SURFACE 0x3007 -#define EGL_BAD_DISPLAY 0x3008 -#define EGL_BAD_MATCH 0x3009 -#define EGL_BAD_NATIVE_PIXMAP 0x300A -#define EGL_BAD_NATIVE_WINDOW 0x300B -#define EGL_BAD_PARAMETER 0x300C -#define EGL_BAD_SURFACE 0x300D -#define EGL_BLUE_SIZE 0x3022 -#define EGL_BUFFER_SIZE 0x3020 -#define EGL_CONFIG_CAVEAT 0x3027 -#define EGL_CONFIG_ID 0x3028 -#define EGL_CORE_NATIVE_ENGINE 0x305B -#define EGL_DEPTH_SIZE 0x3025 -#define EGL_DONT_CARE ((EGLint)-1) -#define EGL_DRAW 0x3059 -#define EGL_EXTENSIONS 0x3055 -#define EGL_FALSE 0 -#define EGL_GREEN_SIZE 0x3023 -#define EGL_HEIGHT 0x3056 -#define EGL_LARGEST_PBUFFER 0x3058 -#define EGL_LEVEL 0x3029 -#define EGL_MAX_PBUFFER_HEIGHT 0x302A -#define EGL_MAX_PBUFFER_PIXELS 0x302B -#define EGL_MAX_PBUFFER_WIDTH 0x302C -#define EGL_NATIVE_RENDERABLE 0x302D -#define EGL_NATIVE_VISUAL_ID 0x302E -#define EGL_NATIVE_VISUAL_TYPE 0x302F -#define EGL_NONE 0x3038 -#define EGL_NON_CONFORMANT_CONFIG 0x3051 -#define EGL_NOT_INITIALIZED 0x3001 -#define EGL_NO_CONTEXT ((EGLContext)0) -#define EGL_NO_DISPLAY ((EGLDisplay)0) -#define EGL_NO_SURFACE ((EGLSurface)0) -#define EGL_PBUFFER_BIT 0x0001 -#define EGL_PIXMAP_BIT 0x0002 -#define EGL_READ 0x305A -#define EGL_RED_SIZE 0x3024 -#define EGL_SAMPLES 0x3031 -#define EGL_SAMPLE_BUFFERS 0x3032 -#define EGL_SLOW_CONFIG 0x3050 -#define EGL_STENCIL_SIZE 0x3026 -#define EGL_SUCCESS 0x3000 -#define EGL_SURFACE_TYPE 0x3033 -#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 -#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 -#define EGL_TRANSPARENT_RED_VALUE 0x3037 -#define EGL_TRANSPARENT_RGB 0x3052 -#define EGL_TRANSPARENT_TYPE 0x3034 -#define EGL_TRUE 1 -#define EGL_VENDOR 0x3053 -#define EGL_VERSION 0x3054 -#define EGL_WIDTH 0x3057 -#define EGL_WINDOW_BIT 0x0004 -EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); -EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); -EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface); -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); -EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void); -EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw); -EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id); -EGLAPI EGLint EGLAPIENTRY eglGetError (void); -EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname); -EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor); -EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value); -EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name); -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value); -EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface); -EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy); -EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void); -EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine); -#endif /* EGL_VERSION_1_0 */ - -#ifndef EGL_VERSION_1_1 -#define EGL_VERSION_1_1 1 -#define EGL_BACK_BUFFER 0x3084 -#define EGL_BIND_TO_TEXTURE_RGB 0x3039 -#define EGL_BIND_TO_TEXTURE_RGBA 0x303A -#define EGL_CONTEXT_LOST 0x300E -#define EGL_MIN_SWAP_INTERVAL 0x303B -#define EGL_MAX_SWAP_INTERVAL 0x303C -#define EGL_MIPMAP_TEXTURE 0x3082 -#define EGL_MIPMAP_LEVEL 0x3083 -#define EGL_NO_TEXTURE 0x305C -#define EGL_TEXTURE_2D 0x305F -#define EGL_TEXTURE_FORMAT 0x3080 -#define EGL_TEXTURE_RGB 0x305D -#define EGL_TEXTURE_RGBA 0x305E -#define EGL_TEXTURE_TARGET 0x3081 -EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer); -EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer); -EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); -EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval); -#endif /* EGL_VERSION_1_1 */ - -#ifndef EGL_VERSION_1_2 -#define EGL_VERSION_1_2 1 -typedef unsigned int EGLenum; -typedef void *EGLClientBuffer; -#define EGL_ALPHA_FORMAT 0x3088 -#define EGL_ALPHA_FORMAT_NONPRE 0x308B -#define EGL_ALPHA_FORMAT_PRE 0x308C -#define EGL_ALPHA_MASK_SIZE 0x303E -#define EGL_BUFFER_PRESERVED 0x3094 -#define EGL_BUFFER_DESTROYED 0x3095 -#define EGL_CLIENT_APIS 0x308D -#define EGL_COLORSPACE 0x3087 -#define EGL_COLORSPACE_sRGB 0x3089 -#define EGL_COLORSPACE_LINEAR 0x308A -#define EGL_COLOR_BUFFER_TYPE 0x303F -#define EGL_CONTEXT_CLIENT_TYPE 0x3097 -#define EGL_DISPLAY_SCALING 10000 -#define EGL_HORIZONTAL_RESOLUTION 0x3090 -#define EGL_LUMINANCE_BUFFER 0x308F -#define EGL_LUMINANCE_SIZE 0x303D -#define EGL_OPENGL_ES_BIT 0x0001 -#define EGL_OPENVG_BIT 0x0002 -#define EGL_OPENGL_ES_API 0x30A0 -#define EGL_OPENVG_API 0x30A1 -#define EGL_OPENVG_IMAGE 0x3096 -#define EGL_PIXEL_ASPECT_RATIO 0x3092 -#define EGL_RENDERABLE_TYPE 0x3040 -#define EGL_RENDER_BUFFER 0x3086 -#define EGL_RGB_BUFFER 0x308E -#define EGL_SINGLE_BUFFER 0x3085 -#define EGL_SWAP_BEHAVIOR 0x3093 -#define EGL_UNKNOWN ((EGLint)-1) -#define EGL_VERTICAL_RESOLUTION 0x3091 -EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api); -EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void); -EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void); -#endif /* EGL_VERSION_1_2 */ - -#ifndef EGL_VERSION_1_3 -#define EGL_VERSION_1_3 1 -#define EGL_CONFORMANT 0x3042 -#define EGL_CONTEXT_CLIENT_VERSION 0x3098 -#define EGL_MATCH_NATIVE_PIXMAP 0x3041 -#define EGL_OPENGL_ES2_BIT 0x0004 -#define EGL_VG_ALPHA_FORMAT 0x3088 -#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B -#define EGL_VG_ALPHA_FORMAT_PRE 0x308C -#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 -#define EGL_VG_COLORSPACE 0x3087 -#define EGL_VG_COLORSPACE_sRGB 0x3089 -#define EGL_VG_COLORSPACE_LINEAR 0x308A -#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 -#endif /* EGL_VERSION_1_3 */ - -#ifndef EGL_VERSION_1_4 -#define EGL_VERSION_1_4 1 -#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) -#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 -#define EGL_MULTISAMPLE_RESOLVE 0x3099 -#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A -#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B -#define EGL_OPENGL_API 0x30A2 -#define EGL_OPENGL_BIT 0x0008 -#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 -EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void); -#endif /* EGL_VERSION_1_4 */ - -#ifndef EGL_VERSION_1_5 -#define EGL_VERSION_1_5 1 -typedef void *EGLSync; -typedef intptr_t EGLAttrib; -typedef khronos_utime_nanoseconds_t EGLTime; -#define EGL_CONTEXT_MAJOR_VERSION 0x3098 -#define EGL_CONTEXT_MINOR_VERSION 0x30FB -#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD -#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD -#define EGL_NO_RESET_NOTIFICATION 0x31BE -#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF -#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001 -#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0 -#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1 -#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2 -#define EGL_OPENGL_ES3_BIT 0x00000040 -#define EGL_CL_EVENT_HANDLE 0x309C -#define EGL_SYNC_CL_EVENT 0x30FE -#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF -#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0 -#define EGL_SYNC_TYPE 0x30F7 -#define EGL_SYNC_STATUS 0x30F1 -#define EGL_SYNC_CONDITION 0x30F8 -#define EGL_SIGNALED 0x30F2 -#define EGL_UNSIGNALED 0x30F3 -#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001 -#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull -#define EGL_TIMEOUT_EXPIRED 0x30F5 -#define EGL_CONDITION_SATISFIED 0x30F6 -#define EGL_NO_SYNC ((EGLSync)0) -#define EGL_SYNC_FENCE 0x30F9 -#define EGL_GL_COLORSPACE 0x309D -#define EGL_GL_COLORSPACE_SRGB 0x3089 -#define EGL_GL_COLORSPACE_LINEAR 0x308A -#define EGL_GL_RENDERBUFFER 0x30B9 -#define EGL_GL_TEXTURE_2D 0x30B1 -#define EGL_GL_TEXTURE_LEVEL 0x30BC -#define EGL_GL_TEXTURE_3D 0x30B2 -#define EGL_GL_TEXTURE_ZOFFSET 0x30BD -#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3 -#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4 -#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5 -#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6 -#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7 -#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8 -EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync); -EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout); -EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value); -EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags); -#endif /* EGL_VERSION_1_5 */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/platform/winrt/include/EGL/eglext.h b/platform/winrt/include/EGL/eglext.h deleted file mode 100644 index 05b2555f31..0000000000 --- a/platform/winrt/include/EGL/eglext.h +++ /dev/null @@ -1,766 +0,0 @@ -#ifndef __eglext_h_ -#define __eglext_h_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2013-2014 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are 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 Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ -/* -** This header is generated from the Khronos OpenGL / OpenGL ES XML -** API Registry. The current version of the Registry, generator scripts -** used to make the header, and the header can be found at -** http://www.opengl.org/registry/ -** -** Khronos $Revision: 27018 $ on $Date: 2014-06-10 08:06:12 -0700 (Tue, 10 Jun 2014) $ -*/ - -#include <EGL/eglplatform.h> - -#define EGL_EGLEXT_VERSION 20140610 - -/* Generated C header for: - * API: egl - * Versions considered: .* - * Versions emitted: _nomatch_^ - * Default extensions included: egl - * Additional extensions included: _nomatch_^ - * Extensions removed: _nomatch_^ - */ - -#ifndef EGL_KHR_cl_event -#define EGL_KHR_cl_event 1 -#define EGL_CL_EVENT_HANDLE_KHR 0x309C -#define EGL_SYNC_CL_EVENT_KHR 0x30FE -#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF -#endif /* EGL_KHR_cl_event */ - -#ifndef EGL_KHR_cl_event2 -#define EGL_KHR_cl_event2 1 -typedef void *EGLSyncKHR; -typedef intptr_t EGLAttribKHR; -typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list); -#endif -#endif /* EGL_KHR_cl_event2 */ - -#ifndef EGL_KHR_client_get_all_proc_addresses -#define EGL_KHR_client_get_all_proc_addresses 1 -#endif /* EGL_KHR_client_get_all_proc_addresses */ - -#ifndef EGL_KHR_config_attribs -#define EGL_KHR_config_attribs 1 -#define EGL_CONFORMANT_KHR 0x3042 -#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 -#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 -#endif /* EGL_KHR_config_attribs */ - -#ifndef EGL_KHR_create_context -#define EGL_KHR_create_context 1 -#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098 -#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB -#define EGL_CONTEXT_FLAGS_KHR 0x30FC -#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD -#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD -#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE -#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF -#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 -#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 -#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 -#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 -#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 -#define EGL_OPENGL_ES3_BIT_KHR 0x00000040 -#endif /* EGL_KHR_create_context */ - -#ifndef EGL_KHR_fence_sync -#define EGL_KHR_fence_sync 1 -#ifdef KHRONOS_SUPPORT_INT64 -#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 -#define EGL_SYNC_CONDITION_KHR 0x30F8 -#define EGL_SYNC_FENCE_KHR 0x30F9 -#endif /* KHRONOS_SUPPORT_INT64 */ -#endif /* EGL_KHR_fence_sync */ - -#ifndef EGL_KHR_get_all_proc_addresses -#define EGL_KHR_get_all_proc_addresses 1 -#endif /* EGL_KHR_get_all_proc_addresses */ - -#ifndef EGL_KHR_gl_colorspace -#define EGL_KHR_gl_colorspace 1 -#define EGL_GL_COLORSPACE_KHR 0x309D -#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089 -#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A -#endif /* EGL_KHR_gl_colorspace */ - -#ifndef EGL_KHR_gl_renderbuffer_image -#define EGL_KHR_gl_renderbuffer_image 1 -#define EGL_GL_RENDERBUFFER_KHR 0x30B9 -#endif /* EGL_KHR_gl_renderbuffer_image */ - -#ifndef EGL_KHR_gl_texture_2D_image -#define EGL_KHR_gl_texture_2D_image 1 -#define EGL_GL_TEXTURE_2D_KHR 0x30B1 -#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC -#endif /* EGL_KHR_gl_texture_2D_image */ - -#ifndef EGL_KHR_gl_texture_3D_image -#define EGL_KHR_gl_texture_3D_image 1 -#define EGL_GL_TEXTURE_3D_KHR 0x30B2 -#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD -#endif /* EGL_KHR_gl_texture_3D_image */ - -#ifndef EGL_KHR_gl_texture_cubemap_image -#define EGL_KHR_gl_texture_cubemap_image 1 -#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 -#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 -#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 -#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 -#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 -#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 -#endif /* EGL_KHR_gl_texture_cubemap_image */ - -#ifndef EGL_KHR_image -#define EGL_KHR_image 1 -typedef void *EGLImageKHR; -#define EGL_NATIVE_PIXMAP_KHR 0x30B0 -#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) -typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); -#endif -#endif /* EGL_KHR_image */ - -#ifndef EGL_KHR_image_base -#define EGL_KHR_image_base 1 -#define EGL_IMAGE_PRESERVED_KHR 0x30D2 -#endif /* EGL_KHR_image_base */ - -#ifndef EGL_KHR_image_pixmap -#define EGL_KHR_image_pixmap 1 -#endif /* EGL_KHR_image_pixmap */ - -#ifndef EGL_KHR_lock_surface -#define EGL_KHR_lock_surface 1 -#define EGL_READ_SURFACE_BIT_KHR 0x0001 -#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 -#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 -#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 -#define EGL_MATCH_FORMAT_KHR 0x3043 -#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 -#define EGL_FORMAT_RGB_565_KHR 0x30C1 -#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 -#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 -#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 -#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 -#define EGL_BITMAP_POINTER_KHR 0x30C6 -#define EGL_BITMAP_PITCH_KHR 0x30C7 -#define EGL_BITMAP_ORIGIN_KHR 0x30C8 -#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 -#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA -#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB -#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC -#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD -#define EGL_LOWER_LEFT_KHR 0x30CE -#define EGL_UPPER_LEFT_KHR 0x30CF -typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface); -#endif -#endif /* EGL_KHR_lock_surface */ - -#ifndef EGL_KHR_lock_surface2 -#define EGL_KHR_lock_surface2 1 -#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 -#endif /* EGL_KHR_lock_surface2 */ - -#ifndef EGL_KHR_lock_surface3 -#define EGL_KHR_lock_surface3 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value); -#endif -#endif /* EGL_KHR_lock_surface3 */ - -#ifndef EGL_KHR_platform_android -#define EGL_KHR_platform_android 1 -#define EGL_PLATFORM_ANDROID_KHR 0x3141 -#endif /* EGL_KHR_platform_android */ - -#ifndef EGL_KHR_platform_gbm -#define EGL_KHR_platform_gbm 1 -#define EGL_PLATFORM_GBM_KHR 0x31D7 -#endif /* EGL_KHR_platform_gbm */ - -#ifndef EGL_KHR_platform_wayland -#define EGL_KHR_platform_wayland 1 -#define EGL_PLATFORM_WAYLAND_KHR 0x31D8 -#endif /* EGL_KHR_platform_wayland */ - -#ifndef EGL_KHR_platform_x11 -#define EGL_KHR_platform_x11 1 -#define EGL_PLATFORM_X11_KHR 0x31D5 -#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6 -#endif /* EGL_KHR_platform_x11 */ - -#ifndef EGL_KHR_reusable_sync -#define EGL_KHR_reusable_sync 1 -typedef khronos_utime_nanoseconds_t EGLTimeKHR; -#ifdef KHRONOS_SUPPORT_INT64 -#define EGL_SYNC_STATUS_KHR 0x30F1 -#define EGL_SIGNALED_KHR 0x30F2 -#define EGL_UNSIGNALED_KHR 0x30F3 -#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 -#define EGL_CONDITION_SATISFIED_KHR 0x30F6 -#define EGL_SYNC_TYPE_KHR 0x30F7 -#define EGL_SYNC_REUSABLE_KHR 0x30FA -#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 -#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull -#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) -typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); -typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync); -EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); -EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); -EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); -#endif -#endif /* KHRONOS_SUPPORT_INT64 */ -#endif /* EGL_KHR_reusable_sync */ - -#ifndef EGL_KHR_stream -#define EGL_KHR_stream 1 -typedef void *EGLStreamKHR; -typedef khronos_uint64_t EGLuint64KHR; -#ifdef KHRONOS_SUPPORT_INT64 -#define EGL_NO_STREAM_KHR ((EGLStreamKHR)0) -#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210 -#define EGL_PRODUCER_FRAME_KHR 0x3212 -#define EGL_CONSUMER_FRAME_KHR 0x3213 -#define EGL_STREAM_STATE_KHR 0x3214 -#define EGL_STREAM_STATE_CREATED_KHR 0x3215 -#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 -#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 -#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218 -#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219 -#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A -#define EGL_BAD_STREAM_KHR 0x321B -#define EGL_BAD_STATE_KHR 0x321C -typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); -#endif -#endif /* KHRONOS_SUPPORT_INT64 */ -#endif /* EGL_KHR_stream */ - -#ifndef EGL_KHR_stream_consumer_gltexture -#define EGL_KHR_stream_consumer_gltexture 1 -#ifdef EGL_KHR_stream -#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream); -#endif -#endif /* EGL_KHR_stream */ -#endif /* EGL_KHR_stream_consumer_gltexture */ - -#ifndef EGL_KHR_stream_cross_process_fd -#define EGL_KHR_stream_cross_process_fd 1 -typedef int EGLNativeFileDescriptorKHR; -#ifdef EGL_KHR_stream -#define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1)) -typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); -#endif -#endif /* EGL_KHR_stream */ -#endif /* EGL_KHR_stream_cross_process_fd */ - -#ifndef EGL_KHR_stream_fifo -#define EGL_KHR_stream_fifo 1 -#ifdef EGL_KHR_stream -#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC -#define EGL_STREAM_TIME_NOW_KHR 0x31FD -#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE -#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); -#endif -#endif /* EGL_KHR_stream */ -#endif /* EGL_KHR_stream_fifo */ - -#ifndef EGL_KHR_stream_producer_aldatalocator -#define EGL_KHR_stream_producer_aldatalocator 1 -#ifdef EGL_KHR_stream -#endif /* EGL_KHR_stream */ -#endif /* EGL_KHR_stream_producer_aldatalocator */ - -#ifndef EGL_KHR_stream_producer_eglsurface -#define EGL_KHR_stream_producer_eglsurface 1 -#ifdef EGL_KHR_stream -#define EGL_STREAM_BIT_KHR 0x0800 -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); -#endif -#endif /* EGL_KHR_stream */ -#endif /* EGL_KHR_stream_producer_eglsurface */ - -#ifndef EGL_KHR_surfaceless_context -#define EGL_KHR_surfaceless_context 1 -#endif /* EGL_KHR_surfaceless_context */ - -#ifndef EGL_KHR_vg_parent_image -#define EGL_KHR_vg_parent_image 1 -#define EGL_VG_PARENT_IMAGE_KHR 0x30BA -#endif /* EGL_KHR_vg_parent_image */ - -#ifndef EGL_KHR_wait_sync -#define EGL_KHR_wait_sync 1 -typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); -#endif -#endif /* EGL_KHR_wait_sync */ - -#ifndef EGL_ANDROID_blob_cache -#define EGL_ANDROID_blob_cache 1 -typedef khronos_ssize_t EGLsizeiANDROID; -typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); -typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); -typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); -#endif -#endif /* EGL_ANDROID_blob_cache */ - -#ifndef EGL_ANDROID_framebuffer_target -#define EGL_ANDROID_framebuffer_target 1 -#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147 -#endif /* EGL_ANDROID_framebuffer_target */ - -#ifndef EGL_ANDROID_image_native_buffer -#define EGL_ANDROID_image_native_buffer 1 -#define EGL_NATIVE_BUFFER_ANDROID 0x3140 -#endif /* EGL_ANDROID_image_native_buffer */ - -#ifndef EGL_ANDROID_native_fence_sync -#define EGL_ANDROID_native_fence_sync 1 -#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 -#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145 -#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146 -#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1 -typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync); -#endif -#endif /* EGL_ANDROID_native_fence_sync */ - -#ifndef EGL_ANDROID_recordable -#define EGL_ANDROID_recordable 1 -#define EGL_RECORDABLE_ANDROID 0x3142 -#endif /* EGL_ANDROID_recordable */ - -#ifndef EGL_ANGLE_d3d_share_handle_client_buffer -#define EGL_ANGLE_d3d_share_handle_client_buffer 1 -#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200 -#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */ - -#ifndef EGL_ANGLE_window_fixed_size -#define EGL_ANGLE_window_fixed_size 1 -#define EGL_FIXED_SIZE_ANGLE 0x3201 -#endif /* EGL_ANGLE_window_fixed_size */ - -#ifndef EGL_ANGLE_query_surface_pointer -#define EGL_ANGLE_query_surface_pointer 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); -#endif -#endif /* EGL_ANGLE_query_surface_pointer */ - -#ifndef EGL_ANGLE_software_display -#define EGL_ANGLE_software_display 1 -#define EGL_SOFTWARE_DISPLAY_ANGLE ((EGLNativeDisplayType)-1) -#endif /* EGL_ANGLE_software_display */ - -#ifndef EGL_ANGLE_direct3d_display -#define EGL_ANGLE_direct3d_display 1 -#define EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ((EGLNativeDisplayType)-2) -#define EGL_D3D11_ONLY_DISPLAY_ANGLE ((EGLNativeDisplayType)-3) -#endif /* EGL_ANGLE_direct3d_display */ - -#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle -#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1 -#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ - -#ifndef EGL_ANGLE_surface_d3d_render_to_back_buffer -#define EGL_ANGLE_surface_d3d_render_to_back_buffer 1 -#define EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER 0x320B -#define EGL_ANGLE_SURFACE_RENDER_TO_BACK_BUFFER 0x320C -#endif /* EGL_ANGLE_surface_d3d_render_to_back_buffer */ - -#ifndef EGL_ANGLE_platform_angle -#define EGL_ANGLE_platform_angle 1 -#define EGL_PLATFORM_ANGLE_ANGLE 0x3201 -#define EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3202 -#define EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE 0x3203 -#define EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE 0x3204 -#define EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE 0x3205 -#endif /* EGL_ANGLE_platform_angle */ - -#ifndef EGL_ANGLE_platform_angle_d3d -#define EGL_ANGLE_platform_angle_d3d 1 -#define EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE 0x3206 -#define EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3207 -#define EGL_PLATFORM_ANGLE_USE_WARP_ANGLE 0x3208 -#endif /* EGL_ANGLE_platform_angle_d3d */ - -#ifndef EGL_ANGLE_platform_angle_opengl -#define EGL_ANGLE_platform_angle_opengl 1 -#define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x3209 -#define EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE 0x320A -#endif /* EGL_ANGLE_platform_angle_opengl */ - -#ifndef EGL_ARM_pixmap_multisample_discard -#define EGL_ARM_pixmap_multisample_discard 1 -#define EGL_DISCARD_SAMPLES_ARM 0x3286 -#endif /* EGL_ARM_pixmap_multisample_discard */ - -#ifndef EGL_EXT_buffer_age -#define EGL_EXT_buffer_age 1 -#define EGL_BUFFER_AGE_EXT 0x313D -#endif /* EGL_EXT_buffer_age */ - -#ifndef EGL_EXT_client_extensions -#define EGL_EXT_client_extensions 1 -#endif /* EGL_EXT_client_extensions */ - -#ifndef EGL_EXT_create_context_robustness -#define EGL_EXT_create_context_robustness 1 -#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF -#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138 -#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE -#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF -#endif /* EGL_EXT_create_context_robustness */ - -#ifndef EGL_EXT_device_base -#define EGL_EXT_device_base 1 -typedef void *EGLDeviceEXT; -#define EGL_NO_DEVICE_EXT ((EGLDeviceEXT)(0)) -#define EGL_BAD_DEVICE_EXT 0x322B -#define EGL_DEVICE_EXT 0x322C -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value); -typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value); -EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); -#endif -#endif /* EGL_EXT_device_base */ - -#ifndef EGL_EXT_image_dma_buf_import -#define EGL_EXT_image_dma_buf_import 1 -#define EGL_LINUX_DMA_BUF_EXT 0x3270 -#define EGL_LINUX_DRM_FOURCC_EXT 0x3271 -#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 -#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 -#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 -#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 -#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 -#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 -#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 -#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 -#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A -#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B -#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C -#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D -#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E -#define EGL_ITU_REC601_EXT 0x327F -#define EGL_ITU_REC709_EXT 0x3280 -#define EGL_ITU_REC2020_EXT 0x3281 -#define EGL_YUV_FULL_RANGE_EXT 0x3282 -#define EGL_YUV_NARROW_RANGE_EXT 0x3283 -#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284 -#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285 -#endif /* EGL_EXT_image_dma_buf_import */ - -#ifndef EGL_EXT_multiview_window -#define EGL_EXT_multiview_window 1 -#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134 -#endif /* EGL_EXT_multiview_window */ - -#ifndef EGL_EXT_platform_base -#define EGL_EXT_platform_base 1 -typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list); -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); -#endif -#endif /* EGL_EXT_platform_base */ - -#ifndef EGL_EXT_platform_device -#define EGL_EXT_platform_device 1 -#define EGL_PLATFORM_DEVICE_EXT 0x313F -#endif /* EGL_EXT_platform_device */ - -#ifndef EGL_EXT_platform_wayland -#define EGL_EXT_platform_wayland 1 -#define EGL_PLATFORM_WAYLAND_EXT 0x31D8 -#endif /* EGL_EXT_platform_wayland */ - -#ifndef EGL_EXT_platform_x11 -#define EGL_EXT_platform_x11 1 -#define EGL_PLATFORM_X11_EXT 0x31D5 -#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6 -#endif /* EGL_EXT_platform_x11 */ - -#ifndef EGL_EXT_protected_surface -#define EGL_EXT_protected_surface 1 -#define EGL_PROTECTED_CONTENT_EXT 0x32C0 -#endif /* EGL_EXT_protected_surface */ - -#ifndef EGL_EXT_swap_buffers_with_damage -#define EGL_EXT_swap_buffers_with_damage 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); -#endif -#endif /* EGL_EXT_swap_buffers_with_damage */ - -#ifndef EGL_HI_clientpixmap -#define EGL_HI_clientpixmap 1 -struct EGLClientPixmapHI { - void *pData; - EGLint iWidth; - EGLint iHeight; - EGLint iStride; -}; -#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); -#endif -#endif /* EGL_HI_clientpixmap */ - -#ifndef EGL_HI_colorformats -#define EGL_HI_colorformats 1 -#define EGL_COLOR_FORMAT_HI 0x8F70 -#define EGL_COLOR_RGB_HI 0x8F71 -#define EGL_COLOR_RGBA_HI 0x8F72 -#define EGL_COLOR_ARGB_HI 0x8F73 -#endif /* EGL_HI_colorformats */ - -#ifndef EGL_IMG_context_priority -#define EGL_IMG_context_priority 1 -#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 -#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 -#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 -#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 -#endif /* EGL_IMG_context_priority */ - -#ifndef EGL_MESA_drm_image -#define EGL_MESA_drm_image 1 -#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 -#define EGL_DRM_BUFFER_USE_MESA 0x31D1 -#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 -#define EGL_DRM_BUFFER_MESA 0x31D3 -#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 -#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 -#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 -typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); -#endif -#endif /* EGL_MESA_drm_image */ - -#ifndef EGL_MESA_platform_gbm -#define EGL_MESA_platform_gbm 1 -#define EGL_PLATFORM_GBM_MESA 0x31D7 -#endif /* EGL_MESA_platform_gbm */ - -#ifndef EGL_NOK_swap_region -#define EGL_NOK_swap_region 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); -#endif -#endif /* EGL_NOK_swap_region */ - -#ifndef EGL_NOK_swap_region2 -#define EGL_NOK_swap_region2 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects); -#endif -#endif /* EGL_NOK_swap_region2 */ - -#ifndef EGL_NOK_texture_from_pixmap -#define EGL_NOK_texture_from_pixmap 1 -#define EGL_Y_INVERTED_NOK 0x307F -#endif /* EGL_NOK_texture_from_pixmap */ - -#ifndef EGL_NV_3dvision_surface -#define EGL_NV_3dvision_surface 1 -#define EGL_AUTO_STEREO_NV 0x3136 -#endif /* EGL_NV_3dvision_surface */ - -#ifndef EGL_NV_coverage_sample -#define EGL_NV_coverage_sample 1 -#define EGL_COVERAGE_BUFFERS_NV 0x30E0 -#define EGL_COVERAGE_SAMPLES_NV 0x30E1 -#endif /* EGL_NV_coverage_sample */ - -#ifndef EGL_NV_coverage_sample_resolve -#define EGL_NV_coverage_sample_resolve 1 -#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 -#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132 -#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133 -#endif /* EGL_NV_coverage_sample_resolve */ - -#ifndef EGL_NV_depth_nonlinear -#define EGL_NV_depth_nonlinear 1 -#define EGL_DEPTH_ENCODING_NV 0x30E2 -#define EGL_DEPTH_ENCODING_NONE_NV 0 -#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 -#endif /* EGL_NV_depth_nonlinear */ - -#ifndef EGL_NV_native_query -#define EGL_NV_native_query 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); -#endif -#endif /* EGL_NV_native_query */ - -#ifndef EGL_NV_post_convert_rounding -#define EGL_NV_post_convert_rounding 1 -#endif /* EGL_NV_post_convert_rounding */ - -#ifndef EGL_NV_post_sub_buffer -#define EGL_NV_post_sub_buffer 1 -#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE -typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); -#endif -#endif /* EGL_NV_post_sub_buffer */ - -#ifndef EGL_NV_stream_sync -#define EGL_NV_stream_sync 1 -#define EGL_SYNC_NEW_FRAME_NV 0x321F -typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); -#endif -#endif /* EGL_NV_stream_sync */ - -#ifndef EGL_NV_sync -#define EGL_NV_sync 1 -typedef void *EGLSyncNV; -typedef khronos_utime_nanoseconds_t EGLTimeNV; -#ifdef KHRONOS_SUPPORT_INT64 -#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 -#define EGL_SYNC_STATUS_NV 0x30E7 -#define EGL_SIGNALED_NV 0x30E8 -#define EGL_UNSIGNALED_NV 0x30E9 -#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 -#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull -#define EGL_ALREADY_SIGNALED_NV 0x30EA -#define EGL_TIMEOUT_EXPIRED_NV 0x30EB -#define EGL_CONDITION_SATISFIED_NV 0x30EC -#define EGL_SYNC_TYPE_NV 0x30ED -#define EGL_SYNC_CONDITION_NV 0x30EE -#define EGL_SYNC_FENCE_NV 0x30EF -#define EGL_NO_SYNC_NV ((EGLSyncNV)0) -typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); -typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync); -EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync); -EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); -EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); -EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value); -#endif -#endif /* KHRONOS_SUPPORT_INT64 */ -#endif /* EGL_NV_sync */ - -#ifndef EGL_NV_system_time -#define EGL_NV_system_time 1 -typedef khronos_utime_nanoseconds_t EGLuint64NV; -#ifdef KHRONOS_SUPPORT_INT64 -typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); -typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void); -EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void); -#endif -#endif /* KHRONOS_SUPPORT_INT64 */ -#endif /* EGL_NV_system_time */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/platform/winrt/include/EGL/eglplatform.h b/platform/winrt/include/EGL/eglplatform.h deleted file mode 100644 index 71dadc79d5..0000000000 --- a/platform/winrt/include/EGL/eglplatform.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef __eglplatform_h_ -#define __eglplatform_h_ - -/* -** Copyright (c) 2007-2013 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are 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 Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -/* Platform-specific types and definitions for egl.h - * $Revision: 23432 $ on $Date: 2013-10-09 00:57:24 -0700 (Wed, 09 Oct 2013) $ - * - * Adopters may modify khrplatform.h and this file to suit their platform. - * You are encouraged to submit all modifications to the Khronos group so that - * they can be included in future versions of this file. Please submit changes - * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) - * by filing a bug against product "EGL" component "Registry". - */ - -#include <KHR/khrplatform.h> - -/* Macros used in EGL function prototype declarations. - * - * EGL functions should be prototyped as: - * - * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); - * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); - * - * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h - */ - -#ifndef EGLAPI -#define EGLAPI KHRONOS_APICALL -#endif - -#ifndef EGLAPIENTRY -#define EGLAPIENTRY KHRONOS_APIENTRY -#endif -#define EGLAPIENTRYP EGLAPIENTRY* - -/* The types NativeDisplayType, NativeWindowType, and NativePixmapType - * are aliases of window-system-dependent types, such as X Display * or - * Windows Device Context. They must be defined in platform-specific - * code below. The EGL-prefixed versions of Native*Type are the same - * types, renamed in EGL 1.3 so all types in the API start with "EGL". - * - * Khronos STRONGLY RECOMMENDS that you use the default definitions - * provided below, since these changes affect both binary and source - * portability of applications using EGL running on different EGL - * implementations. - */ - -#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN 1 -#endif -#include <windows.h> - -typedef HDC EGLNativeDisplayType; -typedef HBITMAP EGLNativePixmapType; - -#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) /* Windows Store */ -#include <inspectable.h> -typedef IInspectable* EGLNativeWindowType; -#else -typedef HWND EGLNativeWindowType; -#endif - -#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ - -typedef int EGLNativeDisplayType; -typedef void *EGLNativeWindowType; -typedef void *EGLNativePixmapType; - -#elif defined(__ANDROID__) || defined(ANDROID) - -#include <android/native_window.h> - -struct egl_native_pixmap_t; - -typedef struct ANativeWindow* EGLNativeWindowType; -typedef struct egl_native_pixmap_t* EGLNativePixmapType; -typedef void* EGLNativeDisplayType; - -#elif defined(__unix__) - -/* X11 (tentative) */ -#include <X11/Xlib.h> -#include <X11/Xutil.h> - -typedef Display *EGLNativeDisplayType; -typedef Pixmap EGLNativePixmapType; -typedef Window EGLNativeWindowType; - -#else -#error "Platform not recognized" -#endif - -/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ -typedef EGLNativeDisplayType NativeDisplayType; -typedef EGLNativePixmapType NativePixmapType; -typedef EGLNativeWindowType NativeWindowType; - - -/* Define EGLint. This must be a signed integral type large enough to contain - * all legal attribute names and values passed into and out of EGL, whether - * their type is boolean, bitmask, enumerant (symbolic constant), integer, - * handle, or other. While in general a 32-bit integer will suffice, if - * handles are 64 bit types, then EGLint should be defined as a signed 64-bit - * integer type. - */ -typedef khronos_int32_t EGLint; - -#endif /* __eglplatform_h */ diff --git a/platform/winrt/include/GLES2/gl2.h b/platform/winrt/include/GLES2/gl2.h deleted file mode 100644 index c2d8357268..0000000000 --- a/platform/winrt/include/GLES2/gl2.h +++ /dev/null @@ -1,620 +0,0 @@ -#ifndef __gl2_h_ -#define __gl2_h_ - -/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */ - -#include <GLES2/gl2platform.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This document is licensed under the SGI Free Software B License Version - * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . - */ - -/*------------------------------------------------------------------------- - * Data type definitions - *-----------------------------------------------------------------------*/ - -typedef void GLvoid; -typedef char GLchar; -typedef unsigned int GLenum; -typedef unsigned char GLboolean; -typedef unsigned int GLbitfield; -typedef khronos_int8_t GLbyte; -typedef short GLshort; -typedef int GLint; -typedef int GLsizei; -typedef khronos_uint8_t GLubyte; -typedef unsigned short GLushort; -typedef unsigned int GLuint; -typedef khronos_float_t GLfloat; -typedef khronos_float_t GLclampf; -typedef khronos_int32_t GLfixed; - -/* GL types for handling large vertex buffer objects */ -typedef khronos_intptr_t GLintptr; -typedef khronos_ssize_t GLsizeiptr; - -/* OpenGL ES core versions */ -#define GL_ES_VERSION_2_0 1 - -/* ClearBufferMask */ -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_COLOR_BUFFER_BIT 0x00004000 - -/* Boolean */ -#define GL_FALSE 0 -#define GL_TRUE 1 - -/* BeginMode */ -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 - -/* AlphaFunction (not supported in ES20) */ -/* GL_NEVER */ -/* GL_LESS */ -/* GL_EQUAL */ -/* GL_LEQUAL */ -/* GL_GREATER */ -/* GL_NOTEQUAL */ -/* GL_GEQUAL */ -/* GL_ALWAYS */ - -/* BlendingFactorDest */ -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 - -/* BlendingFactorSrc */ -/* GL_ZERO */ -/* GL_ONE */ -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -/* GL_SRC_ALPHA */ -/* GL_ONE_MINUS_SRC_ALPHA */ -/* GL_DST_ALPHA */ -/* GL_ONE_MINUS_DST_ALPHA */ - -/* BlendEquationSeparate */ -#define GL_FUNC_ADD 0x8006 -#define GL_BLEND_EQUATION 0x8009 -#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */ -#define GL_BLEND_EQUATION_ALPHA 0x883D - -/* BlendSubtract */ -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B - -/* Separate Blend Functions */ -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 - -/* Buffer Objects */ -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 - -#define GL_STREAM_DRAW 0x88E0 -#define GL_STATIC_DRAW 0x88E4 -#define GL_DYNAMIC_DRAW 0x88E8 - -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 - -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 - -/* CullFaceMode */ -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_FRONT_AND_BACK 0x0408 - -/* DepthFunction */ -/* GL_NEVER */ -/* GL_LESS */ -/* GL_EQUAL */ -/* GL_LEQUAL */ -/* GL_GREATER */ -/* GL_NOTEQUAL */ -/* GL_GEQUAL */ -/* GL_ALWAYS */ - -/* EnableCap */ -#define GL_TEXTURE_2D 0x0DE1 -#define GL_CULL_FACE 0x0B44 -#define GL_BLEND 0x0BE2 -#define GL_DITHER 0x0BD0 -#define GL_STENCIL_TEST 0x0B90 -#define GL_DEPTH_TEST 0x0B71 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_COVERAGE 0x80A0 - -/* ErrorCode */ -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_OUT_OF_MEMORY 0x0505 - -/* FrontFaceDirection */ -#define GL_CW 0x0900 -#define GL_CCW 0x0901 - -/* GetPName */ -#define GL_LINE_WIDTH 0x0B21 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#define GL_VIEWPORT 0x0BA2 -#define GL_SCISSOR_BOX 0x0C10 -/* GL_SCISSOR_TEST */ -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -/* GL_POLYGON_OFFSET_FILL */ -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB - -/* GetTextureParameter */ -/* GL_TEXTURE_MAG_FILTER */ -/* GL_TEXTURE_MIN_FILTER */ -/* GL_TEXTURE_WRAP_S */ -/* GL_TEXTURE_WRAP_T */ - -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 - -/* HintMode */ -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 - -/* HintTarget */ -#define GL_GENERATE_MIPMAP_HINT 0x8192 - -/* DataType */ -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_FIXED 0x140C - -/* PixelFormat */ -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A - -/* PixelType */ -/* GL_UNSIGNED_BYTE */ -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 - -/* Shaders */ -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_SHADER_TYPE 0x8B4F -#define GL_DELETE_STATUS 0x8B80 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D - -/* StencilFunction */ -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 - -/* StencilOp */ -/* GL_ZERO */ -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_INVERT 0x150A -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 - -/* StringName */ -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 - -/* TextureMagFilter */ -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 - -/* TextureMinFilter */ -/* GL_NEAREST */ -/* GL_LINEAR */ -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 - -/* TextureParameterName */ -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 - -/* TextureTarget */ -/* GL_TEXTURE_2D */ -#define GL_TEXTURE 0x1702 - -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C - -/* TextureUnit */ -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 - -/* TextureWrapMode */ -#define GL_REPEAT 0x2901 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_MIRRORED_REPEAT 0x8370 - -/* Uniform Types */ -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_CUBE 0x8B60 - -/* Vertex Arrays */ -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F - -/* Read Format */ -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B - -/* Shader Source */ -#define GL_COMPILE_STATUS 0x8B81 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_SHADER_COMPILER 0x8DFA - -/* Shader Binary */ -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 - -/* Shader Precision-Specified Types */ -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 - -/* Framebuffer Object. */ -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 - -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGB565 0x8D62 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_STENCIL_INDEX8 0x8D48 - -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 - -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 - -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 - -#define GL_NONE 0 - -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD - -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 - -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 - -/*------------------------------------------------------------------------- - * GL core functions. - *-----------------------------------------------------------------------*/ - -GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); -GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name); -GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); -GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); -GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); -GL_APICALL void GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -GL_APICALL void GL_APIENTRY glBlendEquation ( GLenum mode ); -GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); -GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); -GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); -GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); -GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); -GL_APICALL void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -GL_APICALL void GL_APIENTRY glClearDepthf (GLclampf depth); -GL_APICALL void GL_APIENTRY glClearStencil (GLint s); -GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); -GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); -GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); -GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); -GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers); -GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers); -GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); -GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers); -GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); -GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures); -GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); -GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); -GL_APICALL void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); -GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glDisable (GLenum cap); -GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); -GL_APICALL void GL_APIENTRY glEnable (GLenum cap); -GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glFinish (void); -GL_APICALL void GL_APIENTRY glFlush (void); -GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); -GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers); -GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); -GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers); -GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers); -GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures); -GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); -GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name); -GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params); -GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params); -GL_APICALL GLenum GL_APIENTRY glGetError (void); -GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); -GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); -GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); -GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); -GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name); -GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params); -GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name); -GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer); -GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); -GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); -GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); -GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); -GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); -GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); -GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); -GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); -GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); -GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); -GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); -GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); -GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); -GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); -GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length); -GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); -GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params); -GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params); -GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x); -GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x); -GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y); -GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y); -GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z); -GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z); -GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w); -GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); -GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); -GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x); -GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y); -GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z); -GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); -GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); - -#ifdef __cplusplus -} -#endif - -#endif /* __gl2_h_ */ diff --git a/platform/winrt/include/GLES2/gl2ext.h b/platform/winrt/include/GLES2/gl2ext.h deleted file mode 100644 index d5a9dd195b..0000000000 --- a/platform/winrt/include/GLES2/gl2ext.h +++ /dev/null @@ -1,2013 +0,0 @@ -#ifndef __gl2ext_h_ -#define __gl2ext_h_ - -/* $Revision: 20795 $ on $Date:: 2013-03-07 01:01:58 -0800 #$ */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This document is licensed under the SGI Free Software B License Version - * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . - */ - -#ifndef GL_APIENTRYP -# define GL_APIENTRYP GL_APIENTRY* -#endif - -/*------------------------------------------------------------------------* - * OES extension tokens - *------------------------------------------------------------------------*/ - -/* GL_OES_compressed_ETC1_RGB8_texture */ -#ifndef GL_OES_compressed_ETC1_RGB8_texture -#define GL_ETC1_RGB8_OES 0x8D64 -#endif - -/* GL_OES_compressed_paletted_texture */ -#ifndef GL_OES_compressed_paletted_texture -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 -#endif - -/* GL_OES_depth24 */ -#ifndef GL_OES_depth24 -#define GL_DEPTH_COMPONENT24_OES 0x81A6 -#endif - -/* GL_OES_depth32 */ -#ifndef GL_OES_depth32 -#define GL_DEPTH_COMPONENT32_OES 0x81A7 -#endif - -/* GL_OES_depth_texture */ -/* No new tokens introduced by this extension. */ - -/* GL_OES_EGL_image */ -#ifndef GL_OES_EGL_image -typedef void* GLeglImageOES; -#endif - -/* GL_OES_EGL_image_external */ -#ifndef GL_OES_EGL_image_external -/* GLeglImageOES defined in GL_OES_EGL_image already. */ -#define GL_TEXTURE_EXTERNAL_OES 0x8D65 -#define GL_SAMPLER_EXTERNAL_OES 0x8D66 -#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 -#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 -#endif - -/* GL_OES_element_index_uint */ -#ifndef GL_OES_element_index_uint -#define GL_UNSIGNED_INT 0x1405 -#endif - -/* GL_OES_get_program_binary */ -#ifndef GL_OES_get_program_binary -#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE -#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF -#endif - -/* GL_OES_mapbuffer */ -#ifndef GL_OES_mapbuffer -#define GL_WRITE_ONLY_OES 0x88B9 -#define GL_BUFFER_ACCESS_OES 0x88BB -#define GL_BUFFER_MAPPED_OES 0x88BC -#define GL_BUFFER_MAP_POINTER_OES 0x88BD -#endif - -/* GL_OES_packed_depth_stencil */ -#ifndef GL_OES_packed_depth_stencil -#define GL_DEPTH_STENCIL_OES 0x84F9 -#define GL_UNSIGNED_INT_24_8_OES 0x84FA -#define GL_DEPTH24_STENCIL8_OES 0x88F0 -#endif - -/* GL_OES_required_internalformat */ -#ifndef GL_OES_required_internalformat -#define GL_ALPHA8_OES 0x803C -#define GL_DEPTH_COMPONENT16_OES 0x81A5 -/* reuse GL_DEPTH_COMPONENT24_OES */ -/* reuse GL_DEPTH24_STENCIL8_OES */ -/* reuse GL_DEPTH_COMPONENT32_OES */ -#define GL_LUMINANCE4_ALPHA4_OES 0x8043 -#define GL_LUMINANCE8_ALPHA8_OES 0x8045 -#define GL_LUMINANCE8_OES 0x8040 -#define GL_RGBA4_OES 0x8056 -#define GL_RGB5_A1_OES 0x8057 -#define GL_RGB565_OES 0x8D62 -/* reuse GL_RGB8_OES */ -/* reuse GL_RGBA8_OES */ -/* reuse GL_RGB10_EXT */ -/* reuse GL_RGB10_A2_EXT */ -#endif - -/* GL_OES_rgb8_rgba8 */ -#ifndef GL_OES_rgb8_rgba8 -#define GL_RGB8_OES 0x8051 -#define GL_RGBA8_OES 0x8058 -#endif - -/* GL_OES_standard_derivatives */ -#ifndef GL_OES_standard_derivatives -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B -#endif - -/* GL_OES_stencil1 */ -#ifndef GL_OES_stencil1 -#define GL_STENCIL_INDEX1_OES 0x8D46 -#endif - -/* GL_OES_stencil4 */ -#ifndef GL_OES_stencil4 -#define GL_STENCIL_INDEX4_OES 0x8D47 -#endif - -#ifndef GL_OES_surfaceless_context -#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 -#endif - -/* GL_OES_texture_3D */ -#ifndef GL_OES_texture_3D -#define GL_TEXTURE_WRAP_R_OES 0x8072 -#define GL_TEXTURE_3D_OES 0x806F -#define GL_TEXTURE_BINDING_3D_OES 0x806A -#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 -#define GL_SAMPLER_3D_OES 0x8B5F -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 -#endif - -/* GL_OES_texture_float */ -/* No new tokens introduced by this extension. */ - -/* GL_OES_texture_float_linear */ -/* No new tokens introduced by this extension. */ - -/* GL_OES_texture_half_float */ -#ifndef GL_OES_texture_half_float -#define GL_HALF_FLOAT_OES 0x8D61 -#endif - -/* GL_OES_texture_half_float_linear */ -/* No new tokens introduced by this extension. */ - -/* GL_OES_texture_npot */ -/* No new tokens introduced by this extension. */ - -/* GL_OES_vertex_array_object */ -#ifndef GL_OES_vertex_array_object -#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 -#endif - -/* GL_OES_vertex_half_float */ -/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */ - -/* GL_OES_vertex_type_10_10_10_2 */ -#ifndef GL_OES_vertex_type_10_10_10_2 -#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 -#define GL_INT_10_10_10_2_OES 0x8DF7 -#endif - -/*------------------------------------------------------------------------* - * KHR extension tokens - *------------------------------------------------------------------------*/ - -#ifndef GL_KHR_debug -typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); -#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 -#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 -#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 -#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 -#define GL_DEBUG_SOURCE_API 0x8246 -#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 -#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 -#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 -#define GL_DEBUG_SOURCE_APPLICATION 0x824A -#define GL_DEBUG_SOURCE_OTHER 0x824B -#define GL_DEBUG_TYPE_ERROR 0x824C -#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D -#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E -#define GL_DEBUG_TYPE_PORTABILITY 0x824F -#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 -#define GL_DEBUG_TYPE_OTHER 0x8251 -#define GL_DEBUG_TYPE_MARKER 0x8268 -#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 -#define GL_DEBUG_TYPE_POP_GROUP 0x826A -#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B -#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C -#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D -#define GL_BUFFER 0x82E0 -#define GL_SHADER 0x82E1 -#define GL_PROGRAM 0x82E2 -#define GL_QUERY 0x82E3 -/* PROGRAM_PIPELINE only in GL */ -#define GL_SAMPLER 0x82E6 -/* DISPLAY_LIST only in GL */ -#define GL_MAX_LABEL_LENGTH 0x82E8 -#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 -#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 -#define GL_DEBUG_LOGGED_MESSAGES 0x9145 -#define GL_DEBUG_SEVERITY_HIGH 0x9146 -#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 -#define GL_DEBUG_SEVERITY_LOW 0x9148 -#define GL_DEBUG_OUTPUT 0x92E0 -#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#endif - -#ifndef GL_KHR_texture_compression_astc_ldr -#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 -#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 -#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 -#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 -#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 -#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 -#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 -#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 -#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 -#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 -#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA -#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB -#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC -#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC -#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD -#endif - -/*------------------------------------------------------------------------* - * AMD extension tokens - *------------------------------------------------------------------------*/ - -/* GL_AMD_compressed_3DC_texture */ -#ifndef GL_AMD_compressed_3DC_texture -#define GL_3DC_X_AMD 0x87F9 -#define GL_3DC_XY_AMD 0x87FA -#endif - -/* GL_AMD_compressed_ATC_texture */ -#ifndef GL_AMD_compressed_ATC_texture -#define GL_ATC_RGB_AMD 0x8C92 -#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 -#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE -#endif - -/* GL_AMD_performance_monitor */ -#ifndef GL_AMD_performance_monitor -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFMON_RESULT_AMD 0x8BC6 -#endif - -/* GL_AMD_program_binary_Z400 */ -#ifndef GL_AMD_program_binary_Z400 -#define GL_Z400_BINARY_AMD 0x8740 -#endif - -/*------------------------------------------------------------------------* - * ANGLE extension tokens - *------------------------------------------------------------------------*/ - -/* GL_ANGLE_depth_texture */ -#ifndef GL_ANGLE_depth_texture -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_DEPTH_STENCIL_OES 0x84F9 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_UNSIGNED_INT 0x1405 -#define GL_UNSIGNED_INT_24_8_OES 0x84FA -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT32_OES 0x81A7 -#define GL_DEPTH24_STENCIL8_OES 0x88F0 -#endif - -/* GL_ANGLE_framebuffer_blit */ -#ifndef GL_ANGLE_framebuffer_blit -#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 -#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA -#endif - -/* GL_ANGLE_framebuffer_multisample */ -#ifndef GL_ANGLE_framebuffer_multisample -#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 -#define GL_MAX_SAMPLES_ANGLE 0x8D57 -#endif - -/* GL_ANGLE_instanced_arrays */ -#ifndef GL_ANGLE_instanced_arrays -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE -#endif - -/* GL_ANGLE_pack_reverse_row_order */ -#ifndef GL_ANGLE_pack_reverse_row_order -#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 -#endif - -/* GL_ANGLE_program_binary */ -#ifndef GL_ANGLE_program_binary -#define GL_PROGRAM_BINARY_ANGLE 0x93A6 -#endif - -/* GL_ANGLE_texture_compression_dxt3 */ -#ifndef GL_ANGLE_texture_compression_dxt3 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 -#endif - -/* GL_ANGLE_texture_compression_dxt5 */ -#ifndef GL_ANGLE_texture_compression_dxt5 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 -#endif - -/* GL_ANGLE_texture_usage */ -#ifndef GL_ANGLE_texture_usage -#define GL_TEXTURE_USAGE_ANGLE 0x93A2 -#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 -#endif - -/* GL_ANGLE_translated_shader_source */ -#ifndef GL_ANGLE_translated_shader_source -#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 -#endif - -/*------------------------------------------------------------------------* - * APPLE extension tokens - *------------------------------------------------------------------------*/ - -/* GL_APPLE_copy_texture_levels */ -/* No new tokens introduced by this extension. */ - -/* GL_APPLE_framebuffer_multisample */ -#ifndef GL_APPLE_framebuffer_multisample -#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 -#define GL_MAX_SAMPLES_APPLE 0x8D57 -#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 -#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA -#endif - -/* GL_APPLE_rgb_422 */ -#ifndef GL_APPLE_rgb_422 -#define GL_RGB_422_APPLE 0x8A1F -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#endif - -/* GL_APPLE_sync */ -#ifndef GL_APPLE_sync - -#ifndef __gl3_h_ -/* These types are defined with reference to <inttypes.h> - * in the Apple extension spec, but here we use the Khronos - * portable types in khrplatform.h, and assume those types - * are always defined. - * If any other extensions using these types are defined, - * the typedefs must move out of this block and be shared. - */ -typedef khronos_int64_t GLint64; -typedef khronos_uint64_t GLuint64; -typedef struct __GLsync *GLsync; -#endif - -#define GL_SYNC_OBJECT_APPLE 0x8A53 -#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 -#define GL_OBJECT_TYPE_APPLE 0x9112 -#define GL_SYNC_CONDITION_APPLE 0x9113 -#define GL_SYNC_STATUS_APPLE 0x9114 -#define GL_SYNC_FLAGS_APPLE 0x9115 -#define GL_SYNC_FENCE_APPLE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 -#define GL_UNSIGNALED_APPLE 0x9118 -#define GL_SIGNALED_APPLE 0x9119 -#define GL_ALREADY_SIGNALED_APPLE 0x911A -#define GL_TIMEOUT_EXPIRED_APPLE 0x911B -#define GL_CONDITION_SATISFIED_APPLE 0x911C -#define GL_WAIT_FAILED_APPLE 0x911D -#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 -#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull -#endif - -/* GL_APPLE_texture_format_BGRA8888 */ -#ifndef GL_APPLE_texture_format_BGRA8888 -#define GL_BGRA_EXT 0x80E1 -#endif - -/* GL_APPLE_texture_max_level */ -#ifndef GL_APPLE_texture_max_level -#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D -#endif - -/*------------------------------------------------------------------------* - * ARM extension tokens - *------------------------------------------------------------------------*/ - -/* GL_ARM_mali_program_binary */ -#ifndef GL_ARM_mali_program_binary -#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 -#endif - -/* GL_ARM_mali_shader_binary */ -#ifndef GL_ARM_mali_shader_binary -#define GL_MALI_SHADER_BINARY_ARM 0x8F60 -#endif - -/* GL_ARM_rgba8 */ -/* No new tokens introduced by this extension. */ - -/*------------------------------------------------------------------------* - * EXT extension tokens - *------------------------------------------------------------------------*/ - -/* GL_EXT_blend_minmax */ -#ifndef GL_EXT_blend_minmax -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#endif - -/* GL_EXT_color_buffer_half_float */ -#ifndef GL_EXT_color_buffer_half_float -#define GL_RGBA16F_EXT 0x881A -#define GL_RGB16F_EXT 0x881B -#define GL_RG16F_EXT 0x822F -#define GL_R16F_EXT 0x822D -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 -#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 -#endif - -/* GL_EXT_debug_label */ -#ifndef GL_EXT_debug_label -#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F -#define GL_PROGRAM_OBJECT_EXT 0x8B40 -#define GL_SHADER_OBJECT_EXT 0x8B48 -#define GL_BUFFER_OBJECT_EXT 0x9151 -#define GL_QUERY_OBJECT_EXT 0x9153 -#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 -#endif - -/* GL_EXT_debug_marker */ -/* No new tokens introduced by this extension. */ - -/* GL_EXT_discard_framebuffer */ -#ifndef GL_EXT_discard_framebuffer -#define GL_COLOR_EXT 0x1800 -#define GL_DEPTH_EXT 0x1801 -#define GL_STENCIL_EXT 0x1802 -#endif - -/* GL_EXT_map_buffer_range */ -#ifndef GL_EXT_map_buffer_range -#define GL_MAP_READ_BIT_EXT 0x0001 -#define GL_MAP_WRITE_BIT_EXT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 -#endif - -/* GL_EXT_multisampled_render_to_texture */ -#ifndef GL_EXT_multisampled_render_to_texture -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C -/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */ -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 -#endif - -/* GL_EXT_multiview_draw_buffers */ -#ifndef GL_EXT_multiview_draw_buffers -#define GL_COLOR_ATTACHMENT_EXT 0x90F0 -#define GL_MULTIVIEW_EXT 0x90F1 -#define GL_DRAW_BUFFER_EXT 0x0C01 -#define GL_READ_BUFFER_EXT 0x0C02 -#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 -#endif - -/* GL_EXT_multi_draw_arrays */ -/* No new tokens introduced by this extension. */ - -/* GL_EXT_occlusion_query_boolean */ -#ifndef GL_EXT_occlusion_query_boolean -#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A -#define GL_CURRENT_QUERY_EXT 0x8865 -#define GL_QUERY_RESULT_EXT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 -#endif - -/* GL_EXT_read_format_bgra */ -#ifndef GL_EXT_read_format_bgra -#define GL_BGRA_EXT 0x80E1 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 -#endif - -/* GL_EXT_robustness */ -#ifndef GL_EXT_robustness -/* reuse GL_NO_ERROR */ -#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 -#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 -#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 -#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 -#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 -#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 -#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 -#endif - -/* GL_EXT_separate_shader_objects */ -#ifndef GL_EXT_separate_shader_objects -#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 -#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 -#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF -#define GL_PROGRAM_SEPARABLE_EXT 0x8258 -#define GL_ACTIVE_PROGRAM_EXT 0x8259 -#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A -#endif - -/* GL_EXT_shader_framebuffer_fetch */ -#ifndef GL_EXT_shader_framebuffer_fetch -#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 -#endif - -/* GL_EXT_shader_texture_lod */ -/* No new tokens introduced by this extension. */ - -/* GL_EXT_shadow_samplers */ -#ifndef GL_EXT_shadow_samplers -#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C -#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D -#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E -#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 -#endif - -/* GL_EXT_sRGB */ -#ifndef GL_EXT_sRGB -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 -#endif - -/* GL_EXT_texture_compression_dxt1 */ -#ifndef GL_EXT_texture_compression_dxt1 -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#endif - -/* GL_EXT_texture_filter_anisotropic */ -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -#endif - -/* GL_EXT_texture_format_BGRA8888 */ -#ifndef GL_EXT_texture_format_BGRA8888 -#define GL_BGRA_EXT 0x80E1 -#endif - -/* GL_EXT_texture_rg */ -#ifndef GL_EXT_texture_rg -#define GL_RED_EXT 0x1903 -#define GL_RG_EXT 0x8227 -#define GL_R8_EXT 0x8229 -#define GL_RG8_EXT 0x822B -#endif - -/* GL_EXT_texture_storage */ -#ifndef GL_EXT_texture_storage -#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F -#define GL_ALPHA8_EXT 0x803C -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_RGBA32F_EXT 0x8814 -#define GL_RGB32F_EXT 0x8815 -#define GL_ALPHA32F_EXT 0x8816 -#define GL_LUMINANCE32F_EXT 0x8818 -#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 -/* reuse GL_RGBA16F_EXT */ -/* reuse GL_RGB16F_EXT */ -#define GL_ALPHA16F_EXT 0x881C -#define GL_LUMINANCE16F_EXT 0x881E -#define GL_LUMINANCE_ALPHA16F_EXT 0x881F -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGB10_EXT 0x8052 -#define GL_BGRA8_EXT 0x93A1 -#define GL_R8_EXT 0x8229 -#define GL_RG8_EXT 0x822B -#define GL_R32F_EXT 0x822E -#define GL_RG32F_EXT 0x8230 -#define GL_R16F_EXT 0x822D -#define GL_RG16F_EXT 0x822F -#endif - -/* GL_EXT_texture_type_2_10_10_10_REV */ -#ifndef GL_EXT_texture_type_2_10_10_10_REV -#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 -#endif - -/* GL_EXT_unpack_subimage */ -#ifndef GL_EXT_unpack_subimage -#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 -#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 -#endif - -/*------------------------------------------------------------------------* - * DMP extension tokens - *------------------------------------------------------------------------*/ - -/* GL_DMP_shader_binary */ -#ifndef GL_DMP_shader_binary -#define GL_SHADER_BINARY_DMP 0x9250 -#endif - -/*------------------------------------------------------------------------* - * FJ extension tokens - *------------------------------------------------------------------------*/ - -/* GL_FJ_shader_binary_GCCSO */ -#ifndef GL_FJ_shader_binary_GCCSO -#define GL_GCCSO_SHADER_BINARY_F 0x9260 -#endif - -/*------------------------------------------------------------------------* - * IMG extension tokens - *------------------------------------------------------------------------*/ - -/* GL_IMG_program_binary */ -#ifndef GL_IMG_program_binary -#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 -#endif - -/* GL_IMG_read_format */ -#ifndef GL_IMG_read_format -#define GL_BGRA_IMG 0x80E1 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 -#endif - -/* GL_IMG_shader_binary */ -#ifndef GL_IMG_shader_binary -#define GL_SGX_BINARY_IMG 0x8C0A -#endif - -/* GL_IMG_texture_compression_pvrtc */ -#ifndef GL_IMG_texture_compression_pvrtc -#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 -#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 -#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 -#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 -#endif - -/* GL_IMG_texture_compression_pvrtc2 */ -#ifndef GL_IMG_texture_compression_pvrtc2 -#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 -#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 -#endif - -/* GL_IMG_multisampled_render_to_texture */ -#ifndef GL_IMG_multisampled_render_to_texture -#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 -#define GL_MAX_SAMPLES_IMG 0x9135 -#define GL_TEXTURE_SAMPLES_IMG 0x9136 -#endif - -/*------------------------------------------------------------------------* - * NV extension tokens - *------------------------------------------------------------------------*/ - -/* GL_NV_coverage_sample */ -#ifndef GL_NV_coverage_sample -#define GL_COVERAGE_COMPONENT_NV 0x8ED0 -#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 -#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 -#define GL_COVERAGE_BUFFERS_NV 0x8ED3 -#define GL_COVERAGE_SAMPLES_NV 0x8ED4 -#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 -#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 -#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 -#define GL_COVERAGE_BUFFER_BIT_NV 0x8000 -#endif - -/* GL_NV_depth_nonlinear */ -#ifndef GL_NV_depth_nonlinear -#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C -#endif - -/* GL_NV_draw_buffers */ -#ifndef GL_NV_draw_buffers -#define GL_MAX_DRAW_BUFFERS_NV 0x8824 -#define GL_DRAW_BUFFER0_NV 0x8825 -#define GL_DRAW_BUFFER1_NV 0x8826 -#define GL_DRAW_BUFFER2_NV 0x8827 -#define GL_DRAW_BUFFER3_NV 0x8828 -#define GL_DRAW_BUFFER4_NV 0x8829 -#define GL_DRAW_BUFFER5_NV 0x882A -#define GL_DRAW_BUFFER6_NV 0x882B -#define GL_DRAW_BUFFER7_NV 0x882C -#define GL_DRAW_BUFFER8_NV 0x882D -#define GL_DRAW_BUFFER9_NV 0x882E -#define GL_DRAW_BUFFER10_NV 0x882F -#define GL_DRAW_BUFFER11_NV 0x8830 -#define GL_DRAW_BUFFER12_NV 0x8831 -#define GL_DRAW_BUFFER13_NV 0x8832 -#define GL_DRAW_BUFFER14_NV 0x8833 -#define GL_DRAW_BUFFER15_NV 0x8834 -#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 -#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 -#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 -#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 -#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 -#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 -#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 -#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 -#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 -#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 -#define GL_COLOR_ATTACHMENT10_NV 0x8CEA -#define GL_COLOR_ATTACHMENT11_NV 0x8CEB -#define GL_COLOR_ATTACHMENT12_NV 0x8CEC -#define GL_COLOR_ATTACHMENT13_NV 0x8CED -#define GL_COLOR_ATTACHMENT14_NV 0x8CEE -#define GL_COLOR_ATTACHMENT15_NV 0x8CEF -#endif - -/* GL_EXT_draw_buffers */ -#ifndef GL_EXT_draw_buffers -#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 -#define GL_DRAW_BUFFER0_EXT 0x8825 -#define GL_DRAW_BUFFER1_EXT 0x8826 -#define GL_DRAW_BUFFER2_EXT 0x8827 -#define GL_DRAW_BUFFER3_EXT 0x8828 -#define GL_DRAW_BUFFER4_EXT 0x8829 -#define GL_DRAW_BUFFER5_EXT 0x882A -#define GL_DRAW_BUFFER6_EXT 0x882B -#define GL_DRAW_BUFFER7_EXT 0x882C -#define GL_DRAW_BUFFER8_EXT 0x882D -#define GL_DRAW_BUFFER9_EXT 0x882E -#define GL_DRAW_BUFFER10_EXT 0x882F -#define GL_DRAW_BUFFER11_EXT 0x8830 -#define GL_DRAW_BUFFER12_EXT 0x8831 -#define GL_DRAW_BUFFER13_EXT 0x8832 -#define GL_DRAW_BUFFER14_EXT 0x8833 -#define GL_DRAW_BUFFER15_EXT 0x8834 -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#endif - -/* GL_NV_draw_instanced */ -/* No new tokens introduced by this extension. */ - -/* GL_NV_fbo_color_attachments */ -#ifndef GL_NV_fbo_color_attachments -#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF -/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */ -#endif - -/* GL_NV_fence */ -#ifndef GL_NV_fence -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 -#endif - -/* GL_NV_framebuffer_blit */ -#ifndef GL_NV_framebuffer_blit -#define GL_READ_FRAMEBUFFER_NV 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 -#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA -#endif - -/* GL_NV_framebuffer_multisample */ -#ifndef GL_NV_framebuffer_multisample -#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 -#define GL_MAX_SAMPLES_NV 0x8D57 -#endif - -/* GL_NV_generate_mipmap_sRGB */ -/* No new tokens introduced by this extension. */ - -/* GL_NV_instanced_arrays */ -#ifndef GL_NV_instanced_arrays -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE -#endif - -/* GL_NV_read_buffer */ -#ifndef GL_NV_read_buffer -#define GL_READ_BUFFER_NV 0x0C02 -#endif - -/* GL_NV_read_buffer_front */ -/* No new tokens introduced by this extension. */ - -/* GL_NV_read_depth */ -/* No new tokens introduced by this extension. */ - -/* GL_NV_read_depth_stencil */ -/* No new tokens introduced by this extension. */ - -/* GL_NV_read_stencil */ -/* No new tokens introduced by this extension. */ - -/* GL_NV_shadow_samplers_array */ -#ifndef GL_NV_shadow_samplers_array -#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 -#endif - -/* GL_NV_shadow_samplers_cube */ -#ifndef GL_NV_shadow_samplers_cube -#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 -#endif - -/* GL_NV_sRGB_formats */ -#ifndef GL_NV_sRGB_formats -#define GL_SLUMINANCE_NV 0x8C46 -#define GL_SLUMINANCE_ALPHA_NV 0x8C44 -#define GL_SRGB8_NV 0x8C41 -#define GL_SLUMINANCE8_NV 0x8C47 -#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 -#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F -#define GL_ETC1_SRGB8_NV 0x88EE -#endif - -/* GL_NV_texture_border_clamp */ -#ifndef GL_NV_texture_border_clamp -#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 -#define GL_CLAMP_TO_BORDER_NV 0x812D -#endif - -/* GL_NV_texture_compression_s3tc_update */ -/* No new tokens introduced by this extension. */ - -/* GL_NV_texture_npot_2D_mipmap */ -/* No new tokens introduced by this extension. */ - -/*------------------------------------------------------------------------* - * QCOM extension tokens - *------------------------------------------------------------------------*/ - -/* GL_QCOM_alpha_test */ -#ifndef GL_QCOM_alpha_test -#define GL_ALPHA_TEST_QCOM 0x0BC0 -#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 -#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 -#endif - -/* GL_QCOM_binning_control */ -#ifndef GL_QCOM_binning_control -#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 -#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 -#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 -#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 -#endif - -/* GL_QCOM_driver_control */ -/* No new tokens introduced by this extension. */ - -/* GL_QCOM_extended_get */ -#ifndef GL_QCOM_extended_get -#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 -#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 -#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 -#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 -#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 -#define GL_TEXTURE_TYPE_QCOM 0x8BD7 -#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 -#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 -#define GL_TEXTURE_TARGET_QCOM 0x8BDA -#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB -#define GL_STATE_RESTORE 0x8BDC -#endif - -/* GL_QCOM_extended_get2 */ -/* No new tokens introduced by this extension. */ - -/* GL_QCOM_perfmon_global_mode */ -#ifndef GL_QCOM_perfmon_global_mode -#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 -#endif - -/* GL_QCOM_writeonly_rendering */ -#ifndef GL_QCOM_writeonly_rendering -#define GL_WRITEONLY_RENDERING_QCOM 0x8823 -#endif - -/* GL_QCOM_tiled_rendering */ -#ifndef GL_QCOM_tiled_rendering -#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 -#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 -#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 -#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 -#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 -#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 -#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 -#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 -#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 -#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 -#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 -#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 -#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 -#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 -#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 -#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 -#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 -#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 -#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 -#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 -#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 -#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 -#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 -#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 -#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 -#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 -#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 -#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 -#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 -#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 -#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 -#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 -#endif - -/*------------------------------------------------------------------------* - * VIV extension tokens - *------------------------------------------------------------------------*/ - -/* GL_VIV_shader_binary */ -#ifndef GL_VIV_shader_binary -#define GL_SHADER_BINARY_VIV 0x8FC4 -#endif - -/*------------------------------------------------------------------------* - * End of extension tokens, start of corresponding extension functions - *------------------------------------------------------------------------*/ - -/*------------------------------------------------------------------------* - * OES extension functions - *------------------------------------------------------------------------*/ - -/* GL_OES_compressed_ETC1_RGB8_texture */ -#ifndef GL_OES_compressed_ETC1_RGB8_texture -#define GL_OES_compressed_ETC1_RGB8_texture 1 -#endif - -/* GL_OES_compressed_paletted_texture */ -#ifndef GL_OES_compressed_paletted_texture -#define GL_OES_compressed_paletted_texture 1 -#endif - -/* GL_OES_depth24 */ -#ifndef GL_OES_depth24 -#define GL_OES_depth24 1 -#endif - -/* GL_OES_depth32 */ -#ifndef GL_OES_depth32 -#define GL_OES_depth32 1 -#endif - -/* GL_OES_depth_texture */ -#ifndef GL_OES_depth_texture -#define GL_OES_depth_texture 1 -#endif - -/* GL_OES_EGL_image */ -#ifndef GL_OES_EGL_image -#define GL_OES_EGL_image 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); -GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); -#endif -typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); -typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); -#endif - -/* GL_OES_EGL_image_external */ -#ifndef GL_OES_EGL_image_external -#define GL_OES_EGL_image_external 1 -/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ -#endif - -/* GL_OES_element_index_uint */ -#ifndef GL_OES_element_index_uint -#define GL_OES_element_index_uint 1 -#endif - -/* GL_OES_fbo_render_mipmap */ -#ifndef GL_OES_fbo_render_mipmap -#define GL_OES_fbo_render_mipmap 1 -#endif - -/* GL_OES_fragment_precision_high */ -#ifndef GL_OES_fragment_precision_high -#define GL_OES_fragment_precision_high 1 -#endif - -/* GL_OES_get_program_binary */ -#ifndef GL_OES_get_program_binary -#define GL_OES_get_program_binary 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); -GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); -#endif -typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); -typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); -#endif - -/* GL_OES_mapbuffer */ -#ifndef GL_OES_mapbuffer -#define GL_OES_mapbuffer 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); -GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); -GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid** params); -#endif -typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); -typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); -typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params); -#endif - -/* GL_OES_packed_depth_stencil */ -#ifndef GL_OES_packed_depth_stencil -#define GL_OES_packed_depth_stencil 1 -#endif - -/* GL_OES_required_internalformat */ -#ifndef GL_OES_required_internalformat -#define GL_OES_required_internalformat 1 -#endif - -/* GL_OES_rgb8_rgba8 */ -#ifndef GL_OES_rgb8_rgba8 -#define GL_OES_rgb8_rgba8 1 -#endif - -/* GL_OES_standard_derivatives */ -#ifndef GL_OES_standard_derivatives -#define GL_OES_standard_derivatives 1 -#endif - -/* GL_OES_stencil1 */ -#ifndef GL_OES_stencil1 -#define GL_OES_stencil1 1 -#endif - -/* GL_OES_stencil4 */ -#ifndef GL_OES_stencil4 -#define GL_OES_stencil4 1 -#endif - -#ifndef GL_OES_surfaceless_context -#define GL_OES_surfaceless_context 1 -#endif - -/* GL_OES_texture_3D */ -#ifndef GL_OES_texture_3D -#define GL_OES_texture_3D 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -#endif -typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); -typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); -typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); -typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -#endif - -/* GL_OES_texture_float */ -#ifndef GL_OES_texture_float -#define GL_OES_texture_float 1 -#endif - -/* GL_OES_texture_float_linear */ -#ifndef GL_OES_texture_float_linear -#define GL_OES_texture_float_linear 1 -#endif - -/* GL_OES_texture_half_float */ -#ifndef GL_OES_texture_half_float -#define GL_OES_texture_half_float 1 -#endif - -/* GL_OES_texture_half_float_linear */ -#ifndef GL_OES_texture_half_float_linear -#define GL_OES_texture_half_float_linear 1 -#endif - -/* GL_OES_texture_npot */ -#ifndef GL_OES_texture_npot -#define GL_OES_texture_npot 1 -#endif - -/* GL_OES_vertex_array_object */ -#ifndef GL_OES_vertex_array_object -#define GL_OES_vertex_array_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); -GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); -GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); -GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); -#endif -typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); -typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); -typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); -#endif - -/* GL_OES_vertex_half_float */ -#ifndef GL_OES_vertex_half_float -#define GL_OES_vertex_half_float 1 -#endif - -/* GL_OES_vertex_type_10_10_10_2 */ -#ifndef GL_OES_vertex_type_10_10_10_2 -#define GL_OES_vertex_type_10_10_10_2 1 -#endif - -/*------------------------------------------------------------------------* - * KHR extension functions - *------------------------------------------------------------------------*/ - -#ifndef GL_KHR_debug -#define GL_KHR_debug 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -GL_APICALL void GL_APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -GL_APICALL void GL_APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); -GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -GL_APICALL void GL_APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); -GL_APICALL void GL_APIENTRY glPopDebugGroup (void); -GL_APICALL void GL_APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -GL_APICALL void GL_APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -GL_APICALL void GL_APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); -GL_APICALL void GL_APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -GL_APICALL void GL_APIENTRY glGetPointerv (GLenum pname, void **params); -#endif -typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); -typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); -typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); -typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); -typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); -typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); -typedef void (GL_APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, void **params); -#endif - -#ifndef GL_KHR_texture_compression_astc_ldr -#define GL_KHR_texture_compression_astc_ldr 1 -#endif - - -/*------------------------------------------------------------------------* - * AMD extension functions - *------------------------------------------------------------------------*/ - -/* GL_AMD_compressed_3DC_texture */ -#ifndef GL_AMD_compressed_3DC_texture -#define GL_AMD_compressed_3DC_texture 1 -#endif - -/* GL_AMD_compressed_ATC_texture */ -#ifndef GL_AMD_compressed_ATC_texture -#define GL_AMD_compressed_ATC_texture 1 -#endif - -/* AMD_performance_monitor */ -#ifndef GL_AMD_performance_monitor -#define GL_AMD_performance_monitor 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); -GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data); -GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); -GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); -GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); -GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); -GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); -GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); -#endif -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data); -typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); -typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); -typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); -#endif - -/* GL_AMD_program_binary_Z400 */ -#ifndef GL_AMD_program_binary_Z400 -#define GL_AMD_program_binary_Z400 1 -#endif - -/*------------------------------------------------------------------------* - * ANGLE extension functions - *------------------------------------------------------------------------*/ - -/* GL_ANGLE_depth_texture */ -#ifndef GL_ANGLE_depth_texture -#define GL_ANGLE_depth_texture 1 -#endif - -/* GL_ANGLE_framebuffer_blit */ -#ifndef GL_ANGLE_framebuffer_blit -#define GL_ANGLE_framebuffer_blit 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif -typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif - -/* GL_ANGLE_framebuffer_multisample */ -#ifndef GL_ANGLE_framebuffer_multisample -#define GL_ANGLE_framebuffer_multisample 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif - -#ifndef GL_ANGLE_instanced_arrays -#define GL_ANGLE_instanced_arrays 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); -#endif -typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); -#endif - -/* GL_ANGLE_pack_reverse_row_order */ -#ifndef GL_ANGLE_pack_reverse_row_order -#define GL_ANGLE_pack_reverse_row_order 1 -#endif - -/* GL_ANGLE_program_binary */ -#ifndef GL_ANGLE_program_binary -#define GL_ANGLE_program_binary 1 -#endif - -/* GL_ANGLE_texture_compression_dxt3 */ -#ifndef GL_ANGLE_texture_compression_dxt3 -#define GL_ANGLE_texture_compression_dxt3 1 -#endif - -/* GL_ANGLE_texture_compression_dxt5 */ -#ifndef GL_ANGLE_texture_compression_dxt5 -#define GL_ANGLE_texture_compression_dxt5 1 -#endif - -/* GL_ANGLE_texture_usage */ -#ifndef GL_ANGLE_texture_usage -#define GL_ANGLE_texture_usage 1 -#endif - -#ifndef GL_ANGLE_translated_shader_source -#define GL_ANGLE_translated_shader_source 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); -#endif -typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); -#endif - -/*------------------------------------------------------------------------* - * APPLE extension functions - *------------------------------------------------------------------------*/ - -/* GL_APPLE_copy_texture_levels */ -#ifndef GL_APPLE_copy_texture_levels -#define GL_APPLE_copy_texture_levels 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); -#endif -typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); -#endif - -/* GL_APPLE_framebuffer_multisample */ -#ifndef GL_APPLE_framebuffer_multisample -#define GL_APPLE_framebuffer_multisample 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei); -GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); -#endif - -/* GL_APPLE_rgb_422 */ -#ifndef GL_APPLE_rgb_422 -#define GL_APPLE_rgb_422 1 -#endif - -/* GL_APPLE_sync */ -#ifndef GL_APPLE_sync -#define GL_APPLE_sync 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); -GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); -GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); -GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); -GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -#endif -typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); -typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); -typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); -typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); -typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); -#endif - -/* GL_APPLE_texture_format_BGRA8888 */ -#ifndef GL_APPLE_texture_format_BGRA8888 -#define GL_APPLE_texture_format_BGRA8888 1 -#endif - -/* GL_APPLE_texture_max_level */ -#ifndef GL_APPLE_texture_max_level -#define GL_APPLE_texture_max_level 1 -#endif - -/*------------------------------------------------------------------------* - * ARM extension functions - *------------------------------------------------------------------------*/ - -/* GL_ARM_mali_program_binary */ -#ifndef GL_ARM_mali_program_binary -#define GL_ARM_mali_program_binary 1 -#endif - -/* GL_ARM_mali_shader_binary */ -#ifndef GL_ARM_mali_shader_binary -#define GL_ARM_mali_shader_binary 1 -#endif - -/* GL_ARM_rgba8 */ -#ifndef GL_ARM_rgba8 -#define GL_ARM_rgba8 1 -#endif - -/*------------------------------------------------------------------------* - * EXT extension functions - *------------------------------------------------------------------------*/ - -/* GL_EXT_blend_minmax */ -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 -#endif - -/* GL_EXT_color_buffer_half_float */ -#ifndef GL_EXT_color_buffer_half_float -#define GL_EXT_color_buffer_half_float 1 -#endif - -/* GL_EXT_debug_label */ -#ifndef GL_EXT_debug_label -#define GL_EXT_debug_label 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); -GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); -#endif -typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); -typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); -#endif - -/* GL_EXT_debug_marker */ -#ifndef GL_EXT_debug_marker -#define GL_EXT_debug_marker 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); -GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); -GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); -#endif -typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); -typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); -typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); -#endif - -/* GL_EXT_discard_framebuffer */ -#ifndef GL_EXT_discard_framebuffer -#define GL_EXT_discard_framebuffer 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); -#endif -typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); -#endif - -/* GL_EXT_map_buffer_range */ -#ifndef GL_EXT_map_buffer_range -#define GL_EXT_map_buffer_range 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); -#endif -typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -#endif - -/* GL_EXT_multisampled_render_to_texture */ -#ifndef GL_EXT_multisampled_render_to_texture -#define GL_EXT_multisampled_render_to_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); -GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); -#endif -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); -#endif - -/* GL_EXT_multiview_draw_buffers */ -#ifndef GL_EXT_multiview_draw_buffers -#define GL_EXT_multiview_draw_buffers 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); -GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); -GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); -#endif -typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); -typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); -typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); -#endif - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum, const GLint *, const GLsizei *, GLsizei); -GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); -#endif - -/* GL_EXT_occlusion_query_boolean */ -#ifndef GL_EXT_occlusion_query_boolean -#define GL_EXT_occlusion_query_boolean 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); -GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); -GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); -GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); -GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); -GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); -#endif -typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); -typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); -typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); -typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); -typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); -#endif - -/* GL_EXT_read_format_bgra */ -#ifndef GL_EXT_read_format_bgra -#define GL_EXT_read_format_bgra 1 -#endif - -/* GL_EXT_robustness */ -#ifndef GL_EXT_robustness -#define GL_EXT_robustness 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); -GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); -GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, float *params); -GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); -#endif -typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); -typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); -typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, float *params); -typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); -#endif - -/* GL_EXT_separate_shader_objects */ -#ifndef GL_EXT_separate_shader_objects -#define GL_EXT_separate_shader_objects 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); -GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); -GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); -GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); -GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); -GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); -GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); -GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); -GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x); -GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y); -GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z); -GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); -GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x); -GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y); -GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); -GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); -GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); -GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -#endif -typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); -typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); -typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); -typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); -typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); -typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); -typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); -typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); -typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); -typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -#endif - -/* GL_EXT_shader_framebuffer_fetch */ -#ifndef GL_EXT_shader_framebuffer_fetch -#define GL_EXT_shader_framebuffer_fetch 1 -#endif - -/* GL_EXT_shader_texture_lod */ -#ifndef GL_EXT_shader_texture_lod -#define GL_EXT_shader_texture_lod 1 -#endif - -/* GL_EXT_shadow_samplers */ -#ifndef GL_EXT_shadow_samplers -#define GL_EXT_shadow_samplers 1 -#endif - -/* GL_EXT_sRGB */ -#ifndef GL_EXT_sRGB -#define GL_EXT_sRGB 1 -#endif - -/* GL_EXT_texture_compression_dxt1 */ -#ifndef GL_EXT_texture_compression_dxt1 -#define GL_EXT_texture_compression_dxt1 1 -#endif - -/* GL_EXT_texture_filter_anisotropic */ -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 -#endif - -/* GL_EXT_texture_format_BGRA8888 */ -#ifndef GL_EXT_texture_format_BGRA8888 -#define GL_EXT_texture_format_BGRA8888 1 -#endif - -/* GL_EXT_texture_rg */ -#ifndef GL_EXT_texture_rg -#define GL_EXT_texture_rg 1 -#endif - -/* GL_EXT_texture_storage */ -#ifndef GL_EXT_texture_storage -#define GL_EXT_texture_storage 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -#endif -typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); -typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -#endif - -/* GL_EXT_texture_type_2_10_10_10_REV */ -#ifndef GL_EXT_texture_type_2_10_10_10_REV -#define GL_EXT_texture_type_2_10_10_10_REV 1 -#endif - -/* GL_EXT_unpack_subimage */ -#ifndef GL_EXT_unpack_subimage -#define GL_EXT_unpack_subimage 1 -#endif - -/*------------------------------------------------------------------------* - * DMP extension functions - *------------------------------------------------------------------------*/ - -/* GL_DMP_shader_binary */ -#ifndef GL_DMP_shader_binary -#define GL_DMP_shader_binary 1 -#endif - -/*------------------------------------------------------------------------* - * FJ extension functions - *------------------------------------------------------------------------*/ - -/* GL_FJ_shader_binary_GCCSO */ -#ifndef GL_FJ_shader_binary_GCCSO -#define GL_FJ_shader_binary_GCCSO 1 -#endif - -/*------------------------------------------------------------------------* - * IMG extension functions - *------------------------------------------------------------------------*/ - -/* GL_IMG_program_binary */ -#ifndef GL_IMG_program_binary -#define GL_IMG_program_binary 1 -#endif - -/* GL_IMG_read_format */ -#ifndef GL_IMG_read_format -#define GL_IMG_read_format 1 -#endif - -/* GL_IMG_shader_binary */ -#ifndef GL_IMG_shader_binary -#define GL_IMG_shader_binary 1 -#endif - -/* GL_IMG_texture_compression_pvrtc */ -#ifndef GL_IMG_texture_compression_pvrtc -#define GL_IMG_texture_compression_pvrtc 1 -#endif - -/* GL_IMG_texture_compression_pvrtc2 */ -#ifndef GL_IMG_texture_compression_pvrtc2 -#define GL_IMG_texture_compression_pvrtc2 1 -#endif - -/* GL_IMG_multisampled_render_to_texture */ -#ifndef GL_IMG_multisampled_render_to_texture -#define GL_IMG_multisampled_render_to_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei); -GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); -#endif -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); -#endif - -/*------------------------------------------------------------------------* - * NV extension functions - *------------------------------------------------------------------------*/ - -/* GL_NV_coverage_sample */ -#ifndef GL_NV_coverage_sample -#define GL_NV_coverage_sample 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); -GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); -#endif -typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); -typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); -#endif - -/* GL_NV_depth_nonlinear */ -#ifndef GL_NV_depth_nonlinear -#define GL_NV_depth_nonlinear 1 -#endif - -/* GL_NV_draw_buffers */ -#ifndef GL_NV_draw_buffers -#define GL_NV_draw_buffers 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); -#endif -typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); -#endif - -/* GL_EXT_draw_buffers */ -#ifndef GL_EXT_draw_buffers -#define GL_EXT_draw_buffers 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); -#endif -typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); -#endif - -/* GL_NV_draw_instanced */ -#ifndef GL_NV_draw_instanced -#define GL_NV_draw_instanced 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -#endif -typedef void (GL_APIENTRYP PFNDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GL_APIENTRYP PFNDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -#endif - -/* GL_NV_fbo_color_attachments */ -#ifndef GL_NV_fbo_color_attachments -#define GL_NV_fbo_color_attachments 1 -#endif - -/* GL_NV_fence */ -#ifndef GL_NV_fence -#define GL_NV_fence 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); -GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *); -GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint); -GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint); -GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); -GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint); -GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint, GLenum); -#endif -typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); -typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); -typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); -typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); -typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -#endif - -/* GL_NV_framebuffer_blit */ -#ifndef GL_NV_framebuffer_blit -#define GL_NV_framebuffer_blit 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glBlitFramebufferNV (int srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif -typedef void (GL_APIENTRYP PFNBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif - -/* GL_NV_framebuffer_multisample */ -#ifndef GL_NV_framebuffer_multisample -#define GL_NV_framebuffer_multisample 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif -typedef void (GL_APIENTRYP PFNRENDERBUFFERSTORAGEMULTISAMPLENVPROC) ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif - -/* GL_NV_generate_mipmap_sRGB */ -#ifndef GL_NV_generate_mipmap_sRGB -#define GL_NV_generate_mipmap_sRGB 1 -#endif - -/* GL_NV_instanced_arrays */ -#ifndef GL_NV_instanced_arrays -#define GL_NV_instanced_arrays 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); -#endif -typedef void (GL_APIENTRYP PFNVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); -#endif - -/* GL_NV_read_buffer */ -#ifndef GL_NV_read_buffer -#define GL_NV_read_buffer 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); -#endif -typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); -#endif - -/* GL_NV_read_buffer_front */ -#ifndef GL_NV_read_buffer_front -#define GL_NV_read_buffer_front 1 -#endif - -/* GL_NV_read_depth */ -#ifndef GL_NV_read_depth -#define GL_NV_read_depth 1 -#endif - -/* GL_NV_read_depth_stencil */ -#ifndef GL_NV_read_depth_stencil -#define GL_NV_read_depth_stencil 1 -#endif - -/* GL_NV_read_stencil */ -#ifndef GL_NV_read_stencil -#define GL_NV_read_stencil 1 -#endif - -/* GL_NV_shadow_samplers_array */ -#ifndef GL_NV_shadow_samplers_array -#define GL_NV_shadow_samplers_array 1 -#endif - -/* GL_NV_shadow_samplers_cube */ -#ifndef GL_NV_shadow_samplers_cube -#define GL_NV_shadow_samplers_cube 1 -#endif - -/* GL_NV_sRGB_formats */ -#ifndef GL_NV_sRGB_formats -#define GL_NV_sRGB_formats 1 -#endif - -/* GL_NV_texture_border_clamp */ -#ifndef GL_NV_texture_border_clamp -#define GL_NV_texture_border_clamp 1 -#endif - -/* GL_NV_texture_compression_s3tc_update */ -#ifndef GL_NV_texture_compression_s3tc_update -#define GL_NV_texture_compression_s3tc_update 1 -#endif - -/* GL_NV_texture_npot_2D_mipmap */ -#ifndef GL_NV_texture_npot_2D_mipmap -#define GL_NV_texture_npot_2D_mipmap 1 -#endif - -/*------------------------------------------------------------------------* - * QCOM extension functions - *------------------------------------------------------------------------*/ - -/* GL_QCOM_alpha_test */ -#ifndef GL_QCOM_alpha_test -#define GL_QCOM_alpha_test 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); -#endif -typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); -#endif - -/* GL_QCOM_binning_control */ -#ifndef GL_QCOM_binning_control -#define GL_QCOM_binning_control 1 -#endif - -/* GL_QCOM_driver_control */ -#ifndef GL_QCOM_driver_control -#define GL_QCOM_driver_control 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); -GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); -GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); -GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); -#endif -typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); -typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); -typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); -typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); -#endif - -/* GL_QCOM_extended_get */ -#ifndef GL_QCOM_extended_get -#define GL_QCOM_extended_get 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); -GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); -GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); -GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); -GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); -GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); -GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); -#endif -typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); -typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); -typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); -typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); -typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); -typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); -typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); -#endif - -/* GL_QCOM_extended_get2 */ -#ifndef GL_QCOM_extended_get2 -#define GL_QCOM_extended_get2 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); -GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); -GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); -GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); -#endif -typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); -typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); -typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); -typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); -#endif - -/* GL_QCOM_perfmon_global_mode */ -#ifndef GL_QCOM_perfmon_global_mode -#define GL_QCOM_perfmon_global_mode 1 -#endif - -/* GL_QCOM_writeonly_rendering */ -#ifndef GL_QCOM_writeonly_rendering -#define GL_QCOM_writeonly_rendering 1 -#endif - -/* GL_QCOM_tiled_rendering */ -#ifndef GL_QCOM_tiled_rendering -#define GL_QCOM_tiled_rendering 1 -#ifdef GL_GLEXT_PROTOTYPES -GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); -GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); -#endif -typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); -typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); -#endif - -/*------------------------------------------------------------------------* - * VIV extension tokens - *------------------------------------------------------------------------*/ - -/* GL_VIV_shader_binary */ -#ifndef GL_VIV_shader_binary -#define GL_VIV_shader_binary 1 -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __gl2ext_h_ */ diff --git a/platform/winrt/include/GLES2/gl2platform.h b/platform/winrt/include/GLES2/gl2platform.h deleted file mode 100644 index c9fa3c4d64..0000000000 --- a/platform/winrt/include/GLES2/gl2platform.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __gl2platform_h_ -#define __gl2platform_h_ - -/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ - -/* - * This document is licensed under the SGI Free Software B License Version - * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . - */ - -/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h - * - * Adopters may modify khrplatform.h and this file to suit their platform. - * You are encouraged to submit all modifications to the Khronos group so that - * they can be included in future versions of this file. Please submit changes - * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) - * by filing a bug against product "OpenGL-ES" component "Registry". - */ - -#include <KHR/khrplatform.h> - -#ifndef GL_APICALL -#define GL_APICALL KHRONOS_APICALL -#endif - -#ifndef GL_APIENTRY -#define GL_APIENTRY KHRONOS_APIENTRY -#endif - -#endif /* __gl2platform_h_ */ diff --git a/platform/winrt/include/GLES3/gl3.h b/platform/winrt/include/GLES3/gl3.h deleted file mode 100644 index b7e91e6881..0000000000 --- a/platform/winrt/include/GLES3/gl3.h +++ /dev/null @@ -1,1061 +0,0 @@ -#ifndef __gl3_h_ -#define __gl3_h_ - -/* - * gl3.h last updated on $Date: 2013-02-12 14:37:24 -0800 (Tue, 12 Feb 2013) $ - */ - -#include <GLES3/gl3platform.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2007-2013 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are 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 Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -/*------------------------------------------------------------------------- - * Data type definitions - *-----------------------------------------------------------------------*/ - -/* OpenGL ES 2.0 */ - -typedef void GLvoid; -typedef char GLchar; -typedef unsigned int GLenum; -typedef unsigned char GLboolean; -typedef unsigned int GLbitfield; -typedef khronos_int8_t GLbyte; -typedef short GLshort; -typedef int GLint; -typedef int GLsizei; -typedef khronos_uint8_t GLubyte; -typedef unsigned short GLushort; -typedef unsigned int GLuint; -typedef khronos_float_t GLfloat; -typedef khronos_float_t GLclampf; -typedef khronos_int32_t GLfixed; -typedef khronos_intptr_t GLintptr; -typedef khronos_ssize_t GLsizeiptr; - -/* OpenGL ES 3.0 */ - -typedef unsigned short GLhalf; -typedef khronos_int64_t GLint64; -typedef khronos_uint64_t GLuint64; -typedef struct __GLsync *GLsync; - -/*------------------------------------------------------------------------- - * Token definitions - *-----------------------------------------------------------------------*/ - -/* OpenGL ES core versions */ -#define GL_ES_VERSION_3_0 1 -#define GL_ES_VERSION_2_0 1 - -/* OpenGL ES 2.0 */ - -/* ClearBufferMask */ -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_COLOR_BUFFER_BIT 0x00004000 - -/* Boolean */ -#define GL_FALSE 0 -#define GL_TRUE 1 - -/* BeginMode */ -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 - -/* BlendingFactorDest */ -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 - -/* BlendingFactorSrc */ -/* GL_ZERO */ -/* GL_ONE */ -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -/* GL_SRC_ALPHA */ -/* GL_ONE_MINUS_SRC_ALPHA */ -/* GL_DST_ALPHA */ -/* GL_ONE_MINUS_DST_ALPHA */ - -/* BlendEquationSeparate */ -#define GL_FUNC_ADD 0x8006 -#define GL_BLEND_EQUATION 0x8009 -#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */ -#define GL_BLEND_EQUATION_ALPHA 0x883D - -/* BlendSubtract */ -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B - -/* Separate Blend Functions */ -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 - -/* Buffer Objects */ -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 - -#define GL_STREAM_DRAW 0x88E0 -#define GL_STATIC_DRAW 0x88E4 -#define GL_DYNAMIC_DRAW 0x88E8 - -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 - -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 - -/* CullFaceMode */ -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_FRONT_AND_BACK 0x0408 - -/* DepthFunction */ -/* GL_NEVER */ -/* GL_LESS */ -/* GL_EQUAL */ -/* GL_LEQUAL */ -/* GL_GREATER */ -/* GL_NOTEQUAL */ -/* GL_GEQUAL */ -/* GL_ALWAYS */ - -/* EnableCap */ -#define GL_TEXTURE_2D 0x0DE1 -#define GL_CULL_FACE 0x0B44 -#define GL_BLEND 0x0BE2 -#define GL_DITHER 0x0BD0 -#define GL_STENCIL_TEST 0x0B90 -#define GL_DEPTH_TEST 0x0B71 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_COVERAGE 0x80A0 - -/* ErrorCode */ -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_OUT_OF_MEMORY 0x0505 - -/* FrontFaceDirection */ -#define GL_CW 0x0900 -#define GL_CCW 0x0901 - -/* GetPName */ -#define GL_LINE_WIDTH 0x0B21 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#define GL_VIEWPORT 0x0BA2 -#define GL_SCISSOR_BOX 0x0C10 -/* GL_SCISSOR_TEST */ -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -/* GL_POLYGON_OFFSET_FILL */ -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB - -/* GetTextureParameter */ -/* GL_TEXTURE_MAG_FILTER */ -/* GL_TEXTURE_MIN_FILTER */ -/* GL_TEXTURE_WRAP_S */ -/* GL_TEXTURE_WRAP_T */ - -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 - -/* HintMode */ -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 - -/* HintTarget */ -#define GL_GENERATE_MIPMAP_HINT 0x8192 - -/* DataType */ -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_FIXED 0x140C - -/* PixelFormat */ -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A - -/* PixelType */ -/* GL_UNSIGNED_BYTE */ -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 - -/* Shaders */ -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB -#define GL_MAX_VARYING_VECTORS 0x8DFC -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD -#define GL_SHADER_TYPE 0x8B4F -#define GL_DELETE_STATUS 0x8B80 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D - -/* StencilFunction */ -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 - -/* StencilOp */ -/* GL_ZERO */ -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_INVERT 0x150A -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 - -/* StringName */ -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 - -/* TextureMagFilter */ -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 - -/* TextureMinFilter */ -/* GL_NEAREST */ -/* GL_LINEAR */ -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 - -/* TextureParameterName */ -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 - -/* TextureTarget */ -/* GL_TEXTURE_2D */ -#define GL_TEXTURE 0x1702 - -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C - -/* TextureUnit */ -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 - -/* TextureWrapMode */ -#define GL_REPEAT 0x2901 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_MIRRORED_REPEAT 0x8370 - -/* Uniform Types */ -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_CUBE 0x8B60 - -/* Vertex Arrays */ -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F - -/* Read Format */ -#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B - -/* Shader Source */ -#define GL_COMPILE_STATUS 0x8B81 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_SHADER_COMPILER 0x8DFA - -/* Shader Binary */ -#define GL_SHADER_BINARY_FORMATS 0x8DF8 -#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 - -/* Shader Precision-Specified Types */ -#define GL_LOW_FLOAT 0x8DF0 -#define GL_MEDIUM_FLOAT 0x8DF1 -#define GL_HIGH_FLOAT 0x8DF2 -#define GL_LOW_INT 0x8DF3 -#define GL_MEDIUM_INT 0x8DF4 -#define GL_HIGH_INT 0x8DF5 - -/* Framebuffer Object. */ -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 - -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGB565 0x8D62 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_STENCIL_INDEX8 0x8D48 - -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 - -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 - -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 - -#define GL_NONE 0 - -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD - -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 - -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 - -/* OpenGL ES 3.0 */ - -#define GL_READ_BUFFER 0x0C02 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_RED 0x1903 -#define GL_RGB8 0x8051 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_COMPARE_REF_TO_TEXTURE 0x884E -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_MAX_VARYING_COMPONENTS 0x8B4B -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 -#define GL_HALF_FLOAT 0x140B -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_RG8 0x822B -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C -#define GL_VERTEX_ARRAY_BINDING 0x85B5 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 -#define GL_COPY_READ_BUFFER_BINDING GL_COPY_READ_BUFFER -#define GL_COPY_WRITE_BUFFER_BINDING GL_COPY_WRITE_BUFFER -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 -#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 -#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 -#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 -#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 -#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFFu -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE -#define GL_ANY_SAMPLES_PASSED 0x8C2F -#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A -#define GL_SAMPLER_BINDING 0x8919 -#define GL_RGB10_A2UI 0x906F -#define GL_TEXTURE_SWIZZLE_R 0x8E42 -#define GL_TEXTURE_SWIZZLE_G 0x8E43 -#define GL_TEXTURE_SWIZZLE_B 0x8E44 -#define GL_TEXTURE_SWIZZLE_A 0x8E45 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_INT_2_10_10_10_REV 0x8D9F -#define GL_TRANSFORM_FEEDBACK 0x8E22 -#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 -#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 -#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 -#define GL_PROGRAM_BINARY_LENGTH 0x8741 -#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE -#define GL_PROGRAM_BINARY_FORMATS 0x87FF -#define GL_COMPRESSED_R11_EAC 0x9270 -#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 -#define GL_COMPRESSED_RG11_EAC 0x9272 -#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 -#define GL_COMPRESSED_RGB8_ETC2 0x9274 -#define GL_COMPRESSED_SRGB8_ETC2 0x9275 -#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 -#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 -#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 -#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 -#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F -#define GL_MAX_ELEMENT_INDEX 0x8D6B -#define GL_NUM_SAMPLE_COUNTS 0x9380 -#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF - -/*------------------------------------------------------------------------- - * Entrypoint definitions - *-----------------------------------------------------------------------*/ - -/* OpenGL ES 2.0 */ - -GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); -GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name); -GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); -GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); -GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); -GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); -GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); -GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); -GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); -GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); -GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); -GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat depth); -GL_APICALL void GL_APIENTRY glClearStencil (GLint s); -GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); -GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); -GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); -GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); -GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers); -GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers); -GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); -GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers); -GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); -GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures); -GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); -GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); -GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); -GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); -GL_APICALL void GL_APIENTRY glDisable (GLenum cap); -GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); -GL_APICALL void GL_APIENTRY glEnable (GLenum cap); -GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); -GL_APICALL void GL_APIENTRY glFinish (void); -GL_APICALL void GL_APIENTRY glFlush (void); -GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); -GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers); -GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); -GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers); -GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers); -GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures); -GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); -GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name); -GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params); -GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params); -GL_APICALL GLenum GL_APIENTRY glGetError (void); -GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); -GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); -GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); -GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); -GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name); -GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params); -GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name); -GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params); -GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer); -GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); -GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); -GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); -GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); -GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); -GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); -GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); -GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); -GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); -GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); -GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); -GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); -GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); -GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); -GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length); -GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); -GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); -GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); -GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params); -GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params); -GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x); -GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x); -GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y); -GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y); -GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z); -GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z); -GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v); -GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w); -GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v); -GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); -GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); -GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x); -GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y); -GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z); -GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values); -GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); -GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); - -/* OpenGL ES 3.0 */ - -GL_APICALL void GL_APIENTRY glReadBuffer (GLenum mode); -GL_APICALL void GL_APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices); -GL_APICALL void GL_APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void GL_APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); -GL_APICALL void GL_APIENTRY glGenQueries (GLsizei n, GLuint* ids); -GL_APICALL void GL_APIENTRY glDeleteQueries (GLsizei n, const GLuint* ids); -GL_APICALL GLboolean GL_APIENTRY glIsQuery (GLuint id); -GL_APICALL void GL_APIENTRY glBeginQuery (GLenum target, GLuint id); -GL_APICALL void GL_APIENTRY glEndQuery (GLenum target); -GL_APICALL void GL_APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint* params); -GL_APICALL GLboolean GL_APIENTRY glUnmapBuffer (GLenum target); -GL_APICALL void GL_APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, GLvoid** params); -GL_APICALL void GL_APIENTRY glDrawBuffers (GLsizei n, const GLenum* bufs); -GL_APICALL void GL_APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void GL_APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GL_APICALL GLvoid* GL_APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GL_APICALL void GL_APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length); -GL_APICALL void GL_APIENTRY glBindVertexArray (GLuint array); -GL_APICALL void GL_APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint* arrays); -GL_APICALL void GL_APIENTRY glGenVertexArrays (GLsizei n, GLuint* arrays); -GL_APICALL GLboolean GL_APIENTRY glIsVertexArray (GLuint array); -GL_APICALL void GL_APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint* data); -GL_APICALL void GL_APIENTRY glBeginTransformFeedback (GLenum primitiveMode); -GL_APICALL void GL_APIENTRY glEndTransformFeedback (void); -GL_APICALL void GL_APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GL_APICALL void GL_APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer); -GL_APICALL void GL_APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode); -GL_APICALL void GL_APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name); -GL_APICALL void GL_APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); -GL_APICALL void GL_APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint* params); -GL_APICALL void GL_APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w); -GL_APICALL void GL_APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GL_APICALL void GL_APIENTRY glVertexAttribI4iv (GLuint index, const GLint* v); -GL_APICALL void GL_APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint* v); -GL_APICALL void GL_APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint* params); -GL_APICALL GLint GL_APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name); -GL_APICALL void GL_APIENTRY glUniform1ui (GLint location, GLuint v0); -GL_APICALL void GL_APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1); -GL_APICALL void GL_APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2); -GL_APICALL void GL_APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GL_APICALL void GL_APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void GL_APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void GL_APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void GL_APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void GL_APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint* value); -GL_APICALL void GL_APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint* value); -GL_APICALL void GL_APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat* value); -GL_APICALL void GL_APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -GL_APICALL const GLubyte* GL_APIENTRY glGetStringi (GLenum name, GLuint index); -GL_APICALL void GL_APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GL_APICALL void GL_APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices); -GL_APICALL void GL_APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); -GL_APICALL GLuint GL_APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar* uniformBlockName); -GL_APICALL void GL_APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); -GL_APICALL void GL_APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -GL_APICALL void GL_APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); -GL_APICALL void GL_APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount); -GL_APICALL GLsync GL_APIENTRY glFenceSync (GLenum condition, GLbitfield flags); -GL_APICALL GLboolean GL_APIENTRY glIsSync (GLsync sync); -GL_APICALL void GL_APIENTRY glDeleteSync (GLsync sync); -GL_APICALL GLenum GL_APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void GL_APIENTRY glGetInteger64v (GLenum pname, GLint64* params); -GL_APICALL void GL_APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values); -GL_APICALL void GL_APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64* data); -GL_APICALL void GL_APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64* params); -GL_APICALL void GL_APIENTRY glGenSamplers (GLsizei count, GLuint* samplers); -GL_APICALL void GL_APIENTRY glDeleteSamplers (GLsizei count, const GLuint* samplers); -GL_APICALL GLboolean GL_APIENTRY glIsSampler (GLuint sampler); -GL_APICALL void GL_APIENTRY glBindSampler (GLuint unit, GLuint sampler); -GL_APICALL void GL_APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param); -GL_APICALL void GL_APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint* param); -GL_APICALL void GL_APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param); -GL_APICALL void GL_APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat* param); -GL_APICALL void GL_APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint* params); -GL_APICALL void GL_APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat* params); -GL_APICALL void GL_APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor); -GL_APICALL void GL_APIENTRY glBindTransformFeedback (GLenum target, GLuint id); -GL_APICALL void GL_APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint* ids); -GL_APICALL void GL_APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint* ids); -GL_APICALL GLboolean GL_APIENTRY glIsTransformFeedback (GLuint id); -GL_APICALL void GL_APIENTRY glPauseTransformFeedback (void); -GL_APICALL void GL_APIENTRY glResumeTransformFeedback (void); -GL_APICALL void GL_APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary); -GL_APICALL void GL_APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length); -GL_APICALL void GL_APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value); -GL_APICALL void GL_APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments); -GL_APICALL void GL_APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void GL_APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GL_APICALL void GL_APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/platform/winrt/include/GLES3/gl3ext.h b/platform/winrt/include/GLES3/gl3ext.h deleted file mode 100644 index 4d4ea96c4d..0000000000 --- a/platform/winrt/include/GLES3/gl3ext.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef __gl3ext_h_ -#define __gl3ext_h_ - -/* $Revision: 17809 $ on $Date:: 2012-05-14 08:03:36 -0700 #$ */ - -/* - * This document is licensed under the SGI Free Software B License Version - * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . - */ - -/* OpenGL ES 3 Extensions - * - * After an OES extension's interactions with OpenGl ES 3.0 have been documented, - * its tokens and function definitions should be added to this file in a manner - * that does not conflict with gl2ext.h or gl3.h. - * - * Tokens and function definitions for extensions that have become standard - * features in OpenGL ES 3.0 will not be added to this file. - * - * Applications using OpenGL-ES-2-only extensions should include gl2ext.h - */ - -#endif /* __gl3ext_h_ */ - diff --git a/platform/winrt/include/GLES3/gl3platform.h b/platform/winrt/include/GLES3/gl3platform.h deleted file mode 100644 index 1bd1a850fa..0000000000 --- a/platform/winrt/include/GLES3/gl3platform.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __gl3platform_h_ -#define __gl3platform_h_ - -/* $Revision: 18437 $ on $Date:: 2012-07-08 23:31:39 -0700 #$ */ - -/* - * This document is licensed under the SGI Free Software B License Version - * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . - */ - -/* Platform-specific types and definitions for OpenGL ES 3.X gl3.h - * - * Adopters may modify khrplatform.h and this file to suit their platform. - * You are encouraged to submit all modifications to the Khronos group so that - * they can be included in future versions of this file. Please submit changes - * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) - * by filing a bug against product "OpenGL-ES" component "Registry". - */ - -#include <KHR/khrplatform.h> - -#ifndef GL_APICALL -#define GL_APICALL KHRONOS_APICALL -#endif - -#ifndef GL_APIENTRY -#define GL_APIENTRY KHRONOS_APIENTRY -#endif - -#endif /* __gl3platform_h_ */ diff --git a/platform/winrt/include/GLSLANG/ShaderLang.h b/platform/winrt/include/GLSLANG/ShaderLang.h deleted file mode 100644 index e486692482..0000000000 --- a/platform/winrt/include/GLSLANG/ShaderLang.h +++ /dev/null @@ -1,411 +0,0 @@ -// -// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -#ifndef _COMPILER_INTERFACE_INCLUDED_ -#define _COMPILER_INTERFACE_INCLUDED_ - -#if defined(COMPONENT_BUILD) && !defined(ANGLE_TRANSLATOR_STATIC) -#if defined(_WIN32) || defined(_WIN64) - -#if defined(ANGLE_TRANSLATOR_IMPLEMENTATION) -#define COMPILER_EXPORT __declspec(dllexport) -#else -#define COMPILER_EXPORT __declspec(dllimport) -#endif // defined(ANGLE_TRANSLATOR_IMPLEMENTATION) - -#else // defined(_WIN32) || defined(_WIN64) -#define COMPILER_EXPORT __attribute__((visibility("default"))) -#endif - -#else // defined(COMPONENT_BUILD) && !defined(ANGLE_TRANSLATOR_STATIC) -#define COMPILER_EXPORT -#endif - -#include <stddef.h> - -#include "KHR/khrplatform.h" - -#include <map> -#include <string> -#include <vector> - -// -// This is the platform independent interface between an OGL driver -// and the shading language compiler. -// - -namespace sh -{ -// GLenum alias -typedef unsigned int GLenum; -} - -// Must be included after GLenum proxy typedef -// Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h -#include "ShaderVars.h" - -// Version number for shader translation API. -// It is incremented every time the API changes. -#define ANGLE_SH_VERSION 132 - -typedef enum { - SH_GLES2_SPEC = 0x8B40, - SH_WEBGL_SPEC = 0x8B41, - - SH_GLES3_SPEC = 0x8B86, - SH_WEBGL2_SPEC = 0x8B87, - - // The CSS Shaders spec is a subset of the WebGL spec. - // - // In both CSS vertex and fragment shaders, ANGLE: - // (1) Reserves the "css_" prefix. - // (2) Renames the main function to css_main. - // (3) Disables the gl_MaxDrawBuffers built-in. - // - // In CSS fragment shaders, ANGLE: - // (1) Disables the gl_FragColor built-in. - // (2) Disables the gl_FragData built-in. - // (3) Enables the css_MixColor built-in. - // (4) Enables the css_ColorMatrix built-in. - // - // After passing a CSS shader through ANGLE, the browser is expected to append - // a new main function to it. - // This new main function will call the css_main function. - // It may also perform additional operations like varying assignment, texture - // access, and gl_FragColor assignment in order to implement the CSS Shaders - // blend modes. - // - SH_CSS_SHADERS_SPEC = 0x8B42 -} ShShaderSpec; - -typedef enum { - SH_ESSL_OUTPUT = 0x8B45, - SH_GLSL_OUTPUT = 0x8B46, - SH_HLSL_OUTPUT = 0x8B47, - SH_HLSL9_OUTPUT = 0x8B47, - SH_HLSL11_OUTPUT = 0x8B48 -} ShShaderOutput; - -// Compile options. -typedef enum { - SH_VALIDATE = 0, - SH_VALIDATE_LOOP_INDEXING = 0x0001, - SH_INTERMEDIATE_TREE = 0x0002, - SH_OBJECT_CODE = 0x0004, - SH_VARIABLES = 0x0008, - SH_LINE_DIRECTIVES = 0x0010, - SH_SOURCE_PATH = 0x0020, - SH_UNROLL_FOR_LOOP_WITH_INTEGER_INDEX = 0x0040, - // If a sampler array index happens to be a loop index, - // 1) if its type is integer, unroll the loop. - // 2) if its type is float, fail the shader compile. - // This is to work around a mac driver bug. - SH_UNROLL_FOR_LOOP_WITH_SAMPLER_ARRAY_INDEX = 0x0080, - - // This is needed only as a workaround for certain OpenGL driver bugs. - SH_EMULATE_BUILT_IN_FUNCTIONS = 0x0100, - - // This is an experimental flag to enforce restrictions that aim to prevent - // timing attacks. - // It generates compilation errors for shaders that could expose sensitive - // texture information via the timing channel. - // To use this flag, you must compile the shader under the WebGL spec - // (using the SH_WEBGL_SPEC flag). - SH_TIMING_RESTRICTIONS = 0x0200, - - // This flag prints the dependency graph that is used to enforce timing - // restrictions on fragment shaders. - // This flag only has an effect if all of the following are true: - // - The shader spec is SH_WEBGL_SPEC. - // - The compile options contain the SH_TIMING_RESTRICTIONS flag. - // - The shader type is GL_FRAGMENT_SHADER. - SH_DEPENDENCY_GRAPH = 0x0400, - - // Enforce the GLSL 1.017 Appendix A section 7 packing restrictions. - // This flag only enforces (and can only enforce) the packing - // restrictions for uniform variables in both vertex and fragment - // shaders. ShCheckVariablesWithinPackingLimits() lets embedders - // enforce the packing restrictions for varying variables during - // program link time. - SH_ENFORCE_PACKING_RESTRICTIONS = 0x0800, - - // This flag ensures all indirect (expression-based) array indexing - // is clamped to the bounds of the array. This ensures, for example, - // that you cannot read off the end of a uniform, whether an array - // vec234, or mat234 type. The ShArrayIndexClampingStrategy enum, - // specified in the ShBuiltInResources when constructing the - // compiler, selects the strategy for the clamping implementation. - SH_CLAMP_INDIRECT_ARRAY_BOUNDS = 0x1000, - - // This flag limits the complexity of an expression. - SH_LIMIT_EXPRESSION_COMPLEXITY = 0x2000, - - // This flag limits the depth of the call stack. - SH_LIMIT_CALL_STACK_DEPTH = 0x4000, - - // This flag initializes gl_Position to vec4(0,0,0,0) at the - // beginning of the vertex shader's main(), and has no effect in the - // fragment shader. It is intended as a workaround for drivers which - // incorrectly fail to link programs if gl_Position is not written. - SH_INIT_GL_POSITION = 0x8000, - - // This flag replaces - // "a && b" with "a ? b : false", - // "a || b" with "a ? true : b". - // This is to work around a MacOSX driver bug that |b| is executed - // independent of |a|'s value. - SH_UNFOLD_SHORT_CIRCUIT = 0x10000, - - // This flag initializes varyings without static use in vertex shader - // at the beginning of main(), and has no effects in the fragment shader. - // It is intended as a workaround for drivers which incorrectly optimize - // out such varyings and cause a link failure. - SH_INIT_VARYINGS_WITHOUT_STATIC_USE = 0x20000, - - // This flag scalarizes vec/ivec/bvec/mat constructor args. - // It is intended as a workaround for Linux/Mac driver bugs. - SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS = 0x40000, - - // This flag overwrites a struct name with a unique prefix. - // It is intended as a workaround for drivers that do not handle - // struct scopes correctly, including all Mac drivers and Linux AMD. - SH_REGENERATE_STRUCT_NAMES = 0x80000, -} ShCompileOptions; - -// Defines alternate strategies for implementing array index clamping. -typedef enum { - // Use the clamp intrinsic for array index clamping. - SH_CLAMP_WITH_CLAMP_INTRINSIC = 1, - - // Use a user-defined function for array index clamping. - SH_CLAMP_WITH_USER_DEFINED_INT_CLAMP_FUNCTION -} ShArrayIndexClampingStrategy; - -// -// Driver must call this first, once, before doing any other -// compiler operations. -// If the function succeeds, the return value is true, else false. -// -COMPILER_EXPORT bool ShInitialize(); -// -// Driver should call this at shutdown. -// If the function succeeds, the return value is true, else false. -// -COMPILER_EXPORT bool ShFinalize(); - -// The 64 bits hash function. The first parameter is the input string; the -// second parameter is the string length. -typedef khronos_uint64_t (*ShHashFunction64)(const char*, size_t); - -// -// Implementation dependent built-in resources (constants and extensions). -// The names for these resources has been obtained by stripping gl_/GL_. -// -typedef struct -{ - // Constants. - int MaxVertexAttribs; - int MaxVertexUniformVectors; - int MaxVaryingVectors; - int MaxVertexTextureImageUnits; - int MaxCombinedTextureImageUnits; - int MaxTextureImageUnits; - int MaxFragmentUniformVectors; - int MaxDrawBuffers; - - // Extensions. - // Set to 1 to enable the extension, else 0. - int OES_standard_derivatives; - int OES_EGL_image_external; - int ARB_texture_rectangle; - int EXT_draw_buffers; - int EXT_frag_depth; - int EXT_shader_texture_lod; - - // Set to 1 to enable replacing GL_EXT_draw_buffers #extension directives - // with GL_NV_draw_buffers in ESSL output. This flag can be used to emulate - // EXT_draw_buffers by using it in combination with GLES3.0 glDrawBuffers - // function. This applies to Tegra K1 devices. - int NV_draw_buffers; - - // Set to 1 if highp precision is supported in the fragment language. - // Default is 0. - int FragmentPrecisionHigh; - - // GLSL ES 3.0 constants. - int MaxVertexOutputVectors; - int MaxFragmentInputVectors; - int MinProgramTexelOffset; - int MaxProgramTexelOffset; - - // Name Hashing. - // Set a 64 bit hash function to enable user-defined name hashing. - // Default is NULL. - ShHashFunction64 HashFunction; - - // Selects a strategy to use when implementing array index clamping. - // Default is SH_CLAMP_WITH_CLAMP_INTRINSIC. - ShArrayIndexClampingStrategy ArrayIndexClampingStrategy; - - // The maximum complexity an expression can be. - int MaxExpressionComplexity; - - // The maximum depth a call stack can be. - int MaxCallStackDepth; -} ShBuiltInResources; - -// -// Initialize built-in resources with minimum expected values. -// Parameters: -// resources: The object to initialize. Will be comparable with memcmp. -// -COMPILER_EXPORT void ShInitBuiltInResources(ShBuiltInResources *resources); - -// -// ShHandle held by but opaque to the driver. It is allocated, -// managed, and de-allocated by the compiler. Its contents -// are defined by and used by the compiler. -// -// If handle creation fails, 0 will be returned. -// -typedef void *ShHandle; - -// -// Returns the a concatenated list of the items in ShBuiltInResources as a -// null-terminated string. -// This function must be updated whenever ShBuiltInResources is changed. -// Parameters: -// handle: Specifies the handle of the compiler to be used. -COMPILER_EXPORT const std::string &ShGetBuiltInResourcesString(const ShHandle handle); - -// -// Driver calls these to create and destroy compiler objects. -// -// Returns the handle of constructed compiler, null if the requested compiler is -// not supported. -// Parameters: -// type: Specifies the type of shader - GL_FRAGMENT_SHADER or GL_VERTEX_SHADER. -// spec: Specifies the language spec the compiler must conform to - -// SH_GLES2_SPEC or SH_WEBGL_SPEC. -// output: Specifies the output code type - SH_ESSL_OUTPUT, SH_GLSL_OUTPUT, -// SH_HLSL9_OUTPUT or SH_HLSL11_OUTPUT. -// resources: Specifies the built-in resources. -COMPILER_EXPORT ShHandle ShConstructCompiler( - sh::GLenum type, - ShShaderSpec spec, - ShShaderOutput output, - const ShBuiltInResources *resources); -COMPILER_EXPORT void ShDestruct(ShHandle handle); - -// -// Compiles the given shader source. -// If the function succeeds, the return value is true, else false. -// Parameters: -// handle: Specifies the handle of compiler to be used. -// shaderStrings: Specifies an array of pointers to null-terminated strings -// containing the shader source code. -// numStrings: Specifies the number of elements in shaderStrings array. -// compileOptions: A mask containing the following parameters: -// SH_VALIDATE: Validates shader to ensure that it conforms to the spec -// specified during compiler construction. -// SH_VALIDATE_LOOP_INDEXING: Validates loop and indexing in the shader to -// ensure that they do not exceed the minimum -// functionality mandated in GLSL 1.0 spec, -// Appendix A, Section 4 and 5. -// There is no need to specify this parameter when -// compiling for WebGL - it is implied. -// SH_INTERMEDIATE_TREE: Writes intermediate tree to info log. -// Can be queried by calling ShGetInfoLog(). -// SH_OBJECT_CODE: Translates intermediate tree to glsl or hlsl shader. -// Can be queried by calling ShGetObjectCode(). -// SH_VARIABLES: Extracts attributes, uniforms, and varyings. -// Can be queried by calling ShGetVariableInfo(). -// -COMPILER_EXPORT bool ShCompile( - const ShHandle handle, - const char * const shaderStrings[], - size_t numStrings, - int compileOptions); - -// Return the version of the shader language. -COMPILER_EXPORT int ShGetShaderVersion(const ShHandle handle); - -// Return the currently set language output type. -COMPILER_EXPORT ShShaderOutput ShGetShaderOutputType( - const ShHandle handle); - -// Returns null-terminated information log for a compiled shader. -// Parameters: -// handle: Specifies the compiler -COMPILER_EXPORT const std::string &ShGetInfoLog(const ShHandle handle); - -// Returns null-terminated object code for a compiled shader. -// Parameters: -// handle: Specifies the compiler -COMPILER_EXPORT const std::string &ShGetObjectCode(const ShHandle handle); - -// Returns a (original_name, hash) map containing all the user defined -// names in the shader, including variable names, function names, struct -// names, and struct field names. -// Parameters: -// handle: Specifies the compiler -COMPILER_EXPORT const std::map<std::string, std::string> *ShGetNameHashingMap( - const ShHandle handle); - -// Shader variable inspection. -// Returns a pointer to a list of variables of the designated type. -// (See ShaderVars.h for type definitions, included above) -// Returns NULL on failure. -// Parameters: -// handle: Specifies the compiler -COMPILER_EXPORT const std::vector<sh::Uniform> *ShGetUniforms(const ShHandle handle); -COMPILER_EXPORT const std::vector<sh::Varying> *ShGetVaryings(const ShHandle handle); -COMPILER_EXPORT const std::vector<sh::Attribute> *ShGetAttributes(const ShHandle handle); -COMPILER_EXPORT const std::vector<sh::Attribute> *ShGetOutputVariables(const ShHandle handle); -COMPILER_EXPORT const std::vector<sh::InterfaceBlock> *ShGetInterfaceBlocks(const ShHandle handle); - -typedef struct -{ - sh::GLenum type; - int size; -} ShVariableInfo; - -// Returns true if the passed in variables pack in maxVectors following -// the packing rules from the GLSL 1.017 spec, Appendix A, section 7. -// Returns false otherwise. Also look at the SH_ENFORCE_PACKING_RESTRICTIONS -// flag above. -// Parameters: -// maxVectors: the available rows of registers. -// varInfoArray: an array of variable info (types and sizes). -// varInfoArraySize: the size of the variable array. -COMPILER_EXPORT bool ShCheckVariablesWithinPackingLimits( - int maxVectors, - ShVariableInfo *varInfoArray, - size_t varInfoArraySize); - -// Gives the compiler-assigned register for an interface block. -// The method writes the value to the output variable "indexOut". -// Returns true if it found a valid interface block, false otherwise. -// Parameters: -// handle: Specifies the compiler -// interfaceBlockName: Specifies the interface block -// indexOut: output variable that stores the assigned register -COMPILER_EXPORT bool ShGetInterfaceBlockRegister(const ShHandle handle, - const std::string &interfaceBlockName, - unsigned int *indexOut); - -// Gives the compiler-assigned register for uniforms in the default -// interface block. -// The method writes the value to the output variable "indexOut". -// Returns true if it found a valid default uniform, false otherwise. -// Parameters: -// handle: Specifies the compiler -// interfaceBlockName: Specifies the uniform -// indexOut: output variable that stores the assigned register -COMPILER_EXPORT bool ShGetUniformRegister(const ShHandle handle, - const std::string &uniformName, - unsigned int *indexOut); - -#endif // _COMPILER_INTERFACE_INCLUDED_ diff --git a/platform/winrt/include/GLSLANG/ShaderVars.h b/platform/winrt/include/GLSLANG/ShaderVars.h deleted file mode 100644 index da21c3e76e..0000000000 --- a/platform/winrt/include/GLSLANG/ShaderVars.h +++ /dev/null @@ -1,185 +0,0 @@ -// -// Copyright (c) 2013-2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// ShaderVars.h: -// Types to represent GL variables (varyings, uniforms, etc) -// - -#ifndef _COMPILER_INTERFACE_VARIABLES_ -#define _COMPILER_INTERFACE_VARIABLES_ - -#include <string> -#include <vector> -#include <algorithm> - -// Assume ShaderLang.h is included before ShaderVars.h, for sh::GLenum -// Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h - -namespace sh -{ - -// Varying interpolation qualifier, see section 4.3.9 of the ESSL 3.00.4 spec -enum InterpolationType -{ - INTERPOLATION_SMOOTH, - INTERPOLATION_CENTROID, - INTERPOLATION_FLAT -}; - -// Uniform block layout qualifier, see section 4.3.8.3 of the ESSL 3.00.4 spec -enum BlockLayoutType -{ - BLOCKLAYOUT_STANDARD, - BLOCKLAYOUT_PACKED, - BLOCKLAYOUT_SHARED -}; - -// Base class for all variables defined in shaders, including Varyings, Uniforms, etc -// Note: we must override the copy constructor and assignment operator so we can -// work around excessive GCC binary bloating: -// See https://code.google.com/p/angleproject/issues/detail?id=697 -struct COMPILER_EXPORT ShaderVariable -{ - ShaderVariable(); - ShaderVariable(GLenum typeIn, unsigned int arraySizeIn); - ~ShaderVariable(); - ShaderVariable(const ShaderVariable &other); - ShaderVariable &operator=(const ShaderVariable &other); - - bool isArray() const { return arraySize > 0; } - unsigned int elementCount() const { return std::max(1u, arraySize); } - bool isStruct() const { return !fields.empty(); } - - // All of the shader's variables are described using nested data - // structures. This is needed in order to disambiguate similar looking - // types, such as two structs containing the same fields, but in - // different orders. "findInfoByMappedName" provides an easy query for - // users to dive into the data structure and fetch the unique variable - // instance corresponding to a dereferencing chain of the top-level - // variable. - // Given a mapped name like 'a[0].b.c[0]', return the ShaderVariable - // that defines 'c' in |leafVar|, and the original name 'A[0].B.C[0]' - // in |originalName|, based on the assumption that |this| defines 'a'. - // If no match is found, return false. - bool findInfoByMappedName(const std::string &mappedFullName, - const ShaderVariable **leafVar, - std::string* originalFullName) const; - - GLenum type; - GLenum precision; - std::string name; - std::string mappedName; - unsigned int arraySize; - bool staticUse; - std::vector<ShaderVariable> fields; - std::string structName; - - protected: - bool isSameVariableAtLinkTime(const ShaderVariable &other, - bool matchPrecision) const; - - bool operator==(const ShaderVariable &other) const; - bool operator!=(const ShaderVariable &other) const - { - return !operator==(other); - } -}; - -struct COMPILER_EXPORT Uniform : public ShaderVariable -{ - Uniform(); - ~Uniform(); - Uniform(const Uniform &other); - Uniform &operator=(const Uniform &other); - bool operator==(const Uniform &other) const; - bool operator!=(const Uniform &other) const - { - return !operator==(other); - } - - // Decide whether two uniforms are the same at shader link time, - // assuming one from vertex shader and the other from fragment shader. - // See GLSL ES Spec 3.00.3, sec 4.3.5. - bool isSameUniformAtLinkTime(const Uniform &other) const; -}; - -struct COMPILER_EXPORT Attribute : public ShaderVariable -{ - Attribute(); - ~Attribute(); - Attribute(const Attribute &other); - Attribute &operator=(const Attribute &other); - bool operator==(const Attribute &other) const; - bool operator!=(const Attribute &other) const - { - return !operator==(other); - } - - int location; -}; - -struct COMPILER_EXPORT InterfaceBlockField : public ShaderVariable -{ - InterfaceBlockField(); - ~InterfaceBlockField(); - InterfaceBlockField(const InterfaceBlockField &other); - InterfaceBlockField &operator=(const InterfaceBlockField &other); - bool operator==(const InterfaceBlockField &other) const; - bool operator!=(const InterfaceBlockField &other) const - { - return !operator==(other); - } - - // Decide whether two InterfaceBlock fields are the same at shader - // link time, assuming one from vertex shader and the other from - // fragment shader. - // See GLSL ES Spec 3.00.3, sec 4.3.7. - bool isSameInterfaceBlockFieldAtLinkTime( - const InterfaceBlockField &other) const; - - bool isRowMajorLayout; -}; - -struct COMPILER_EXPORT Varying : public ShaderVariable -{ - Varying(); - ~Varying(); - Varying(const Varying &otherg); - Varying &operator=(const Varying &other); - bool operator==(const Varying &other) const; - bool operator!=(const Varying &other) const - { - return !operator==(other); - } - - // Decide whether two varyings are the same at shader link time, - // assuming one from vertex shader and the other from fragment shader. - // See GLSL ES Spec 3.00.3, sec 4.3.9. - bool isSameVaryingAtLinkTime(const Varying &other) const; - - InterpolationType interpolation; - bool isInvariant; -}; - -struct COMPILER_EXPORT InterfaceBlock -{ - InterfaceBlock(); - ~InterfaceBlock(); - InterfaceBlock(const InterfaceBlock &other); - InterfaceBlock &operator=(const InterfaceBlock &other); - - std::string name; - std::string mappedName; - std::string instanceName; - unsigned int arraySize; - BlockLayoutType layout; - bool isRowMajorLayout; - bool staticUse; - std::vector<InterfaceBlockField> fields; -}; - -} - -#endif // _COMPILER_INTERFACE_VARIABLES_ diff --git a/platform/winrt/include/KHR/khrplatform.h b/platform/winrt/include/KHR/khrplatform.h deleted file mode 100644 index 43aac97a73..0000000000 --- a/platform/winrt/include/KHR/khrplatform.h +++ /dev/null @@ -1,282 +0,0 @@ -#ifndef __khrplatform_h_ -#define __khrplatform_h_ - -/* -** Copyright (c) 2008-2009 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are 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 Materials. -** -** THE MATERIALS ARE 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 -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -/* Khronos platform-specific types and definitions. - * - * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $ - * - * Adopters may modify this file to suit their platform. Adopters are - * encouraged to submit platform specific modifications to the Khronos - * group so that they can be included in future versions of this file. - * Please submit changes by sending them to the public Khronos Bugzilla - * (http://khronos.org/bugzilla) by filing a bug against product - * "Khronos (general)" component "Registry". - * - * A predefined template which fills in some of the bug fields can be - * reached using http://tinyurl.com/khrplatform-h-bugreport, but you - * must create a Bugzilla login first. - * - * - * See the Implementer's Guidelines for information about where this file - * should be located on your system and for more details of its use: - * http://www.khronos.org/registry/implementers_guide.pdf - * - * This file should be included as - * #include <KHR/khrplatform.h> - * by Khronos client API header files that use its types and defines. - * - * The types in khrplatform.h should only be used to define API-specific types. - * - * Types defined in khrplatform.h: - * khronos_int8_t signed 8 bit - * khronos_uint8_t unsigned 8 bit - * khronos_int16_t signed 16 bit - * khronos_uint16_t unsigned 16 bit - * khronos_int32_t signed 32 bit - * khronos_uint32_t unsigned 32 bit - * khronos_int64_t signed 64 bit - * khronos_uint64_t unsigned 64 bit - * khronos_intptr_t signed same number of bits as a pointer - * khronos_uintptr_t unsigned same number of bits as a pointer - * khronos_ssize_t signed size - * khronos_usize_t unsigned size - * khronos_float_t signed 32 bit floating point - * khronos_time_ns_t unsigned 64 bit time in nanoseconds - * khronos_utime_nanoseconds_t unsigned time interval or absolute time in - * nanoseconds - * khronos_stime_nanoseconds_t signed time interval in nanoseconds - * khronos_boolean_enum_t enumerated boolean type. This should - * only be used as a base type when a client API's boolean type is - * an enum. Client APIs which use an integer or other type for - * booleans cannot use this as the base type for their boolean. - * - * Tokens defined in khrplatform.h: - * - * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. - * - * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. - * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. - * - * Calling convention macros defined in this file: - * KHRONOS_APICALL - * KHRONOS_APIENTRY - * KHRONOS_APIATTRIBUTES - * - * These may be used in function prototypes as: - * - * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( - * int arg1, - * int arg2) KHRONOS_APIATTRIBUTES; - */ - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APICALL - *------------------------------------------------------------------------- - * This precedes the return type of the function in the function prototype. - */ -#if defined(_WIN32) && !defined(__SCITECH_SNAP__) -# define KHRONOS_APICALL __declspec(dllimport) -#elif defined (__SYMBIAN32__) -# define KHRONOS_APICALL IMPORT_C -#else -# define KHRONOS_APICALL -#endif - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APIENTRY - *------------------------------------------------------------------------- - * This follows the return type of the function and precedes the function - * name in the function prototype. - */ -#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) - /* Win32 but not WinCE */ -# define KHRONOS_APIENTRY __stdcall -#else -# define KHRONOS_APIENTRY -#endif - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APIATTRIBUTES - *------------------------------------------------------------------------- - * This follows the closing parenthesis of the function prototype arguments. - */ -#if defined (__ARMCC_2__) -#define KHRONOS_APIATTRIBUTES __softfp -#else -#define KHRONOS_APIATTRIBUTES -#endif - -/*------------------------------------------------------------------------- - * basic type definitions - *-----------------------------------------------------------------------*/ -#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) - - -/* - * Using <stdint.h> - */ -#include <stdint.h> -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(__VMS ) || defined(__sgi) - -/* - * Using <inttypes.h> - */ -#include <inttypes.h> -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) - -/* - * Win32 - */ -typedef __int32 khronos_int32_t; -typedef unsigned __int32 khronos_uint32_t; -typedef __int64 khronos_int64_t; -typedef unsigned __int64 khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(__sun__) || defined(__digital__) - -/* - * Sun or Digital - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#if defined(__arch64__) || defined(_LP64) -typedef long int khronos_int64_t; -typedef unsigned long int khronos_uint64_t; -#else -typedef long long int khronos_int64_t; -typedef unsigned long long int khronos_uint64_t; -#endif /* __arch64__ */ -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif 0 - -/* - * Hypothetical platform with no float or int64 support - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#define KHRONOS_SUPPORT_INT64 0 -#define KHRONOS_SUPPORT_FLOAT 0 - -#else - -/* - * Generic fallback - */ -#include <stdint.h> -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#endif - - -/* - * Types that are (so far) the same on all platforms - */ -typedef signed char khronos_int8_t; -typedef unsigned char khronos_uint8_t; -typedef signed short int khronos_int16_t; -typedef unsigned short int khronos_uint16_t; - -/* - * Types that differ between LLP64 and LP64 architectures - in LLP64, - * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears - * to be the only LLP64 architecture in current use. - */ -#ifdef _WIN64 -typedef signed long long int khronos_intptr_t; -typedef unsigned long long int khronos_uintptr_t; -typedef signed long long int khronos_ssize_t; -typedef unsigned long long int khronos_usize_t; -#else -typedef signed long int khronos_intptr_t; -typedef unsigned long int khronos_uintptr_t; -typedef signed long int khronos_ssize_t; -typedef unsigned long int khronos_usize_t; -#endif - -#if KHRONOS_SUPPORT_FLOAT -/* - * Float type - */ -typedef float khronos_float_t; -#endif - -#if KHRONOS_SUPPORT_INT64 -/* Time types - * - * These types can be used to represent a time interval in nanoseconds or - * an absolute Unadjusted System Time. Unadjusted System Time is the number - * of nanoseconds since some arbitrary system event (e.g. since the last - * time the system booted). The Unadjusted System Time is an unsigned - * 64 bit value that wraps back to 0 every 584 years. Time intervals - * may be either signed or unsigned. - */ -typedef khronos_uint64_t khronos_utime_nanoseconds_t; -typedef khronos_int64_t khronos_stime_nanoseconds_t; -#endif - -/* - * Dummy value used to pad enum types to 32 bits. - */ -#ifndef KHRONOS_MAX_ENUM -#define KHRONOS_MAX_ENUM 0x7FFFFFFF -#endif - -/* - * Enumerated boolean type - * - * Values other than zero should be considered to be true. Therefore - * comparisons should not be made against KHRONOS_TRUE. - */ -typedef enum { - KHRONOS_FALSE = 0, - KHRONOS_TRUE = 1, - KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM -} khronos_boolean_enum_t; - -#endif /* __khrplatform_h_ */ diff --git a/platform/winrt/include/LICENSE.ANGLE.txt b/platform/winrt/include/LICENSE.ANGLE.txt deleted file mode 100644 index bdacb32e36..0000000000 --- a/platform/winrt/include/LICENSE.ANGLE.txt +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2002-2013 The ANGLE Project Authors. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. -// Ltd., nor the names of their contributors may be used to endorse -// or promote products derived from this software without specific -// prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. diff --git a/platform/winrt/include/angle_gl.h b/platform/winrt/include/angle_gl.h deleted file mode 100644 index d093f75ee2..0000000000 --- a/platform/winrt/include/angle_gl.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// angle_gl.h: -// Includes all necessary GL headers and definitions for ANGLE. -// - -#ifndef ANGLE_GL_H_ -#define ANGLE_GL_H_ - -#include "GLES2/gl2.h" -#include "GLES2/gl2ext.h" -#include "GLES3/gl3.h" -#include "GLES3/gl3ext.h" - -// The following enum is used in ANGLE, but is from desktop GL -#ifndef GL_SAMPLER_2D_RECT_ARB -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#endif - -#endif // ANGLE_GL_H_ diff --git a/platform/winrt/include/angle_windowsstore.h b/platform/winrt/include/angle_windowsstore.h deleted file mode 100644 index 53ec93e037..0000000000 --- a/platform/winrt/include/angle_windowsstore.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// angle_windowsstore.h: - -#ifndef ANGLE_WINDOWSSTORE_H_ -#define ANGLE_WINDOWSSTORE_H_ - -// The following properties can be set on the CoreApplication to support additional -// ANGLE configuration options. -// -// The Visual Studio sample templates provided with this version of ANGLE have examples -// of how to set these property values. - -// -// Property: EGLNativeWindowTypeProperty -// Type: IInspectable -// Description: Set this property to specify the window type to use for creating a surface. -// If this property is missing, surface creation will fail. -// -const wchar_t EGLNativeWindowTypeProperty[] = L"EGLNativeWindowTypeProperty"; - -// -// Property: EGLRenderSurfaceSizeProperty -// Type: Size -// Description: Set this property to specify a preferred size in pixels of the render surface. -// The render surface size width and height must be greater than 0. -// If this property is set, then the render surface size is fixed. -// If this property is missing, a default behavior will be provided. -// The default behavior uses the window size if a CoreWindow is specified or -// the size of the SwapChainPanel control if one is specified. -// -const wchar_t EGLRenderSurfaceSizeProperty[] = L"EGLRenderSurfaceSizeProperty"; - -#endif // ANGLE_WINDOWSSTORE_H_ diff --git a/platform/winrt/joystick_winrt.cpp b/platform/winrt/joystick_winrt.cpp new file mode 100644 index 0000000000..9f93c5a26b --- /dev/null +++ b/platform/winrt/joystick_winrt.cpp @@ -0,0 +1,147 @@ +/*************************************************************************/ +/* joystick.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_winrt.h" + +using namespace Windows::Gaming::Input; +using namespace Windows::Foundation; + +void JoystickWinrt::register_events() { + + Gamepad::GamepadAdded += + ref new EventHandler<Gamepad^>(this, &JoystickWinrt::OnGamepadAdded); + Gamepad::GamepadRemoved += + ref new EventHandler<Gamepad^>(this, &JoystickWinrt::OnGamepadRemoved); +} + +uint32_t JoystickWinrt::process_controllers(uint32_t p_last_id) { + + for (int i = 0; i < MAX_CONTROLLERS; i++) { + + if (!controllers[i].connected) break; + + switch (controllers[i].type) { + + case ControllerType::GAMEPAD_CONTROLLER: { + + GamepadReading reading = ((Gamepad^)controllers[i].controller_reference)->GetCurrentReading(); + + int button_mask = (int)GamepadButtons::Menu; + for (int j = 0; j < 14; j++) { + + p_last_id = input->joy_button(p_last_id, controllers[i].id, j,(int)reading.Buttons & button_mask); + button_mask *= 2; + } + + p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_0, axis_correct(reading.LeftThumbstickX)); + p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_1, axis_correct(reading.LeftThumbstickY, true)); + p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_2, axis_correct(reading.RightThumbstickX)); + p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_3, axis_correct(reading.RightThumbstickY, true)); + p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_4, axis_correct(reading.LeftTrigger, false, true)); + p_last_id = input->joy_axis(p_last_id, controllers[i].id, JOY_AXIS_5, axis_correct(reading.RightTrigger, false, true)); + + break; + } + } + } + + return p_last_id; +} + +JoystickWinrt::JoystickWinrt() { + + for (int i = 0; i < MAX_CONTROLLERS; i++) + controllers[i].id = i; +} + +JoystickWinrt::JoystickWinrt(InputDefault * p_input) { + + input = p_input; + + JoystickWinrt(); +} + +void JoystickWinrt::OnGamepadAdded(Platform::Object ^ sender, Windows::Gaming::Input::Gamepad ^ value) { + + short idx = -1; + + for (int i = 0; i < MAX_CONTROLLERS; i++) { + + if (!controllers[i].connected) { + idx = i; + break; + } + } + + ERR_FAIL_COND(idx == -1); + + controllers[idx].connected = true; + controllers[idx].controller_reference = value; + controllers[idx].id = idx; + controllers[idx].type = ControllerType::GAMEPAD_CONTROLLER; + + input->joy_connection_changed(controllers[idx].id, true, "Xbox Controller", "__WINRT_GAMEPAD__"); +} + +void JoystickWinrt::OnGamepadRemoved(Platform::Object ^ sender, Windows::Gaming::Input::Gamepad ^ value) { + + short idx = -1; + + for (int i = 0; i < MAX_CONTROLLERS; i++) { + + if (controllers[i].controller_reference == value) { + idx = i; + break; + } + } + + ERR_FAIL_COND(idx == -1); + + for (int i = idx + 1; i < MAX_CONTROLLERS - 1; i++) { + + if (!controllers[i].connected) { + break; + } + + controllers[i - 1] = controllers[i]; + } + controllers[MAX_CONTROLLERS - 1] = ControllerDevice(); + + input->joy_connection_changed(idx, false, "Xbox Controller"); +} + +InputDefault::JoyAxis JoystickWinrt::axis_correct(double p_val, bool p_negate, bool p_trigger) const { + + InputDefault::JoyAxis jx; + + jx.min = p_trigger ? 0 : -1; + jx.value = (float)(p_negate ? -p_val : p_val); + + return jx; +} diff --git a/tools/ios_xcode_template/godot_iosTests/godot_iosTests.m b/platform/winrt/joystick_winrt.h index d9fac0a250..17f9565708 100644 --- a/tools/ios_xcode_template/godot_iosTests/godot_iosTests.m +++ b/platform/winrt/joystick_winrt.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* godot_iosTests.m */ +/* joystick.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -26,30 +26,56 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ +#ifndef JOYSTICK_WINRT_H +#define JOYSTICK_WINRT_H -#import <XCTest/XCTest.h> +#include "main/input_default.h" -@interface godot_iosTests : XCTestCase +ref class JoystickWinrt sealed { -@end +internal: -@implementation godot_iosTests + void register_events(); + uint32_t process_controllers(uint32_t p_last_id); -- (void)setUp -{ - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. -} + JoystickWinrt(); + JoystickWinrt(InputDefault* p_input); -- (void)tearDown -{ - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} +private: -- (void)testExample -{ - XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); -} + enum { + MAX_CONTROLLERS = 4, + }; -@end + enum ControllerType { + GAMEPAD_CONTROLLER, + ARCADE_STICK_CONTROLLER, + RACING_WHEEL_CONTROLLER, + }; + + struct ControllerDevice { + + Windows::Gaming::Input::IGameController^ controller_reference; + + int id; + bool connected; + ControllerType type; + + ControllerDevice() { + id = -1; + connected = false; + type = ControllerType::GAMEPAD_CONTROLLER; + } + }; + + ControllerDevice controllers[MAX_CONTROLLERS]; + + InputDefault* input; + + void OnGamepadAdded(Platform::Object^ sender, Windows::Gaming::Input::Gamepad^ value); + void OnGamepadRemoved(Platform::Object^ sender, Windows::Gaming::Input::Gamepad^ value); + + InputDefault::JoyAxis axis_correct(double p_val, bool p_negate = false, bool p_trigger = false) const; +}; + +#endif diff --git a/platform/winrt/os_winrt.cpp b/platform/winrt/os_winrt.cpp index f045f54bf6..0ce561f88a 100644 --- a/platform/winrt/os_winrt.cpp +++ b/platform/winrt/os_winrt.cpp @@ -32,7 +32,7 @@ #include "drivers/unix/memory_pool_static_malloc.h" #include "os/memory_pool_dynamic_static.h" #include "thread_winrt.h" -//#include "drivers/windows/semaphore_windows.h" +#include "drivers/windows/semaphore_windows.h" #include "drivers/windows/mutex_windows.h" #include "main/main.h" #include "drivers/windows/file_access_windows.h" @@ -47,15 +47,27 @@ #include "globals.h" #include "io/marshalls.h" +#include "platform/windows/packet_peer_udp_winsock.h" +#include "platform/windows/stream_peer_winsock.h" +#include "platform/windows/tcp_server_winsock.h" +#include "drivers/unix/ip_unix.h" + #include <wrl.h> +#include <ppltasks.h> using namespace Windows::ApplicationModel::Core; using namespace Windows::ApplicationModel::Activation; using namespace Windows::UI::Core; using namespace Windows::UI::Input; +using namespace Windows::UI::Popups; using namespace Windows::Foundation; using namespace Windows::Graphics::Display; using namespace Microsoft::WRL; +using namespace Windows::UI::ViewManagement; +using namespace Windows::Devices::Input; +using namespace Windows::Devices::Sensors; +using namespace Windows::ApplicationModel::DataTransfer; +using namespace concurrency; int OSWinrt::get_video_driver_count() const { @@ -72,6 +84,66 @@ OS::VideoMode OSWinrt::get_default_video_mode() const { return video_mode; } +Size2 OSWinrt::get_window_size() const { + Size2 size; + size.width = video_mode.width; + size.height = video_mode.height; + return size; +} + +void OSWinrt::set_window_size(const Size2 p_size) { + + Windows::Foundation::Size new_size; + new_size.Width = p_size.width; + new_size.Height = p_size.height; + + ApplicationView^ view = ApplicationView::GetForCurrentView(); + + if (view->TryResizeView(new_size)) { + + video_mode.width = p_size.width; + video_mode.height = p_size.height; + } +} + +void OSWinrt::set_window_fullscreen(bool p_enabled) { + + ApplicationView^ view = ApplicationView::GetForCurrentView(); + + video_mode.fullscreen = view->IsFullScreenMode; + + if (video_mode.fullscreen == p_enabled) + return; + + if (p_enabled) { + + video_mode.fullscreen = view->TryEnterFullScreenMode(); + + } else { + + view->ExitFullScreenMode(); + video_mode.fullscreen = false; + + } +} + +bool OSWinrt::is_window_fullscreen() const { + + return ApplicationView::GetForCurrentView()->IsFullScreenMode; +} + +void OSWinrt::set_keep_screen_on(bool p_enabled) { + + if (is_keep_screen_on() == p_enabled) return; + + if (p_enabled) + display_request->RequestActive(); + else + display_request->RequestRelease(); + + OS::set_keep_screen_on(p_enabled); +} + int OSWinrt::get_audio_driver_count() const { return AudioDriverManagerSW::get_driver_count(); @@ -94,7 +166,7 @@ void OSWinrt::initialize_core() { //RedirectIOToConsole(); ThreadWinrt::make_default(); - //SemaphoreWindows::make_default(); + SemaphoreWindows::make_default(); MutexWindows::make_default(); FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_RESOURCES); @@ -108,6 +180,10 @@ void OSWinrt::initialize_core() { //TCPServerWinsock::make_default(); //StreamPeerWinsock::make_default(); + TCPServerWinsock::make_default(); + StreamPeerWinsock::make_default(); + PacketPeerUDPWinsock::make_default(); + mempool_static = new MemoryPoolStaticMalloc; #if 1 mempool_dynamic = memnew( MemoryPoolDynamicStatic ); @@ -126,6 +202,8 @@ void OSWinrt::initialize_core() { ticks_start = 0; ticks_start = get_ticks_usec(); + IP_Unix::make_default(); + cursor_shape=CURSOR_ARROW; } @@ -154,9 +232,38 @@ void OSWinrt::initialize(const VideoMode& p_desired,int p_video_driver,int p_aud VideoMode vm; vm.width = gl_context->get_window_width(); vm.height = gl_context->get_window_height(); - vm.fullscreen = true; vm.resizable = false; + ApplicationView^ view = ApplicationView::GetForCurrentView(); + vm.fullscreen = view->IsFullScreenMode; + + view->SetDesiredBoundsMode(ApplicationViewBoundsMode::UseVisible); + view->PreferredLaunchWindowingMode = ApplicationViewWindowingMode::PreferredLaunchViewSize; + + if (p_desired.fullscreen != view->IsFullScreenMode) { + if (p_desired.fullscreen) { + + vm.fullscreen = view->TryEnterFullScreenMode(); + + } else { + + view->ExitFullScreenMode(); + vm.fullscreen = false; + } + } + + Windows::Foundation::Size desired; + desired.Width = p_desired.width; + desired.Height = p_desired.height; + + view->PreferredLaunchViewSize = desired; + + if (view->TryResizeView(desired)) { + + vm.width = view->VisibleBounds.Width; + vm.height = view->VisibleBounds.Height; + } + set_video_mode(vm); gl_context->make_current(); @@ -179,6 +286,9 @@ void OSWinrt::initialize(const VideoMode& p_desired,int p_video_driver,int p_aud input = memnew( InputDefault ); + joystick = ref new JoystickWinrt(input); + joystick->register_events(); + AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton(); if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) { @@ -196,96 +306,77 @@ void OSWinrt::initialize(const VideoMode& p_desired,int p_video_driver,int p_aud spatial_sound_2d_server = memnew( SpatialSound2DServerSW ); spatial_sound_2d_server->init(); + managed_object->update_clipboard(); - _ensure_data_dir(); -} - -void OSWinrt::set_clipboard(const String& p_text) { - - /* - if (!OpenClipboard(hWnd)) { - ERR_EXPLAIN("Unable to open clipboard."); - ERR_FAIL(); - }; - EmptyClipboard(); - - HGLOBAL mem = GlobalAlloc(GMEM_MOVEABLE, (p_text.length() + 1) * sizeof(CharType)); - if (mem == NULL) { - ERR_EXPLAIN("Unable to allocate memory for clipboard contents."); - ERR_FAIL(); - }; - LPWSTR lptstrCopy = (LPWSTR)GlobalLock(mem); - memcpy(lptstrCopy, p_text.c_str(), (p_text.length() + 1) * sizeof(CharType)); - //memset((lptstrCopy + p_text.length()), 0, sizeof(CharType)); - GlobalUnlock(mem); - - SetClipboardData(CF_UNICODETEXT, mem); - - // set the CF_TEXT version (not needed?) - CharString utf8 = p_text.utf8(); - mem = GlobalAlloc(GMEM_MOVEABLE, utf8.length() + 1); - if (mem == NULL) { - ERR_EXPLAIN("Unable to allocate memory for clipboard contents."); - ERR_FAIL(); - }; - LPTSTR ptr = (LPTSTR)GlobalLock(mem); - memcpy(ptr, utf8.get_data(), utf8.length()); - ptr[utf8.length()] = 0; - GlobalUnlock(mem); - - SetClipboardData(CF_TEXT, mem); - - CloseClipboard(); - */ -}; + Clipboard::ContentChanged += ref new EventHandler<Platform::Object^>(managed_object, &ManagedType::on_clipboard_changed); -String OSWinrt::get_clipboard() const { + accelerometer = Accelerometer::GetDefault(); + if (accelerometer != nullptr) { + // 60 FPS + accelerometer->ReportInterval = (1.0f / 60.0f) * 1000; + accelerometer->ReadingChanged += + ref new TypedEventHandler<Accelerometer^, AccelerometerReadingChangedEventArgs^> + (managed_object, &ManagedType::on_accelerometer_reading_changed); + } - /* - String ret; - if (!OpenClipboard(hWnd)) { - ERR_EXPLAIN("Unable to open clipboard."); - ERR_FAIL_V(""); - }; + magnetometer = Magnetometer::GetDefault(); + if (magnetometer != nullptr) { + // 60 FPS + magnetometer->ReportInterval = (1.0f / 60.0f) * 1000; + magnetometer->ReadingChanged += + ref new TypedEventHandler<Magnetometer^, MagnetometerReadingChangedEventArgs^> + (managed_object, &ManagedType::on_magnetometer_reading_changed); + } - if (IsClipboardFormatAvailable(CF_UNICODETEXT)) { + gyrometer = Gyrometer::GetDefault(); + if (gyrometer != nullptr) { + // 60 FPS + gyrometer->ReportInterval = (1.0f / 60.0f) * 1000; + gyrometer->ReadingChanged += + ref new TypedEventHandler<Gyrometer^, GyrometerReadingChangedEventArgs^> + (managed_object, &ManagedType::on_gyroscope_reading_changed); + } - HGLOBAL mem = GetClipboardData(CF_UNICODETEXT); - if (mem != NULL) { + _ensure_data_dir(); - LPWSTR ptr = (LPWSTR)GlobalLock(mem); - if (ptr != NULL) { + if (is_keep_screen_on()) + display_request->RequestActive(); - ret = String((CharType*)ptr); - GlobalUnlock(mem); - }; - }; + set_keep_screen_on(GLOBAL_DEF("display/keep_screen_on", true)); - } else if (IsClipboardFormatAvailable(CF_TEXT)) { +} - HGLOBAL mem = GetClipboardData(CF_UNICODETEXT); - if (mem != NULL) { +void OSWinrt::set_clipboard(const String& p_text) { - LPTSTR ptr = (LPTSTR)GlobalLock(mem); - if (ptr != NULL) { + DataPackage^ clip = ref new DataPackage(); + clip->RequestedOperation = DataPackageOperation::Copy; + clip->SetText(ref new Platform::String((const wchar_t*)p_text.c_str())); - ret.parse_utf8((const char*)ptr); - GlobalUnlock(mem); - }; - }; - }; + Clipboard::SetContent(clip); +}; - CloseClipboard(); +String OSWinrt::get_clipboard() const { - return ret; - */ - return ""; + if (managed_object->clipboard != nullptr) + return managed_object->clipboard->Data(); + else + return ""; }; void OSWinrt::input_event(InputEvent &p_event) { + p_event.ID = ++last_id; + input->parse_input_event(p_event); + + if (p_event.type == InputEvent::MOUSE_BUTTON && p_event.mouse_button.pressed && p_event.mouse_button.button_index>3) { + + //send release for mouse wheel + p_event.mouse_button.pressed = false; + p_event.ID = ++last_id; + input->parse_input_event(p_event); + } }; void OSWinrt::delete_main_loop() { @@ -339,6 +430,8 @@ void OSWinrt::finalize() { physics_2d_server->finish(); memdelete(physics_2d_server); + joystick = nullptr; + } void OSWinrt::finalize_core() { @@ -370,9 +463,6 @@ void OSWinrt::vprint(const char* p_format, va_list p_list, bool p_stderr) { else wprintf(L"%s",wbuf); -#ifdef STDOUT_FILE - //vwfprintf(stdo,p_format,p_list); -#endif free(wbuf); fflush(stdout); @@ -380,11 +470,101 @@ void OSWinrt::vprint(const char* p_format, va_list p_list, bool p_stderr) { void OSWinrt::alert(const String& p_alert,const String& p_title) { - print_line("ALERT: "+p_alert); + Platform::String^ alert = ref new Platform::String(p_alert.c_str()); + Platform::String^ title = ref new Platform::String(p_title.c_str()); + + MessageDialog^ msg = ref new MessageDialog(alert, title); + + UICommand^ close = ref new UICommand("Close", ref new UICommandInvokedHandler(managed_object, &OSWinrt::ManagedType::alert_close)); + msg->Commands->Append(close); + msg->DefaultCommandIndex = 0; + + managed_object->alert_close_handle = true; + + msg->ShowAsync(); +} + +void OSWinrt::ManagedType::alert_close(IUICommand^ command) { + + alert_close_handle = false; +} + +void OSWinrt::ManagedType::on_clipboard_changed(Platform::Object ^ sender, Platform::Object ^ ev) { + + update_clipboard(); +} + +void OSWinrt::ManagedType::update_clipboard() { + + DataPackageView^ data = Clipboard::GetContent(); + + if (data->Contains(StandardDataFormats::Text)) { + + create_task(data->GetTextAsync()).then( + [this](Platform::String^ clipboard_content) { + + this->clipboard = clipboard_content; + }); + } +} + +void OSWinrt::ManagedType::on_accelerometer_reading_changed(Accelerometer ^ sender, AccelerometerReadingChangedEventArgs ^ args) { + + AccelerometerReading^ reading = args->Reading; + + os->input->set_accelerometer(Vector3( + reading->AccelerationX, + reading->AccelerationY, + reading->AccelerationZ + )); +} + +void OSWinrt::ManagedType::on_magnetometer_reading_changed(Magnetometer ^ sender, MagnetometerReadingChangedEventArgs ^ args) { + + MagnetometerReading^ reading = args->Reading; + + os->input->set_magnetometer(Vector3( + reading->MagneticFieldX, + reading->MagneticFieldY, + reading->MagneticFieldZ + )); +} + +void OSWinrt::ManagedType::on_gyroscope_reading_changed(Gyrometer ^ sender, GyrometerReadingChangedEventArgs ^ args) { + + GyrometerReading^ reading = args->Reading; + + os->input->set_magnetometer(Vector3( + reading->AngularVelocityX, + reading->AngularVelocityY, + reading->AngularVelocityZ + )); } void OSWinrt::set_mouse_mode(MouseMode p_mode) { + if (p_mode == MouseMode::MOUSE_MODE_CAPTURED) { + + CoreWindow::GetForCurrentThread()->SetPointerCapture(); + + } else { + + CoreWindow::GetForCurrentThread()->ReleasePointerCapture(); + + } + + if (p_mode == MouseMode::MOUSE_MODE_CAPTURED || p_mode == MouseMode::MOUSE_MODE_HIDDEN) { + + CoreWindow::GetForCurrentThread()->PointerCursor = nullptr; + + } else { + + CoreWindow::GetForCurrentThread()->PointerCursor = ref new CoreCursor(CoreCursorType::Arrow, 0); + } + + mouse_mode = p_mode; + + SetEvent(mouse_mode_changed); } OSWinrt::MouseMode OSWinrt::get_mouse_mode() const{ @@ -482,7 +662,7 @@ OS::Time OSWinrt::get_time(bool utc) const { return time; } -OS::TimeZoneInfo OS_Windows::get_time_zone_info() const { +OS::TimeZoneInfo OSWinrt::get_time_zone_info() const { TIME_ZONE_INFORMATION info; bool daylight = false; if (GetTimeZoneInformation(&info) == TIME_ZONE_ID_DAYLIGHT) @@ -503,7 +683,7 @@ uint64_t OSWinrt::get_unix_time() const { FILETIME ft; SYSTEMTIME st; - GetSystemTime(&systemtime); + GetSystemTime(&st); SystemTimeToFileTime(&st, &ft); SYSTEMTIME ep; @@ -546,10 +726,79 @@ uint64_t OSWinrt::get_ticks_usec() const { void OSWinrt::process_events() { + last_id = joystick->process_controllers(last_id); + process_key_events(); +} + +void OSWinrt::process_key_events() +{ + + for (int i = 0; i < key_event_pos; i++) { + + KeyEvent &kev = key_event_buffer[i]; + InputEvent iev; + + iev.type = InputEvent::KEY; + iev.key.mod = kev.mod_state; + iev.key.echo = kev.echo; + iev.key.scancode = kev.scancode; + iev.key.unicode = kev.unicode; + iev.key.pressed = kev.pressed; + + input_event(iev); + + } + key_event_pos = 0; +} + +void OSWinrt::queue_key_event(KeyEvent & p_event) +{ + // This merges Char events with the previous Key event, so + // the unicode can be retrieved without sending duplicate events. + if (p_event.type == KeyEvent::MessageType::CHAR_EVENT_MESSAGE && key_event_pos > 0) { + + KeyEvent &old = key_event_buffer[key_event_pos - 1]; + ERR_FAIL_COND(old.type != KeyEvent::MessageType::KEY_EVENT_MESSAGE); + + key_event_buffer[key_event_pos - 1].unicode = p_event.unicode; + return; + } + + ERR_FAIL_COND(key_event_pos >= KEY_EVENT_BUFFER_SIZE); + + key_event_buffer[key_event_pos++] = p_event; } void OSWinrt::set_cursor_shape(CursorShape p_shape) { + ERR_FAIL_INDEX(p_shape, CURSOR_MAX); + + if (cursor_shape == p_shape) + return; + + static const CoreCursorType uwp_cursors[CURSOR_MAX] = { + CoreCursorType::Arrow, + CoreCursorType::IBeam, + CoreCursorType::Hand, + CoreCursorType::Cross, + CoreCursorType::Wait, + CoreCursorType::Wait, + CoreCursorType::Arrow, + CoreCursorType::Arrow, + CoreCursorType::UniversalNo, + CoreCursorType::SizeNorthSouth, + CoreCursorType::SizeWestEast, + CoreCursorType::SizeNortheastSouthwest, + CoreCursorType::SizeNorthwestSoutheast, + CoreCursorType::SizeAll, + CoreCursorType::SizeNorthSouth, + CoreCursorType::SizeWestEast, + CoreCursorType::Help + }; + + CoreWindow::GetForCurrentThread()->PointerCursor = ref new CoreCursor(uwp_cursors[p_shape], 0); + + cursor_shape = p_shape; } Error OSWinrt::execute(const String& p_path, const List<String>& p_arguments,bool p_blocking,ProcessID *r_child_id,String* r_pipe,int *r_exitcode) { @@ -609,7 +858,7 @@ String OSWinrt::get_locale() const { return "en"; #else Platform::String ^language = Windows::Globalization::Language::CurrentInputMethodLanguageTag; - return language->Data(); + return String(language->Data()).replace("-", "_"); #endif } @@ -628,6 +877,29 @@ void OSWinrt::swap_buffers() { gl_context->swap_buffers(); } +bool OSWinrt::has_touchscreen_ui_hint() const { + + TouchCapabilities^ tc = ref new TouchCapabilities(); + return tc->TouchPresent != 0 || UIViewSettings::GetForCurrentView()->UserInteractionMode == UserInteractionMode::Touch; +} + +bool OSWinrt::has_virtual_keyboard() const { + + return UIViewSettings::GetForCurrentView()->UserInteractionMode == UserInteractionMode::Touch; +} + +void OSWinrt::show_virtual_keyboard(const String & p_existing_text, const Rect2 & p_screen_rect) { + + InputPane^ pane = InputPane::GetForCurrentView(); + pane->TryShow(); +} + +void OSWinrt::hide_virtual_keyboard() { + + InputPane^ pane = InputPane::GetForCurrentView(); + pane->TryHide(); +} + void OSWinrt::run() { @@ -644,6 +916,7 @@ void OSWinrt::run() { while (!force_quit) { CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent); + if (managed_object->alert_close_handle) continue; process_events(); // get rid of pending events if (Main::iteration()==true) break; @@ -665,7 +938,7 @@ String OSWinrt::get_data_dir() const { Windows::Storage::StorageFolder ^data_folder = Windows::Storage::ApplicationData::Current->LocalFolder; - return data_folder->Path->Data(); + return String(data_folder->Path->Data()).replace("\\", "/"); } @@ -690,6 +963,13 @@ OSWinrt::OSWinrt() { gl_context = NULL; + display_request = ref new Windows::System::Display::DisplayRequest(); + + managed_object = ref new ManagedType; + managed_object->os = this; + + mouse_mode_changed = CreateEvent(NULL, TRUE, FALSE, L"os_mouse_mode_changed"); + AudioDriverManagerSW::add_driver(&audio_driver); } diff --git a/platform/winrt/os_winrt.h b/platform/winrt/os_winrt.h index 145ccf0f7a..1816e0cec7 100644 --- a/platform/winrt/os_winrt.h +++ b/platform/winrt/os_winrt.h @@ -40,10 +40,13 @@ #include "servers/spatial_sound/spatial_sound_server_sw.h" #include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h" #include "servers/physics_2d/physics_2d_server_sw.h" -#include "servers/audio/audio_driver_dummy.h" +#include "audio_driver_winrt.h" #include "gl_context_egl.h" +#include "core/math/math_2d.h" +#include "core/ustring.h" + #include <windows.h> #include <io.h> @@ -52,11 +55,35 @@ #include <stdio.h> #include "main/input_default.h" +#include "joystick_winrt.h" + /** @author Juan Linietsky <reduzio@gmail.com> */ class OSWinrt : public OS { +public: + + struct KeyEvent { + + enum MessageType + { + KEY_EVENT_MESSAGE, + CHAR_EVENT_MESSAGE + }; + + InputModifierState mod_state; + MessageType type; + bool pressed; + unsigned int scancode; + unsigned int unicode; + bool echo; + CorePhysicalKeyStatus status; + + }; + +private: + enum { JOYSTICKS_MAX = 8, JOY_AXIS_COUNT = 6, @@ -66,16 +93,6 @@ class OSWinrt : public OS { FILE *stdo; - - struct KeyEvent { - - InputModifierState mod_state; - UINT uMsg; - WPARAM wParam; - LPARAM lParam; - - }; - KeyEvent key_event_buffer[KEY_EVENT_BUFFER_SIZE]; int key_event_pos; @@ -97,37 +114,11 @@ class OSWinrt : public OS { ContextEGL* gl_context; - struct Joystick { - - int id; - bool attached; - - DWORD last_axis[JOY_AXIS_COUNT]; - DWORD last_buttons; - DWORD last_pov; - String name; - - Joystick() { - id = -1; - attached = false; - for (int i=0; i<JOY_AXIS_COUNT; i++) { - - last_axis[i] = 0; - }; - last_buttons = 0; - last_pov = 0; - }; - }; - - List<Joystick> joystick_change_queue; - int joystick_count; - Joystick joysticks[JOYSTICKS_MAX]; - VideoMode video_mode; MainLoop *main_loop; - AudioDriverDummy audio_driver; + AudioDriverWinRT audio_driver; AudioServerSW *audio_server; SampleManagerMallocSW *sample_manager; SpatialSoundServerSW *spatial_sound_server; @@ -146,11 +137,34 @@ class OSWinrt : public OS { InputDefault *input; + JoystickWinrt^ joystick; + + Windows::System::Display::DisplayRequest^ display_request; + void _post_dpad(DWORD p_dpad, int p_device, bool p_pressed); void _drag_event(int idx,UINT uMsg, WPARAM wParam, LPARAM lParam); void _touch_event(int idx, UINT uMsg, WPARAM wParam, LPARAM lParam); + ref class ManagedType { + public: + property bool alert_close_handle; + property Platform::String^ clipboard; + void alert_close(Windows::UI::Popups::IUICommand^ command); + void on_clipboard_changed(Platform::Object^ sender, Platform::Object^ ev); + void update_clipboard(); + void on_accelerometer_reading_changed(Windows::Devices::Sensors::Accelerometer^ sender, Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs^ args); + void on_magnetometer_reading_changed(Windows::Devices::Sensors::Magnetometer^ sender, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs^ args); + void on_gyroscope_reading_changed(Windows::Devices::Sensors::Gyrometer^ sender, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs^ args); + + internal: + ManagedType() { alert_close_handle = false; } + property OSWinrt* os; + }; + ManagedType^ managed_object; + Windows::Devices::Sensors::Accelerometer^ accelerometer; + Windows::Devices::Sensors::Magnetometer^ magnetometer; + Windows::Devices::Sensors::Gyrometer^ gyrometer; // functions used by main to initialize/deintialize the OS protected: @@ -173,12 +187,13 @@ protected: void process_events(); - void probe_joysticks(); - void process_joysticks(); void process_key_events(); public: + // Event to send to the app wrapper + HANDLE mouse_mode_changed; + void print_error(const char* p_function,const char* p_file,int p_line,const char *p_code,const char*p_rationale,ErrorType p_type); virtual void vprint(const char *p_format, va_list p_list, bool p_stderr=false); @@ -195,6 +210,11 @@ public: virtual void set_video_mode(const VideoMode& p_video_mode,int p_screen=0); virtual VideoMode get_video_mode(int p_screen=0) const; virtual void get_fullscreen_mode_list(List<VideoMode> *p_list,int p_screen=0) const; + virtual Size2 get_window_size() const; + virtual void set_window_size(const Size2 p_size); + virtual void set_window_fullscreen(bool p_enabled); + virtual bool is_window_fullscreen() const; + virtual void set_keep_screen_on(bool p_enabled); virtual MainLoop *get_main_loop() const; @@ -237,7 +257,11 @@ public: virtual void make_rendering_thread(); virtual void swap_buffers(); - virtual bool has_touchscreen_ui_hint() const { return true; }; + virtual bool has_touchscreen_ui_hint() const; + + virtual bool has_virtual_keyboard() const; + virtual void show_virtual_keyboard(const String& p_existing_text, const Rect2& p_screen_rect = Rect2()); + virtual void hide_virtual_keyboard(); virtual Error shell_open(String p_uri); @@ -247,6 +271,8 @@ public: void input_event(InputEvent &p_event); + void queue_key_event(KeyEvent &p_event); + OSWinrt(); ~OSWinrt(); diff --git a/platform/winrt/thread_winrt.cpp b/platform/winrt/thread_winrt.cpp index e7028bd9dc..8e3e0d5bef 100644 --- a/platform/winrt/thread_winrt.cpp +++ b/platform/winrt/thread_winrt.cpp @@ -59,7 +59,9 @@ Thread::ID ThreadWinrt::get_ID() const { }; void ThreadWinrt::make_default() { - + create_func = create_func_winrt; + get_thread_ID_func = get_thread_ID_func_winrt; + wait_to_finish_func = wait_to_finish_func_winrt; }; ThreadWinrt::ThreadWinrt() { diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 356de7b2bc..ba232f6d4e 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -155,7 +155,7 @@ def configure(env): if os.system("pkg-config --exists alsa")==0: print("Enabling ALSA") env.Append(CPPFLAGS=["-DALSA_ENABLED"]) - env.Append(LIBS=['asound']) + env.ParseConfig('pkg-config alsa --cflags --libs') else: print("ALSA libraries not found, disabling driver") diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 9a2d610e78..5f1ab5b4aa 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -1176,6 +1176,19 @@ void OS_X11::handle_key_event(XKeyEvent *p_event, bool p_echo) { event.key.mod.shift=true; } + //don't set mod state if modifier keys are released by themselves + //else event.is_action() will not work correctly here + if (!event.key.pressed) { + if (event.key.scancode == KEY_SHIFT) + event.key.mod.shift = false; + else if (event.key.scancode == KEY_CONTROL) + event.key.mod.control = false; + else if (event.key.scancode == KEY_ALT) + event.key.mod.alt = false; + else if (event.key.scancode == KEY_META) + event.key.mod.meta = false; + } + //printf("key: %x\n",event.key.scancode); input->parse_input_event( event); } diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp index 71728966fd..e8954b7e98 100644 --- a/scene/2d/area_2d.cpp +++ b/scene/2d/area_2d.cpp @@ -650,8 +650,8 @@ void Area2D::_bind_methods() { ADD_SIGNAL( MethodInfo("body_enter",PropertyInfo(Variant::OBJECT,"body",PROPERTY_HINT_RESOURCE_TYPE,"PhysicsBody2D"))); ADD_SIGNAL( MethodInfo("body_exit",PropertyInfo(Variant::OBJECT,"body",PROPERTY_HINT_RESOURCE_TYPE,"PhysicsBody2D"))); - ADD_SIGNAL( MethodInfo("area_enter_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area2D"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"area_shape"))); - ADD_SIGNAL( MethodInfo("area_exit_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area2D"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"area_shape"))); + ADD_SIGNAL( MethodInfo("area_enter_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area2D"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"self_shape"))); + ADD_SIGNAL( MethodInfo("area_exit_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area2D"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"self_shape"))); ADD_SIGNAL( MethodInfo("area_enter",PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area2D"))); ADD_SIGNAL( MethodInfo("area_exit",PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area2D"))); diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp index e576aa10e0..f33faaabd8 100644 --- a/scene/2d/camera_2d.cpp +++ b/scene/2d/camera_2d.cpp @@ -44,6 +44,9 @@ void Camera2D::_update_scroll() { } if (current) { + + ERR_FAIL_COND( custom_viewport && !ObjectDB::get_instance(custom_viewport_id) ); + Matrix32 xform = get_camera_transform(); if (viewport) { @@ -73,8 +76,9 @@ Matrix32 Camera2D::get_camera_transform() { if (!get_tree()) return Matrix32(); - Size2 screen_size = get_viewport_rect().size; - screen_size=get_viewport_rect().size; + ERR_FAIL_COND_V( custom_viewport && !ObjectDB::get_instance(custom_viewport_id), Matrix32() ); + + Size2 screen_size = viewport->get_visible_rect().size; Point2 new_camera_pos = get_global_transform().get_origin(); @@ -240,14 +244,10 @@ void Camera2D::_notification(int p_what) { case NOTIFICATION_ENTER_TREE: { - viewport = NULL; - Node *n=this; - while(n){ - - viewport = n->cast_to<Viewport>(); - if (viewport) - break; - n=n->get_parent(); + if (custom_viewport && ObjectDB::get_instance(custom_viewport_id)) { + viewport=custom_viewport; + } else { + viewport=get_viewport(); } canvas = get_canvas(); @@ -270,8 +270,8 @@ void Camera2D::_notification(int p_what) { } break; case NOTIFICATION_EXIT_TREE: { - if (is_current()) { - if (viewport) { + if (is_current()) { + if (viewport && !(custom_viewport && !ObjectDB::get_instance(custom_viewport_id))) { viewport->set_canvas_transform( Matrix32() ); } } @@ -447,8 +447,10 @@ void Camera2D::reset_smoothing() { void Camera2D::align() { - Size2 screen_size = get_viewport_rect().size; - screen_size=get_viewport_rect().size; + ERR_FAIL_COND( custom_viewport && !ObjectDB::get_instance(custom_viewport_id) ); + + Size2 screen_size = viewport->get_visible_rect().size; + Point2 current_camera_pos = get_global_transform().get_origin(); if (anchor_mode==ANCHOR_MODE_DRAG_CENTER) { if (h_ofs<0) { @@ -549,6 +551,42 @@ bool Camera2D::is_follow_smoothing_enabled() const { return smoothing_enabled; } +void Camera2D::set_custom_viewport(Node *p_viewport) { + ERR_FAIL_NULL(p_viewport); + if (is_inside_tree()) { + remove_from_group(group_name); + remove_from_group(canvas_group_name); + } + + custom_viewport=p_viewport->cast_to<Viewport>(); + + if (custom_viewport) { + custom_viewport_id=custom_viewport->get_instance_ID(); + } else { + custom_viewport_id=0; + } + + if (is_inside_tree()) { + + if (custom_viewport) + viewport=custom_viewport; + else + viewport=get_viewport(); + + RID vp = viewport->get_viewport(); + group_name = "__cameras_"+itos(vp.get_id()); + canvas_group_name ="__cameras_c"+itos(canvas.get_id()); + add_to_group(group_name); + add_to_group(canvas_group_name); + } + +} + +Node* Camera2D::get_custom_viewport() const { + + return custom_viewport; +} + void Camera2D::_bind_methods() { @@ -597,6 +635,8 @@ void Camera2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_zoom","zoom"),&Camera2D::set_zoom); ObjectTypeDB::bind_method(_MD("get_zoom"),&Camera2D::get_zoom); + ObjectTypeDB::bind_method(_MD("set_custom_viewport","viewport:Viewport"),&Camera2D::set_custom_viewport); + ObjectTypeDB::bind_method(_MD("get_custom_viewport:Viewport"),&Camera2D::get_custom_viewport); ObjectTypeDB::bind_method(_MD("set_follow_smoothing","follow_smoothing"),&Camera2D::set_follow_smoothing); ObjectTypeDB::bind_method(_MD("get_follow_smoothing"),&Camera2D::get_follow_smoothing); @@ -662,6 +702,8 @@ Camera2D::Camera2D() { first=true; smoothing_enabled=false; limit_smoothing_enabled=false; + custom_viewport=NULL; + custom_viewport_id=0; smoothing=5.0; zoom = Vector2(1, 1); diff --git a/scene/2d/camera_2d.h b/scene/2d/camera_2d.h index 9f3e4254bb..a4d6dc5b96 100644 --- a/scene/2d/camera_2d.h +++ b/scene/2d/camera_2d.h @@ -48,6 +48,8 @@ protected: Point2 smoothed_camera_pos; bool first; + ObjectID custom_viewport_id; // to check validity + Viewport *custom_viewport; Viewport *viewport; StringName group_name; @@ -128,6 +130,9 @@ public: Point2 get_camera_screen_center() const; + void set_custom_viewport(Node *p_viewport); + Node* get_custom_viewport() const; + Vector2 get_camera_pos() const; void force_update_scroll(); void reset_smoothing(); diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index f37cef673d..3e548a24b0 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -67,7 +67,23 @@ void Light2D::_update_light_visibility() { if (!is_inside_tree()) return; - VS::get_singleton()->canvas_light_set_enabled(canvas_light,enabled && is_visible()); + bool editor_ok=true; + +#ifdef TOOLS_ENABLED + if (editor_only) { + if (!get_tree()->is_editor_hint()) { + editor_ok=false; + } else { + editor_ok = (get_tree()->get_edited_scene_root() && (this==get_tree()->get_edited_scene_root() || get_owner()==get_tree()->get_edited_scene_root())); + } + } +#else + if (editor_only) { + editor_ok=false; + } +#endif + + VS::get_singleton()->canvas_light_set_enabled(canvas_light,enabled && is_visible() && editor_ok); } void Light2D::set_enabled( bool p_enabled) { @@ -82,6 +98,17 @@ bool Light2D::is_enabled() const { return enabled; } +void Light2D::set_editor_only(bool p_editor_only) { + + editor_only=p_editor_only; + _update_light_visibility(); +} + +bool Light2D::is_editor_only() const{ + + return editor_only; +} + void Light2D::set_texture( const Ref<Texture>& p_texture) { texture=p_texture; @@ -328,6 +355,9 @@ void Light2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_enabled","enabled"),&Light2D::set_enabled); ObjectTypeDB::bind_method(_MD("is_enabled"),&Light2D::is_enabled); + ObjectTypeDB::bind_method(_MD("set_editor_only","editor_only"), &Light2D::set_editor_only ); + ObjectTypeDB::bind_method(_MD("is_editor_only"), &Light2D::is_editor_only ); + ObjectTypeDB::bind_method(_MD("set_texture","texture"),&Light2D::set_texture); ObjectTypeDB::bind_method(_MD("get_texture"),&Light2D::get_texture); @@ -383,6 +413,7 @@ void Light2D::_bind_methods() { ADD_PROPERTY( PropertyInfo(Variant::BOOL,"enabled"),_SCS("set_enabled"),_SCS("is_enabled")); + ADD_PROPERTY( PropertyInfo(Variant::BOOL, "editor_only"),_SCS("set_editor_only"),_SCS("is_editor_only")); ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"texture",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_texture"),_SCS("get_texture")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"offset"),_SCS("set_texture_offset"),_SCS("get_texture_offset")); ADD_PROPERTY( PropertyInfo(Variant::REAL,"scale",PROPERTY_HINT_RANGE,"0.01,50,0.01"),_SCS("set_texture_scale"),_SCS("get_texture_scale")); @@ -413,6 +444,7 @@ Light2D::Light2D() { canvas_light=VisualServer::get_singleton()->canvas_light_create(); enabled=true; + editor_only=false; shadow=false; color=Color(1,1,1); height=0; diff --git a/scene/2d/light_2d.h b/scene/2d/light_2d.h index c03ef96eff..57c89b15e7 100644 --- a/scene/2d/light_2d.h +++ b/scene/2d/light_2d.h @@ -45,6 +45,7 @@ public: private: RID canvas_light; bool enabled; + bool editor_only; bool shadow; Color color; Color shadow_color; @@ -78,6 +79,9 @@ public: void set_enabled( bool p_enabled); bool is_enabled() const; + void set_editor_only(bool p_editor_only); + bool is_editor_only() const; + void set_texture( const Ref<Texture>& p_texture); Ref<Texture> get_texture() const; diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp index df43e8e373..b3f925cb14 100644 --- a/scene/2d/node_2d.cpp +++ b/scene/2d/node_2d.cpp @@ -253,7 +253,7 @@ void Node2D::global_translate(const Vector2& p_amount) { set_global_pos( get_global_pos() + p_amount ); } -void Node2D::scale(const Vector2& p_amount) { +void Node2D::scale(const Size2& p_amount) { set_scale( get_scale() * p_amount ); } diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h index aa8d0ef33c..b31ee08af6 100644 --- a/scene/2d/node_2d.h +++ b/scene/2d/node_2d.h @@ -79,7 +79,7 @@ public: void move_y(float p_delta,bool p_scaled=false); void translate(const Vector2& p_amount); void global_translate(const Vector2& p_amount); - void scale(const Vector2& p_amount); + void scale(const Size2& p_amount); Point2 get_pos() const; float get_rot() const; @@ -110,8 +110,6 @@ public: Matrix32 get_relative_transform_to_parent(const Node *p_parent) const; - - Matrix32 get_transform() const; Node2D(); diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp index 16df36aa24..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 @@ -1239,7 +1244,7 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2& p_linear_velocity,const V move_and_slide_colliders.clear(); move_and_slide_floor_velocity=Vector2(); - while(motion!=Vector2() && p_max_bounces) { + while(p_max_bounces) { motion=move(motion); @@ -1280,6 +1285,8 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2& p_linear_velocity,const V } p_max_bounces--; + if (motion==Vector2()) + break; } return lv; @@ -1307,11 +1314,11 @@ 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); } @@ -1378,7 +1385,7 @@ void KinematicBody2D::_bind_methods() { 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); diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h index c088b64858..ea29d873bd 100644 --- a/scene/2d/physics_body_2d.h +++ b/scene/2d/physics_body_2d.h @@ -319,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; diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp index cfb87fb998..12893524d1 100644 --- a/scene/2d/polygon_2d.cpp +++ b/scene/2d/polygon_2d.cpp @@ -288,12 +288,12 @@ float Polygon2D::_get_texture_rotationd() const{ } -void Polygon2D::set_texture_scale(const Vector2& p_scale){ +void Polygon2D::set_texture_scale(const Size2& p_scale){ tex_scale=p_scale; update(); } -Vector2 Polygon2D::get_texture_scale() const{ +Size2 Polygon2D::get_texture_scale() const{ return tex_scale; } diff --git a/scene/2d/polygon_2d.h b/scene/2d/polygon_2d.h index 04e8aeb6fd..cecb9081f7 100644 --- a/scene/2d/polygon_2d.h +++ b/scene/2d/polygon_2d.h @@ -40,7 +40,7 @@ class Polygon2D : public Node2D { DVector<Color> vertex_colors; Color color; Ref<Texture> texture; - Vector2 tex_scale; + Size2 tex_scale; Vector2 tex_ofs; bool tex_tile; float tex_rot; @@ -81,8 +81,8 @@ public: void set_texture_rotation(float p_rot); float get_texture_rotation() const; - void set_texture_scale(const Vector2& p_scale); - Vector2 get_texture_scale() const; + void set_texture_scale(const Size2& p_scale); + Size2 get_texture_scale() const; void set_invert(bool p_rot); bool get_invert() const; diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp index a8a4122016..c1d0d1a97c 100644 --- a/scene/3d/area.cpp +++ b/scene/3d/area.cpp @@ -640,8 +640,8 @@ void Area::_bind_methods() { ADD_SIGNAL( MethodInfo("body_enter",PropertyInfo(Variant::OBJECT,"body"))); ADD_SIGNAL( MethodInfo("body_exit",PropertyInfo(Variant::OBJECT,"body"))); - ADD_SIGNAL( MethodInfo("area_enter_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"area_shape"))); - ADD_SIGNAL( MethodInfo("area_exit_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"area_shape"))); + ADD_SIGNAL( MethodInfo("area_enter_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"self_shape"))); + ADD_SIGNAL( MethodInfo("area_exit_shape",PropertyInfo(Variant::INT,"area_id"),PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area"),PropertyInfo(Variant::INT,"area_shape"),PropertyInfo(Variant::INT,"self_shape"))); ADD_SIGNAL( MethodInfo("area_enter",PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area"))); ADD_SIGNAL( MethodInfo("area_exit",PropertyInfo(Variant::OBJECT,"area",PROPERTY_HINT_RESOURCE_TYPE,"Area"))); diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp index e76c0938fb..76543b67c6 100644 --- a/scene/3d/camera.cpp +++ b/scene/3d/camera.cpp @@ -648,12 +648,16 @@ void Camera::_bind_methods() { ObjectTypeDB::bind_method( _MD("get_zfar"),&Camera::get_zfar ); ObjectTypeDB::bind_method( _MD("get_znear"),&Camera::get_znear ); ObjectTypeDB::bind_method( _MD("get_projection"),&Camera::get_projection ); + ObjectTypeDB::bind_method( _MD("set_h_offset","ofs"),&Camera::set_h_offset ); + ObjectTypeDB::bind_method( _MD("get_h_offset"),&Camera::get_h_offset ); + ObjectTypeDB::bind_method( _MD("set_v_offset","ofs"),&Camera::set_v_offset ); + ObjectTypeDB::bind_method( _MD("get_v_offset"),&Camera::get_v_offset ); ObjectTypeDB::bind_method( _MD("set_visible_layers","mask"),&Camera::set_visible_layers ); ObjectTypeDB::bind_method( _MD("get_visible_layers"),&Camera::get_visible_layers ); - ObjectTypeDB::bind_method(_MD("set_environment","env:Environment"),&Camera::set_environment); - ObjectTypeDB::bind_method(_MD("get_environment:Environment"),&Camera::get_environment); - ObjectTypeDB::bind_method(_MD("set_keep_aspect_mode","mode"),&Camera::set_keep_aspect_mode); - ObjectTypeDB::bind_method(_MD("get_keep_aspect_mode"),&Camera::get_keep_aspect_mode); + ObjectTypeDB::bind_method( _MD("set_environment","env:Environment"),&Camera::set_environment ); + ObjectTypeDB::bind_method( _MD("get_environment:Environment"),&Camera::get_environment ); + ObjectTypeDB::bind_method( _MD("set_keep_aspect_mode","mode"),&Camera::set_keep_aspect_mode ); + ObjectTypeDB::bind_method( _MD("get_keep_aspect_mode"),&Camera::get_keep_aspect_mode ); //ObjectTypeDB::bind_method( _MD("_camera_make_current"),&Camera::_camera_make_current ); BIND_CONSTANT( PROJECTION_PERSPECTIVE ); diff --git a/scene/3d/immediate_geometry.cpp b/scene/3d/immediate_geometry.cpp index e83fa69b4f..99c7fd047f 100644 --- a/scene/3d/immediate_geometry.cpp +++ b/scene/3d/immediate_geometry.cpp @@ -72,6 +72,7 @@ void ImmediateGeometry::add_vertex(const Vector3& p_vertex){ if (empty) { aabb.pos=p_vertex; aabb.size=Vector3(); + empty=false; } else { aabb.expand_to(p_vertex); } @@ -102,7 +103,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 +133,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 +161,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/3d/light.cpp b/scene/3d/light.cpp index 227bb3a59d..5b221d1574 100644 --- a/scene/3d/light.cpp +++ b/scene/3d/light.cpp @@ -446,6 +446,10 @@ bool editor_ok=true; editor_ok = (get_tree()->get_edited_scene_root() && (this==get_tree()->get_edited_scene_root() || get_owner()==get_tree()->get_edited_scene_root())); } } +#else + if (editor_only) { + editor_ok=false; + } #endif VS::get_singleton()->instance_light_set_enabled(get_instance(),is_visible() && enabled && editor_ok); @@ -672,5 +676,3 @@ void SpotLight::_bind_methods() { ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/spot_attenuation", PROPERTY_HINT_EXP_EASING, "spot_attenuation"), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_SPOT_ATTENUATION ); } - - diff --git a/scene/3d/remote_transform.cpp b/scene/3d/remote_transform.cpp new file mode 100644 index 0000000000..d43870417a --- /dev/null +++ b/scene/3d/remote_transform.cpp @@ -0,0 +1,132 @@ + +/*************************************************************************/ +/* remote_transform.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 "remote_transform.h" + +void RemoteTransform::_update_cache() { + cache=0; + if (has_node(remote_node)) { + Node *node = get_node(remote_node); + if (!node || this==node || node->is_a_parent_of(this) || this->is_a_parent_of(node)) { + return; + } + + cache=node->get_instance_ID(); + } +} + +void RemoteTransform::_update_remote() { + + + if (!is_inside_tree()) + return; + + if (!cache) + return; + + Object *obj = ObjectDB::get_instance(cache); + if (!obj) + return; + + Spatial *n = obj->cast_to<Spatial>(); + if (!n) + return; + + if (!n->is_inside_tree()) + return; + + //todo make faster + n->set_global_transform(get_global_transform()); + +} + +void RemoteTransform::_notification(int p_what) { + + switch(p_what) { + + case NOTIFICATION_READY: { + + _update_cache(); + + } break; + case NOTIFICATION_TRANSFORM_CHANGED: { + if (!is_inside_tree()) + break; + + if (cache) { + + _update_remote(); + + } + + } break; + + } +} + + +void RemoteTransform::set_remote_node(const NodePath& p_remote_node) { + + remote_node=p_remote_node; + if (is_inside_tree()) + _update_cache(); + + update_configuration_warning(); +} + +NodePath RemoteTransform::get_remote_node() const{ + + return remote_node; +} + + +String RemoteTransform::get_configuration_warning() const { + + if (!has_node(remote_node) || !get_node(remote_node) || !get_node(remote_node)->cast_to<Spatial>()) { + return TTR("Path property must point to a valid Spatial node to work."); + } + + return String(); +} + +void RemoteTransform::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_remote_node","path"),&RemoteTransform::set_remote_node); + ObjectTypeDB::bind_method(_MD("get_remote_node"),&RemoteTransform::get_remote_node); + + ADD_PROPERTY( PropertyInfo(Variant::NODE_PATH,"remote_path"),_SCS("set_remote_node"),_SCS("get_remote_node")); +} + +RemoteTransform::RemoteTransform() { + + cache=0; + +} + diff --git a/scene/3d/remote_transform.h b/scene/3d/remote_transform.h new file mode 100644 index 0000000000..78f0fec1e9 --- /dev/null +++ b/scene/3d/remote_transform.h @@ -0,0 +1,30 @@ +#ifndef REMOTETRANSFORM_H +#define REMOTETRANSFORM_H + +#include "scene/3d/spatial.h" + +class RemoteTransform : public Spatial +{ + OBJ_TYPE(RemoteTransform,Spatial); + + NodePath remote_node; + + ObjectID cache; + + void _update_remote(); + void _update_cache(); + +protected: + static void _bind_methods(); + void _notification(int p_what); +public: + void set_remote_node(const NodePath& p_remote_node); + NodePath get_remote_node() const; + + virtual String get_configuration_warning() const; + + RemoteTransform(); + +}; + +#endif // REMOTETRANSFORM_H diff --git a/scene/3d/visual_instance.cpp b/scene/3d/visual_instance.cpp index b15226cce3..b4f7a4e5b4 100644 --- a/scene/3d/visual_instance.cpp +++ b/scene/3d/visual_instance.cpp @@ -128,6 +128,8 @@ void VisualInstance::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_layer_mask","mask"), &VisualInstance::set_layer_mask); ObjectTypeDB::bind_method(_MD("get_layer_mask"), &VisualInstance::get_layer_mask); + ObjectTypeDB::bind_method(_MD("get_transformed_aabb"), &VisualInstance::get_transformed_aabb); + ADD_PROPERTY( PropertyInfo( Variant::INT, "layers",PROPERTY_HINT_ALL_FLAGS), _SCS("set_layer_mask"), _SCS("get_layer_mask")); @@ -376,6 +378,8 @@ void GeometryInstance::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_extra_cull_margin","margin"), &GeometryInstance::set_extra_cull_margin); ObjectTypeDB::bind_method(_MD("get_extra_cull_margin"), &GeometryInstance::get_extra_cull_margin); + ObjectTypeDB::bind_method(_MD("get_aabb"),&GeometryInstance::get_aabb); + ObjectTypeDB::bind_method(_MD("_baked_light_changed"), &GeometryInstance::_baked_light_changed); ADD_PROPERTYI( PropertyInfo( Variant::BOOL, "geometry/visible"), _SCS("set_flag"), _SCS("get_flag"),FLAG_VISIBLE); diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index 6f6f5d3aff..156f4956bb 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -199,13 +199,13 @@ void Tween::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_tween_process_mode"),&Tween::get_tween_process_mode); ObjectTypeDB::bind_method(_MD("start"),&Tween::start ); - ObjectTypeDB::bind_method(_MD("reset","object","key"),&Tween::reset ); + ObjectTypeDB::bind_method(_MD("reset","object","key"),&Tween::reset, DEFVAL("") ); ObjectTypeDB::bind_method(_MD("reset_all"),&Tween::reset_all ); - ObjectTypeDB::bind_method(_MD("stop","object","key"),&Tween::stop ); + ObjectTypeDB::bind_method(_MD("stop","object","key"),&Tween::stop, DEFVAL("") ); ObjectTypeDB::bind_method(_MD("stop_all"),&Tween::stop_all ); - ObjectTypeDB::bind_method(_MD("resume","object","key"),&Tween::resume ); + ObjectTypeDB::bind_method(_MD("resume","object","key"),&Tween::resume, DEFVAL("") ); ObjectTypeDB::bind_method(_MD("resume_all"),&Tween::resume_all ); - ObjectTypeDB::bind_method(_MD("remove","object","key"),&Tween::remove ); + ObjectTypeDB::bind_method(_MD("remove","object","key"),&Tween::remove, DEFVAL("") ); ObjectTypeDB::bind_method(_MD("remove_all"),&Tween::remove_all ); ObjectTypeDB::bind_method(_MD("seek","time"),&Tween::seek ); ObjectTypeDB::bind_method(_MD("tell"),&Tween::tell ); @@ -619,6 +619,8 @@ void Tween::_tween_process(float p_delta) { }; object->call(data.key, (const Variant **) arg, data.args, error); } + if (!repeat) + call_deferred("remove", object, data.key); } continue; } @@ -721,7 +723,7 @@ bool Tween::reset(Object *p_object, String p_key) { if(object == NULL) continue; - if(object == p_object && data.key == p_key) { + if(object == p_object && (data.key == p_key || p_key == "")) { data.elapsed = 0; data.finish = false; @@ -757,7 +759,7 @@ bool Tween::stop(Object *p_object, String p_key) { Object *object = ObjectDB::get_instance(data.id); if(object == NULL) continue; - if(object == p_object && data.key == p_key) + if(object == p_object && (data.key == p_key || p_key == "")) data.active = false; } pending_update --; @@ -791,7 +793,7 @@ bool Tween::resume(Object *p_object, String p_key) { Object *object = ObjectDB::get_instance(data.id); if(object == NULL) continue; - if(object == p_object && data.key == p_key) + if(object == p_object && (data.key == p_key || p_key == "")) data.active = true; } pending_update --; @@ -819,17 +821,20 @@ bool Tween::remove(Object *p_object, String p_key) { call_deferred("remove", p_object, p_key); return true; } + List<List<InterpolateData>::Element *> for_removal; for(List<InterpolateData>::Element *E=interpolates.front();E;E=E->next()) { InterpolateData& data = E->get(); Object *object = ObjectDB::get_instance(data.id); if(object == NULL) continue; - if(object == p_object && data.key == p_key) { - interpolates.erase(E); - return true; + if(object == p_object && (data.key == p_key || p_key == "")) { + for_removal.push_back(E); } } + for(List<List<InterpolateData>::Element *>::Element *E=for_removal.front();E;E=E->next()) { + interpolates.erase(E->get()); + } return true; } diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index b69646432e..5e66544153 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -41,13 +41,13 @@ void update_material(Ref<CanvasItemMaterial>mat,const Color& p_color,float h,flo if (!sdr.is_valid()) return; - mat->set_shader_param("R",p_color.r); - mat->set_shader_param("G",p_color.g); - mat->set_shader_param("B",p_color.b); - mat->set_shader_param("H",h); - mat->set_shader_param("S",s); - mat->set_shader_param("V",v); - mat->set_shader_param("A",p_color.a); + mat->set_shader_param("R",p_color.r); + mat->set_shader_param("G",p_color.g); + mat->set_shader_param("B",p_color.b); + mat->set_shader_param("H",h); + mat->set_shader_param("S",s); + mat->set_shader_param("V",v); + mat->set_shader_param("A",p_color.a); } void ColorPicker::_notification(int p_what) { @@ -397,9 +397,10 @@ void ColorPicker::_screen_input(const InputEvent &ev) if (!r->get_rect().has_point(Point2(mev.global_x,mev.global_y))) return; Image img =r->get_screen_capture(); - if (!img.empty()) + if (!img.empty()) { last_capture=img; r->queue_screen_capture(); + } if (!last_capture.empty()) set_color(last_capture.get_pixel(mev.global_x,mev.global_y)); } diff --git a/scene/gui/color_rect.cpp b/scene/gui/color_rect.cpp new file mode 100644 index 0000000000..a0e4df66b5 --- /dev/null +++ b/scene/gui/color_rect.cpp @@ -0,0 +1,36 @@ +#include "color_rect.h" + + + + +void ColorFrame::set_frame_color(const Color& p_color) { + + color=p_color; + update(); +} + +Color ColorFrame::get_frame_color() const{ + + return color; +} + +void ColorFrame::_notification(int p_what) { + + if (p_what==NOTIFICATION_DRAW) { + draw_rect(Rect2(Point2(),get_size()),color); + } +} + +void ColorFrame::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_frame_color","color"),&ColorFrame::set_frame_color); + ObjectTypeDB::bind_method(_MD("get_frame_color"),&ColorFrame::get_frame_color); + + ADD_PROPERTY(PropertyInfo(Variant::COLOR,"color"),_SCS("set_frame_color"),_SCS("get_frame_color") ); +} + +ColorFrame::ColorFrame() { + + color=Color(1,1,1); +} + diff --git a/scene/gui/color_rect.h b/scene/gui/color_rect.h new file mode 100644 index 0000000000..3816d44052 --- /dev/null +++ b/scene/gui/color_rect.h @@ -0,0 +1,22 @@ +#ifndef COLORRECT_H +#define COLORRECT_H + +#include "scene/gui/control.h" + +class ColorFrame : public Control { + OBJ_TYPE(ColorFrame,Control) + + Color color; +protected: + + void _notification(int p_what); + static void _bind_methods(); +public: + + void set_frame_color(const Color& p_color); + Color get_frame_color() const; + + ColorFrame(); +}; + +#endif // COLORRECT_H diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index bf35fd25bd..97f0db97c2 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -431,8 +431,7 @@ void Control::add_child_notify(Node *p_child) { return; if (child_c->data.theme.is_null() && data.theme_owner) { - child_c->data.theme_owner=data.theme_owner; - child_c->notification(NOTIFICATION_THEME_CHANGED); + _propagate_theme_changed(child_c,data.theme_owner); //need to propagate here, since many controls may require setting up stuff } } @@ -443,8 +442,7 @@ void Control::remove_child_notify(Node *p_child) { return; if (child_c->data.theme_owner && child_c->data.theme.is_null()) { - child_c->data.theme_owner=NULL; - //notification(NOTIFICATION_THEME_CHANGED); + _propagate_theme_changed(child_c,NULL); } } @@ -482,10 +480,10 @@ void Control::_notification(int p_notification) { if (is_set_as_toplevel()) { data.SI=get_viewport()->_gui_add_subwindow_control(this); - if (data.theme.is_null() && data.parent && data.parent->data.theme_owner) { + /*if (data.theme.is_null() && data.parent && data.parent->data.theme_owner) { data.theme_owner=data.parent->data.theme_owner; notification(NOTIFICATION_THEME_CHANGED); - } + }*/ } else { @@ -521,10 +519,10 @@ void Control::_notification(int p_notification) { if (parent_control) { //do nothing, has a parent control - if (data.theme.is_null() && parent_control->data.theme_owner) { + /*if (data.theme.is_null() && parent_control->data.theme_owner) { data.theme_owner=parent_control->data.theme_owner; notification(NOTIFICATION_THEME_CHANGED); - } + }*/ } else if (subwindow) { //is a subwindow (process input before other controls for that canvas) data.SI=get_viewport()->_gui_add_subwindow_control(this); @@ -1727,11 +1725,11 @@ Control *Control::find_next_valid_focus() const { if (next_child==this) // no next control-> return (get_focus_mode()==FOCUS_ALL)?next_child:NULL; - - if (next_child->get_focus_mode()==FOCUS_ALL) - return next_child; - - from = next_child; + if (next_child) { + if (next_child->get_focus_mode()==FOCUS_ALL) + return next_child; + from = next_child; + } else break; } return NULL; @@ -1915,7 +1913,7 @@ void Control::_propagate_theme_changed(CanvasItem *p_at,Control *p_owner,bool p_ CanvasItem *child = p_at->get_child(i)->cast_to<CanvasItem>(); if (child) { - _propagate_theme_changed(child,p_owner); + _propagate_theme_changed(child,p_owner,p_assign); } } @@ -1926,7 +1924,7 @@ void Control::_propagate_theme_changed(CanvasItem *p_at,Control *p_owner,bool p_ if (p_assign) { c->data.theme_owner=p_owner; } - c->_notification(NOTIFICATION_THEME_CHANGED); + c->notification(NOTIFICATION_THEME_CHANGED); c->update(); } } @@ -2408,6 +2406,35 @@ bool Control::is_visibility_clip_disabled() const { return data.disable_visibility_clip; } +void Control::get_argument_options(const StringName& p_function,int p_idx,List<String>*r_options) const { + + Node::get_argument_options(p_function,p_idx,r_options); + + if (p_idx==0) { + List<StringName> sn; + String pf = p_function; + if (pf=="add_color_override" || pf=="has_color" || pf=="has_color_override" || pf=="get_color") { + Theme::get_default()->get_color_list(get_type(),&sn); + } else if (pf=="add_style_override" || pf=="has_style" || pf=="has_style_override" || pf=="get_style") { + Theme::get_default()->get_stylebox_list(get_type(),&sn); + } else if (pf=="add_font_override" || pf=="has_font" || pf=="has_font_override" || pf=="get_font") { + Theme::get_default()->get_font_list(get_type(),&sn); + } else if (pf=="add_constant_override" || pf=="has_constant" || pf=="has_constant_override" || pf=="get_constant") { + Theme::get_default()->get_constant_list(get_type(),&sn); + } else if (pf=="add_color_override" || pf=="has_color" || pf=="has_color_override" || pf=="get_color") { + Theme::get_default()->get_color_list(get_type(),&sn); + } + + sn.sort_custom<StringName::AlphCompare>(); + for (List<StringName>::Element *E=sn.front();E;E=E->next()) { + r_options->push_back("\""+E->get()+"\""); + } + } + + +} + + void Control::_bind_methods() { diff --git a/scene/gui/control.h b/scene/gui/control.h index 558439efbf..37efd80970 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -407,6 +407,8 @@ public: void set_disable_visibility_clip(bool p_ignore); bool is_visibility_clip_disabled() const; + virtual void get_argument_options(const StringName& p_function,int p_idx,List<String>*r_options) const; + Control(); ~Control(); diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index 4dbc106834..15ff334c92 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -368,6 +368,7 @@ void AcceptDialog::_bind_methods() { ObjectTypeDB::bind_method(_MD("_custom_action"),&AcceptDialog::_custom_action); ObjectTypeDB::bind_method(_MD("set_text","text"),&AcceptDialog::set_text); ObjectTypeDB::bind_method(_MD("get_text"),&AcceptDialog::get_text); + ObjectTypeDB::bind_method(_MD("set_child_rect","child:Control"),&AcceptDialog::set_child_rect); ADD_SIGNAL( MethodInfo("confirmed") ); ADD_SIGNAL( MethodInfo("custom_action",PropertyInfo(Variant::STRING,"action")) ); @@ -399,8 +400,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 2307b33345..4eecabd10c 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -360,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>(); @@ -379,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; + } } @@ -392,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>(); @@ -425,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 @@ -446,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; } @@ -474,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 @@ -496,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; } @@ -512,7 +521,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { 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>(); @@ -568,7 +577,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) { } emit_signal("connection_request",from,from_slot,to,to_slot); - } else { + } 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); @@ -903,18 +912,20 @@ void GraphEdit::_input_event(const InputEvent& p_ev) { if (b.button_index==BUTTON_LEFT && b.pressed) { GraphNode *gn = NULL; + GraphNode *gn_selected = NULL; for(int i=get_child_count()-1;i>=0;i--) { - gn=get_child(i)->cast_to<GraphNode>(); + gn_selected=get_child(i)->cast_to<GraphNode>(); - if (gn) { + if (gn_selected) { - if (gn->is_resizing()) + if (gn_selected->is_resizing()) continue; - Rect2 r = gn->get_rect(); + Rect2 r = gn_selected->get_rect(); r.size*=zoom; if (r.has_point(get_local_mouse_pos())) + gn = gn_selected; break; } } @@ -1323,6 +1334,7 @@ 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 ed6e4ef6ac..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; diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index 5ece970936..213c5f62c0 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -183,12 +183,39 @@ 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(comment? "comment": (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); @@ -601,6 +628,8 @@ 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); + 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); @@ -716,6 +745,9 @@ void GraphNode::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_resizeable","resizeable"),&GraphNode::set_resizeable); ObjectTypeDB::bind_method(_MD("is_resizeable"),&GraphNode::is_resizeable); + ObjectTypeDB::bind_method(_MD("set_selected","selected"),&GraphNode::set_selected); + ObjectTypeDB::bind_method(_MD("is_selected"),&GraphNode::is_selected); + 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); @@ -759,4 +791,5 @@ GraphNode::GraphNode() { comment=false; resizeable=false; resizing=false; + selected=false; } diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h index 7357ab5a45..cbfd34f556 100644 --- a/scene/gui/graph_node.h +++ b/scene/gui/graph_node.h @@ -93,6 +93,9 @@ private: Overlay overlay; Color modulate; + + bool has_point(const Point2& p_point) const; + protected: diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index 105d919338..f69ad8fa7e 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()); @@ -947,7 +959,23 @@ void ItemList::_notification(int p_what) { shape_changed=false; } + //ensure_selected_visible needs to be checked before we draw the list. + if (ensure_selected_visible && current>=0 && current <=items.size()) { + Rect2 r = items[current].rect_cache; + int from = scroll_bar->get_val(); + int to = from + scroll_bar->get_page(); + + if (r.pos.y < from) { + scroll_bar->set_val(r.pos.y); + } else if (r.pos.y+r.size.y > to) { + scroll_bar->set_val(r.pos.y+r.size.y - (to-from)); + } + + + } + + ensure_selected_visible=false; Vector2 base_ofs = bg->get_offset(); base_ofs.y-=int(scroll_bar->get_val()); @@ -1135,25 +1163,6 @@ void ItemList::_notification(int p_what) { for(int i=0;i<separators.size();i++) { draw_line(Vector2(bg->get_margin(MARGIN_LEFT),base_ofs.y+separators[i]),Vector2(size.width-bg->get_margin(MARGIN_LEFT),base_ofs.y+separators[i]),guide_color); } - - - if (ensure_selected_visible && current>=0 && current <=items.size()) { - - Rect2 r = items[current].rect_cache; - int from = scroll_bar->get_val(); - int to = from + scroll_bar->get_page(); - - if (r.pos.y < from) { - scroll_bar->set_val(r.pos.y); - } else if (r.pos.y+r.size.y > to) { - scroll_bar->set_val(r.pos.y+r.size.y - (to-from)); - } - - - } - - ensure_selected_visible=false; - } } @@ -1198,6 +1207,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 +1306,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); @@ -1340,6 +1355,8 @@ void ItemList::_bind_methods(){ ObjectTypeDB::bind_method(_MD("ensure_current_is_visible"),&ItemList::ensure_current_is_visible); + ObjectTypeDB::bind_method(_MD("get_v_scroll"),&ItemList::get_v_scroll); + ObjectTypeDB::bind_method(_MD("_scroll_changed"),&ItemList::_scroll_changed); ObjectTypeDB::bind_method(_MD("_input_event"),&ItemList::_input_event); diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index e1902d1c1f..cb5908bc79 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; @@ -191,6 +195,8 @@ public: void set_icon_scale(real_t p_scale); real_t get_icon_scale() const; + VScrollBar *get_v_scroll() { return scroll_bar; } + ItemList(); ~ItemList(); }; diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index fcea12fd6b..f7d74b2b49 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(); } @@ -642,6 +639,7 @@ void LineEdit::_notification(int p_what) { if(text.empty()) font_color.a *= placeholder_alpha; + int caret_height = font->get_height() > y_area ? y_area : font->get_height(); while(true) { //end of string, break! @@ -660,14 +658,14 @@ void LineEdit::_notification(int p_what) { bool selected=selection.enabled && char_ofs>=selection.begin && char_ofs<selection.end; if (selected) - VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2(x_ofs, y_ofs), Size2(char_width, y_area)), selection_color); + VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2(x_ofs, y_ofs), Size2(char_width, caret_height)), selection_color); font->draw_char(ci, Point2(x_ofs, y_ofs + font_ascent), cchar, next, selected ? font_color_selected : font_color); if (char_ofs==cursor_pos && draw_caret) { VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2( - Point2( x_ofs , y_ofs ), Size2( 1, y_area ) ), cursor_color ); + Point2( x_ofs , y_ofs ), Size2( 1, caret_height ) ), cursor_color ); } x_ofs+=char_width; @@ -676,7 +674,7 @@ void LineEdit::_notification(int p_what) { if (char_ofs==cursor_pos && draw_caret) {//may be at the end VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2( - Point2( x_ofs , y_ofs ), Size2( 1, y_area ) ), cursor_color ); + Point2( x_ofs , y_ofs ), Size2( 1, caret_height ) ), cursor_color ); } } break; case NOTIFICATION_FOCUS_ENTER: { @@ -725,8 +723,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 +747,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 +801,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 +876,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 +908,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 +923,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 +1062,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; } @@ -1200,24 +1192,28 @@ void LineEdit::menu_option(int p_option) { switch(p_option) { case MENU_CUT: { - cut_text(); + if (editable) { + cut_text(); + } } break; case MENU_COPY: { copy_text(); } break; case MENU_PASTE: { - - paste_text(); + if (editable) { + paste_text(); + } } break; case MENU_CLEAR: { - clear(); + if (editable) { + clear(); + } } break; case MENU_SELECT_ALL: { select_all(); } break; case MENU_UNDO: { - undo(); } break; @@ -1236,6 +1232,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 +1277,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 +1317,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 +1359,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/panel.h b/scene/gui/panel.h index efa9ebcaa0..9e2e7df7f0 100644 --- a/scene/gui/panel.h +++ b/scene/gui/panel.h @@ -45,4 +45,6 @@ public: }; + + #endif diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index b3f18bf8fa..2fbb093e8e 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -701,6 +701,13 @@ void PopupMenu::set_item_submenu(int p_idx, const String& p_submenu) { update(); } +void PopupMenu::toggle_item_checked(int p_idx) { + + ERR_FAIL_INDEX(p_idx,items.size()); + items[p_idx].checked = !items[p_idx].checked; + update(); +} + String PopupMenu::get_item_text(int p_idx) const { ERR_FAIL_INDEX_V(p_idx,items.size(),""); @@ -1061,33 +1068,40 @@ void PopupMenu::_bind_methods() { ObjectTypeDB::bind_method(_MD("add_icon_check_shortcut","texture","shortcut:ShortCut","id"),&PopupMenu::add_icon_check_shortcut,DEFVAL(-1)); ObjectTypeDB::bind_method(_MD("add_check_shortcut","shortcut:ShortCut","id"),&PopupMenu::add_check_shortcut,DEFVAL(-1)); - ObjectTypeDB::bind_method(_MD("set_item_text","idx","text"),&PopupMenu::set_item_text); ObjectTypeDB::bind_method(_MD("set_item_icon","idx","icon"),&PopupMenu::set_item_icon); + ObjectTypeDB::bind_method(_MD("set_item_checked","idx","checked"),&PopupMenu::set_item_checked); + ObjectTypeDB::bind_method(_MD("set_item_ID","idx","id"),&PopupMenu::set_item_ID); ObjectTypeDB::bind_method(_MD("set_item_accelerator","idx","accel"),&PopupMenu::set_item_accelerator); ObjectTypeDB::bind_method(_MD("set_item_metadata","idx","metadata"),&PopupMenu::set_item_metadata); - ObjectTypeDB::bind_method(_MD("set_item_checked","idx","checked"),&PopupMenu::set_item_checked); ObjectTypeDB::bind_method(_MD("set_item_disabled","idx","disabled"),&PopupMenu::set_item_disabled); - ObjectTypeDB::bind_method(_MD("set_item_shortcut","idx","shortcut:ShortCut"),&PopupMenu::set_item_shortcut); ObjectTypeDB::bind_method(_MD("set_item_submenu","idx","submenu"),&PopupMenu::set_item_submenu); ObjectTypeDB::bind_method(_MD("set_item_as_separator","idx","enable"),&PopupMenu::set_item_as_separator); ObjectTypeDB::bind_method(_MD("set_item_as_checkable","idx","enable"),&PopupMenu::set_item_as_checkable); - ObjectTypeDB::bind_method(_MD("set_item_ID","idx","id"),&PopupMenu::set_item_ID); + ObjectTypeDB::bind_method(_MD("set_item_tooltip","idx","tooltip"),&PopupMenu::set_item_tooltip); + ObjectTypeDB::bind_method(_MD("set_item_shortcut","idx","shortcut:ShortCut"),&PopupMenu::set_item_shortcut); + + ObjectTypeDB::bind_method(_MD("toggle_item_checked","idx"), &PopupMenu::toggle_item_checked); + ObjectTypeDB::bind_method(_MD("get_item_text","idx"),&PopupMenu::get_item_text); ObjectTypeDB::bind_method(_MD("get_item_icon","idx"),&PopupMenu::get_item_icon); - ObjectTypeDB::bind_method(_MD("get_item_metadata","idx"),&PopupMenu::get_item_metadata); + ObjectTypeDB::bind_method(_MD("is_item_checked","idx"),&PopupMenu::is_item_checked); + ObjectTypeDB::bind_method(_MD("get_item_ID","idx"),&PopupMenu::get_item_ID); + ObjectTypeDB::bind_method(_MD("get_item_index","id"),&PopupMenu::get_item_index); ObjectTypeDB::bind_method(_MD("get_item_accelerator","idx"),&PopupMenu::get_item_accelerator); - ObjectTypeDB::bind_method(_MD("get_item_shortcut:ShortCut","idx"),&PopupMenu::get_item_shortcut); + ObjectTypeDB::bind_method(_MD("get_item_metadata","idx"),&PopupMenu::get_item_metadata); + ObjectTypeDB::bind_method(_MD("is_item_disabled","idx"),&PopupMenu::is_item_disabled); ObjectTypeDB::bind_method(_MD("get_item_submenu","idx"),&PopupMenu::get_item_submenu); ObjectTypeDB::bind_method(_MD("is_item_separator","idx"),&PopupMenu::is_item_separator); ObjectTypeDB::bind_method(_MD("is_item_checkable","idx"),&PopupMenu::is_item_checkable); - ObjectTypeDB::bind_method(_MD("is_item_checked","idx"),&PopupMenu::is_item_checked); - ObjectTypeDB::bind_method(_MD("is_item_disabled","idx"),&PopupMenu::is_item_disabled); - ObjectTypeDB::bind_method(_MD("get_item_ID","idx"),&PopupMenu::get_item_ID); - ObjectTypeDB::bind_method(_MD("get_item_index","id"),&PopupMenu::get_item_index); + ObjectTypeDB::bind_method(_MD("get_item_tooltip","idx"),&PopupMenu::get_item_tooltip); + ObjectTypeDB::bind_method(_MD("get_item_shortcut:ShortCut","idx"),&PopupMenu::get_item_shortcut); + ObjectTypeDB::bind_method(_MD("get_item_count"),&PopupMenu::get_item_count); - ObjectTypeDB::bind_method(_MD("add_separator"),&PopupMenu::add_separator); + ObjectTypeDB::bind_method(_MD("remove_item","idx"),&PopupMenu::remove_item); + + ObjectTypeDB::bind_method(_MD("add_separator"),&PopupMenu::add_separator); ObjectTypeDB::bind_method(_MD("clear"),&PopupMenu::clear); ObjectTypeDB::bind_method(_MD("_set_items"),&PopupMenu::_set_items); @@ -1125,5 +1139,3 @@ PopupMenu::PopupMenu() { PopupMenu::~PopupMenu() { } - - diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h index f35e91d4e4..b3e8cd2713 100644 --- a/scene/gui/popup_menu.h +++ b/scene/gui/popup_menu.h @@ -116,6 +116,8 @@ public: void set_item_tooltip(int p_idx,const String& p_tooltip); void set_item_shortcut(int p_idx, const Ref<ShortCut>& p_shortcut); + void toggle_item_checked(int p_idx); + String get_item_text(int p_idx) const; Ref<Texture> get_item_icon(int p_idx) const; bool is_item_checked(int p_idx) const; diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp index 190e8e141f..479bb96fe2 100644 --- a/scene/gui/scroll_container.cpp +++ b/scene/gui/scroll_container.cpp @@ -228,14 +228,14 @@ void ScrollContainer::_notification(int p_what) { child_max_size.y = MAX(child_max_size.y, minsize.y); Rect2 r = Rect2(-scroll,minsize); - if (!scroll_h) { + if (!(scroll_h || h_scroll->is_visible())) { r.pos.x=0; if (c->get_h_size_flags()&SIZE_EXPAND) r.size.width=MAX(size.width,minsize.width); else r.size.width=minsize.width; } - if (!scroll_v) { + if (!(scroll_v || v_scroll->is_visible())) { r.pos.y=0; r.size.height=size.height; if (c->get_v_size_flags()&SIZE_EXPAND) diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 4756fdee26..cabd6520b4 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -34,6 +34,7 @@ #include "globals.h" #include "message_queue.h" +#include "scene/main/viewport.h" #define TAB_PIXELS @@ -699,6 +700,7 @@ void TextEdit::_notification(int p_what) { bool prev_is_char=false; bool prev_is_number = false; bool in_keyword=false; + bool underlined=false; bool in_word = false; bool in_function_name = false; bool in_member_variable = false; @@ -824,8 +826,10 @@ void TextEdit::_notification(int p_what) { } } - if (!is_char) + if (!is_char) { in_keyword=false; + underlined=false; + } if (in_region==-1 && !in_keyword && is_char && !prev_is_char) { @@ -843,6 +847,12 @@ void TextEdit::_notification(int p_what) { in_keyword=true; keyword_color=*col; } + + if (select_identifiers_enabled && hilighted_word!=String()) { + if (hilighted_word==range) { + underlined=true; + } + } } if (!in_function_name && in_word && !in_keyword) { @@ -1023,8 +1033,12 @@ void TextEdit::_notification(int p_what) { color = cache.caret_background_color; } - if (str[j]>=32) - cache.font->draw_char(ci,Point2i( char_ofs+char_margin, ofs_y+ascent),str[j],str[j+1],in_selection?cache.font_selected_color:color); + if (str[j]>=32) { + int w = cache.font->draw_char(ci,Point2i( char_ofs+char_margin, ofs_y+ascent),str[j],str[j+1],in_selection?cache.font_selected_color:color); + if (underlined) { + draw_rect(Rect2( char_ofs+char_margin, ofs_y+ascent+2,w,1),in_selection?cache.font_selected_color:color); + } + } else if (draw_tabs && str[j]=='\t') { int yofs= (get_row_height() - cache.tab_icon->get_height())/2; @@ -1500,11 +1514,19 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } if (mb.button_index==BUTTON_LEFT) { + _reset_caret_blink_timer(); int row,col; _get_mouse_pos(Point2i(mb.x,mb.y), row,col); + if (mb.mod.command && hilighted_word!=String()) { + + emit_signal("symbol_lookup",hilighted_word,row,col); + return; + } + + // toggle breakpoint on gutter click if (draw_breakpoint_gutter) { int gutter=cache.style_normal->get_margin(MARGIN_LEFT); @@ -1629,7 +1651,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { update(); } - if (mb.button_index==BUTTON_RIGHT) { + if (mb.button_index==BUTTON_RIGHT && context_menu_enabled) { menu->set_pos(get_global_transform().xform(get_local_mouse_pos())); menu->set_size(Vector2(1,1)); @@ -1651,7 +1673,23 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { const InputEventMouseMotion &mm=p_input_event.mouse_motion; - if (mm.button_mask&BUTTON_MASK_LEFT) { + if (select_identifiers_enabled) { + if (mm.mod.command && mm.button_mask==0) { + + String new_word = get_word_at_pos(Vector2(mm.x,mm.y)); + if (new_word!=hilighted_word) { + hilighted_word=new_word; + update(); + } + } else { + if (hilighted_word!=String()) { + hilighted_word=String(); + update(); + } + } + } + + if (mm.button_mask&BUTTON_MASK_LEFT && get_viewport()->gui_get_drag_data()==Variant()) { //ignore if dragging if (selection.selecting_mode!=Selection::MODE_NONE) { @@ -1678,6 +1716,27 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { InputEventKey k=p_input_event.key; + +#ifdef OSX_ENABLED + if (k.scancode==KEY_META) { +#else + if (k.scancode==KEY_CONTROL) { + +#endif + if (select_identifiers_enabled) { + + if (k.pressed) { + + hilighted_word = get_word_at_pos(get_local_mouse_pos()); + update(); + + } else { + hilighted_word=String(); + update(); + } + } + } + if (!k.pressed) return; @@ -1845,6 +1904,8 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { if (!k.mod.command) { _reset_caret_blink_timer(); } + + // save here for insert mode, just in case it is cleared in the following section bool had_selection = selection.active; @@ -2481,7 +2542,9 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } break; case KEY_X: { - + if (readonly) { + break; + } if (!k.mod.command || k.mod.shift || k.mod.alt) { scancode_handled=false; break; @@ -2513,7 +2576,9 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { undo(); } break; case KEY_V: { - + if (readonly) { + break; + } if (!k.mod.command || k.mod.shift || k.mod.alt) { scancode_handled=false; break; @@ -2558,7 +2623,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } update(); } - break;} + } break; default: { @@ -3222,6 +3287,9 @@ void TextEdit::insert_text_at_cursor(const String& p_text) { } Control::CursorShape TextEdit::get_cursor_shape(const Point2& p_pos) const { + if (hilighted_word!=String()) + return CURSOR_POINTING_HAND; + int gutter=cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w+cache.breakpoint_gutter_width; if((completion_active && completion_rect.has_point(p_pos)) || p_pos.x < gutter) { return CURSOR_ARROW; @@ -3264,6 +3332,36 @@ String TextEdit::get_text() { }; + +String TextEdit::get_text_for_lookup_completion() { + + + int row,col; + _get_mouse_pos(get_local_mouse_pos(), row,col); + + + String longthing; + int len = text.size(); + for (int i=0;i<len;i++) { + + if (i==row) { + longthing+=text[i].substr(0,col); + longthing+=String::chr(0xFFFF); //not unicode, represents the cursor + longthing+=text[i].substr(col,text[i].size()); + } else { + + longthing+=text[i]; + } + + + if (i!=len-1) + longthing+="\n"; + } + + return longthing; + +} + String TextEdit::get_text_for_completion() { String longthing; @@ -4099,12 +4197,15 @@ void TextEdit::_confirm_completion() { void TextEdit::_cancel_code_hint() { + + VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0); completion_hint=""; update(); } void TextEdit::_cancel_completion() { + VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0); if (!completion_active) return; @@ -4284,6 +4385,7 @@ void TextEdit::query_code_comple() { void TextEdit::set_code_hint(const String& p_hint) { + VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1); completion_hint=p_hint; completion_hint_offset=-0xFFFF; update(); @@ -4291,7 +4393,7 @@ void TextEdit::set_code_hint(const String& p_hint) { void TextEdit::code_complete(const Vector<String> &p_strings) { - + VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1); completion_strings=p_strings; completion_active=true; completion_current=""; @@ -4301,6 +4403,38 @@ void TextEdit::code_complete(const Vector<String> &p_strings) { } +String TextEdit::get_word_at_pos(const Vector2& p_pos) const { + + int row,col; + _get_mouse_pos(p_pos, row, col); + + String s = text[row]; + if (s.length()==0) + return ""; + int beg=CLAMP(col,0,s.length()); + int end=beg; + + + if (s[beg]>32 || beg==s.length()) { + + bool symbol = beg < s.length() && _is_symbol(s[beg]); //not sure if right but most editors behave like this + + while(beg>0 && s[beg-1]>32 && (symbol==_is_symbol(s[beg-1]))) { + beg--; + } + while(end<s.length() && s[end+1]>32 && (symbol==_is_symbol(s[end+1]))) { + end++; + } + + if (end<s.length()) + end+=1; + + return s.substr(beg,end-beg); + } + + return String(); +} + String TextEdit::get_tooltip(const Point2& p_pos) const { if (!tooltip_obj) @@ -4401,18 +4535,22 @@ void TextEdit::menu_option(int p_option) { switch( p_option ) { case MENU_CUT: { - - cut(); + if (!readonly) { + cut(); + } } break; case MENU_COPY: { copy(); } break; case MENU_PASTE: { - - paste(); + if (!readonly) { + paste(); + } } break; case MENU_CLEAR: { - clear(); + if (!readonly) { + clear(); + } } break; case MENU_SELECT_ALL: { select_all(); @@ -4424,6 +4562,21 @@ void TextEdit::menu_option(int p_option) { }; } + +void TextEdit::set_select_identifiers_on_hover(bool p_enable) { + + select_identifiers_enabled=p_enable; +} + +bool TextEdit::is_selecting_identifiers_on_hover_enabled() const { + + return select_identifiers_enabled; +} + +void TextEdit::set_context_menu_enabled(bool p_enable) { + context_menu_enabled = p_enable; +} + PopupMenu *TextEdit::get_menu() const { return menu; } @@ -4520,6 +4673,7 @@ void TextEdit::_bind_methods() { ADD_SIGNAL(MethodInfo("text_changed")); ADD_SIGNAL(MethodInfo("request_completion")); ADD_SIGNAL(MethodInfo("breakpoint_toggled", PropertyInfo( Variant::INT, "row"))); + ADD_SIGNAL(MethodInfo("symbol_lookup", PropertyInfo(Variant::STRING,"symbol"),PropertyInfo( Variant::INT, "row"),PropertyInfo( Variant::INT, "column"))); BIND_CONSTANT( MENU_CUT ); BIND_CONSTANT( MENU_COPY ); @@ -4640,7 +4794,9 @@ TextEdit::TextEdit() { auto_indent=false; insert_mode = false; window_has_focus=true; + select_identifiers_enabled=false; + context_menu_enabled=true; menu = memnew( PopupMenu ); add_child(menu); menu->add_item(TTR("Cut"),MENU_CUT,KEY_MASK_CMD|KEY_X); diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index f0301fc250..37477e3b7e 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -242,6 +242,9 @@ class TextEdit : public Control { bool auto_indent; bool cut_copy_line; bool insert_mode; + bool select_identifiers_enabled; + + String hilighted_word; uint64_t last_dblclk; @@ -266,6 +269,8 @@ class TextEdit : public Control { int search_result_line; int search_result_col; + bool context_menu_enabled; + int get_visible_rows() const; int get_char_count(); @@ -316,8 +321,6 @@ class TextEdit : public Control { void _confirm_completion(); void _update_completion_candidates(); - void _get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) const; - protected: virtual String get_tooltip(const Point2& p_pos) const; @@ -357,6 +360,8 @@ public: virtual CursorShape get_cursor_shape(const Point2& p_pos=Point2i()) const; + void _get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) const; + //void delete_char(); //void delete_line(); @@ -444,6 +449,7 @@ public: String get_selection_text() const; String get_word_under_cursor() const; + String get_word_at_pos(const Vector2& p_pos) const; bool search(const String &p_key,uint32_t p_search_flags, int p_from_line, int p_from_column,int &r_line,int &r_column) const; @@ -492,9 +498,14 @@ public: void set_code_hint(const String& p_hint); void query_code_comple(); + void set_select_identifiers_on_hover(bool p_enable); + bool is_selecting_identifiers_on_hover_enabled() const; + + void set_context_menu_enabled(bool p_enable); PopupMenu *get_menu() const; String get_text_for_completion(); + String get_text_for_lookup_completion(); virtual bool is_text_field() const; TextEdit(); 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 20794b2faa..ca9c666c01 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -32,6 +32,7 @@ #include "os/keyboard.h" #include "globals.h" #include "os/input.h" +#include "scene/main/viewport.h" @@ -829,6 +830,8 @@ void Tree::update_cache() { cache.guide_width=get_constant("guide_width"); cache.draw_relationship_lines=get_constant("draw_relationship_lines"); cache.relationship_line_color=get_color("relationship_line_color"); + cache.scroll_border=get_constant("scroll_border"); + cache.scroll_speed=get_constant("scroll_speed"); cache.title_button = get_stylebox("title_button_normal"); cache.title_button_pressed = get_stylebox("title_button_pressed"); @@ -1701,16 +1704,11 @@ int Tree::propagate_mouse_event(const Point2i &p_pos,int x_ofs,int y_ofs,bool p_ } break; case TreeItem::CELL_MODE_CHECK: { - Ref<Texture> checked = cache.checked; bring_up_editor=false; //checkboxes are not edited with editor - if (x>=0 && x<= checked->get_width()+cache.hseparation ) { - - - p_item->set_checked(col,!c.checked); - item_edited(col,p_item); - click_handled=true; - //p_item->edited_signal.call(col); - } + p_item->set_checked(col, !c.checked); + item_edited(col, p_item); + click_handled = true; + //p_item->edited_signal.call(col); } break; case TreeItem::CELL_MODE_RANGE: @@ -2681,11 +2679,17 @@ void Tree::_notification(int p_what) { if (p_what==NOTIFICATION_DRAG_END) { drop_mode_flags=0; + scrolling = false; + set_fixed_process(false); update(); } if (p_what==NOTIFICATION_DRAG_BEGIN) { single_select_defer=NULL; + if (cache.scroll_speed > 0 && get_rect().has_point(get_viewport()->get_mouse_pos() - get_global_pos())) { + scrolling = true; + set_fixed_process(true); + } } if (p_what==NOTIFICATION_FIXED_PROCESS) { @@ -2731,6 +2735,28 @@ void Tree::_notification(int p_what) { } } + + if (scrolling) { + Point2 point = get_viewport()->get_mouse_pos() - get_global_pos(); + if (point.x < cache.scroll_border) { + point.x -= cache.scroll_border; + } else if (point.x > get_size().width - cache.scroll_border) { + point.x -= get_size().width - cache.scroll_border; + } else { + point.x = 0; + } + if (point.y < cache.scroll_border) { + point.y -= cache.scroll_border; + } else if (point.y > get_size().height - cache.scroll_border) { + point.y -= get_size().height - cache.scroll_border; + } else { + point.y = 0; + } + point *= cache.scroll_speed * get_fixed_process_delta_time(); + point += get_scroll(); + h_scroll->set_val(point.x); + v_scroll->set_val(point.y); + } } if (p_what==NOTIFICATION_DRAW) { diff --git a/scene/gui/tree.h b/scene/gui/tree.h index 2124dce749..6c2f1dae40 100644 --- a/scene/gui/tree.h +++ b/scene/gui/tree.h @@ -390,6 +390,8 @@ friend class TreeItem; int button_margin; Point2 offset; int draw_relationship_lines; + int scroll_border; + int scroll_speed; enum ClickType { CLICK_NONE, @@ -448,6 +450,7 @@ friend class TreeItem; bool drag_touching_deaccel; bool click_handled; bool allow_rmb_select; + bool scrolling; bool force_select_on_already_selected; diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp index 1be847929d..335672126c 100644 --- a/scene/gui/video_player.cpp +++ b/scene/gui/video_player.cpp @@ -248,7 +248,7 @@ void VideoPlayer::stop() { playback->stop(); AudioServer::get_singleton()->stream_set_active(stream_rid,false); - resampler.clear(); + resampler.flush(); set_process(false); last_audio_time=0; }; @@ -426,5 +426,6 @@ VideoPlayer::~VideoPlayer() { if (stream_rid.is_valid()) AudioServer::get_singleton()->free(stream_rid); + resampler.clear(); //Not necessary here, but make in consistent with other "stream_player" classes }; diff --git a/scene/io/resource_format_image.cpp b/scene/io/resource_format_image.cpp index f3a0eaa8c4..55ad23ba93 100644 --- a/scene/io/resource_format_image.cpp +++ b/scene/io/resource_format_image.cpp @@ -136,61 +136,7 @@ RES ResourceFormatLoaderImage::load(const String &p_path, const String& p_origin #endif - uint32_t flags=0; - - FileAccess *f2 = FileAccess::open(p_path+".flags",FileAccess::READ); - Map<String,bool> flags_found; - if (f2) { - - while(!f2->eof_reached()) { - String l2 = f2->get_line(); - int eqpos = l2.find("="); - if (eqpos!=-1) { - String flag=l2.substr(0,eqpos).strip_edges(); - String val=l2.substr(eqpos+1,l2.length()).strip_edges().to_lower(); - flags_found[flag]=(val=="true" || val=="1")?true:false; - } - } - memdelete(f2); - } - - - if (flags_found.has("filter")) { - if (flags_found["filter"]) - flags|=Texture::FLAG_FILTER; - } else if (bool(GLOBAL_DEF("image_loader/filter",true))) { - flags|=Texture::FLAG_FILTER; - } - - - if (flags_found.has("gen_mipmaps")) { - if (flags_found["gen_mipmaps"]) - flags|=Texture::FLAG_MIPMAPS; - } else if (bool(GLOBAL_DEF("image_loader/gen_mipmaps",true))) { - flags|=Texture::FLAG_MIPMAPS; - } - - if (flags_found.has("repeat")) { - if (flags_found["repeat"]) - flags|=Texture::FLAG_REPEAT; - } else if (bool(GLOBAL_DEF("image_loader/repeat",true))) { - flags|=Texture::FLAG_REPEAT; - } - - if (flags_found.has("anisotropic")) { - if (flags_found["anisotropic"]) - flags|=Texture::FLAG_ANISOTROPIC_FILTER; - } - - if (flags_found.has("tolinear")) { - if (flags_found["tolinear"]) - flags|=Texture::FLAG_CONVERT_TO_LINEAR; - } - - if (flags_found.has("mirroredrepeat")) { - if (flags_found["mirroredrepeat"]) - flags|=Texture::FLAG_MIRRORED_REPEAT; - } + uint32_t flags=load_image_flags(p_path); if (debug_load_times) begtime=OS::get_singleton()->get_ticks_usec(); @@ -214,6 +160,68 @@ RES ResourceFormatLoaderImage::load(const String &p_path, const String& p_origin } +uint32_t ResourceFormatLoaderImage::load_image_flags(const String &p_path) { + + + FileAccess *f2 = FileAccess::open(p_path+".flags",FileAccess::READ); + Map<String,bool> flags_found; + if (f2) { + + while(!f2->eof_reached()) { + String l2 = f2->get_line(); + int eqpos = l2.find("="); + if (eqpos!=-1) { + String flag=l2.substr(0,eqpos).strip_edges(); + String val=l2.substr(eqpos+1,l2.length()).strip_edges().to_lower(); + flags_found[flag]=(val=="true" || val=="1")?true:false; + } + } + memdelete(f2); + } + + + uint32_t flags=0; + + if (flags_found.has("filter")) { + if (flags_found["filter"]) + flags|=Texture::FLAG_FILTER; + } else if (bool(GLOBAL_DEF("image_loader/filter",true))) { + flags|=Texture::FLAG_FILTER; + } + + + if (flags_found.has("gen_mipmaps")) { + if (flags_found["gen_mipmaps"]) + flags|=Texture::FLAG_MIPMAPS; + } else if (bool(GLOBAL_DEF("image_loader/gen_mipmaps",true))) { + flags|=Texture::FLAG_MIPMAPS; + } + + if (flags_found.has("repeat")) { + if (flags_found["repeat"]) + flags|=Texture::FLAG_REPEAT; + } else if (bool(GLOBAL_DEF("image_loader/repeat",true))) { + flags|=Texture::FLAG_REPEAT; + } + + if (flags_found.has("anisotropic")) { + if (flags_found["anisotropic"]) + flags|=Texture::FLAG_ANISOTROPIC_FILTER; + } + + if (flags_found.has("tolinear")) { + if (flags_found["tolinear"]) + flags|=Texture::FLAG_CONVERT_TO_LINEAR; + } + + if (flags_found.has("mirroredrepeat")) { + if (flags_found["mirroredrepeat"]) + flags|=Texture::FLAG_MIRRORED_REPEAT; + } + + return flags; +} + bool ResourceFormatLoaderImage::handles_type(const String& p_type) const { return ObjectTypeDB::is_type(p_type,"Texture") || ObjectTypeDB::is_type(p_type,"CubeMap"); diff --git a/scene/io/resource_format_image.h b/scene/io/resource_format_image.h index 6388aa641f..cce6ffab83 100644 --- a/scene/io/resource_format_image.h +++ b/scene/io/resource_format_image.h @@ -39,8 +39,8 @@ class ResourceFormatLoaderImage : public ResourceFormatLoader { bool debug_load_times; int max_texture_size; public: - virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL); + static uint32_t load_image_flags(const String &p_path); virtual void get_recognized_extensions(List<String> *p_extensions) const; virtual bool handles_type(const String& p_type) const; virtual String get_resource_type(const String &p_path) const; diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp index c31a57f819..8e238c7d77 100644 --- a/scene/main/canvas_layer.cpp +++ b/scene/main/canvas_layer.cpp @@ -168,20 +168,13 @@ void CanvasLayer::_notification(int p_what) { case NOTIFICATION_ENTER_TREE: { - Node *n = this; - vp=NULL; + if (custom_viewport && ObjectDB::get_instance(custom_viewport_id)) { - while(n) { + vp=custom_viewport; + } else { + vp=Node::get_viewport(); - if (n->cast_to<Viewport>()) { - - vp = n->cast_to<Viewport>(); - break; - } - n=n->get_parent(); } - - ERR_FAIL_COND(!vp); viewport=vp->get_viewport(); @@ -205,6 +198,7 @@ Size2 CanvasLayer::get_viewport_size() const { if (!is_inside_tree()) return Size2(1,1); + Rect2 r = vp->get_visible_rect(); return r.size; } @@ -215,6 +209,43 @@ RID CanvasLayer::get_viewport() const { return viewport; } +void CanvasLayer::set_custom_viewport(Node *p_viewport) { + ERR_FAIL_NULL(p_viewport); + if (is_inside_tree()) { + VisualServer::get_singleton()->viewport_remove_canvas(viewport,canvas->get_canvas()); + viewport=RID(); + } + + custom_viewport=p_viewport->cast_to<Viewport>(); + + if (custom_viewport) { + custom_viewport_id=custom_viewport->get_instance_ID(); + } else { + custom_viewport_id=0; + } + + if (is_inside_tree()) { + + + if (custom_viewport) + vp=custom_viewport; + else + vp=Node::get_viewport(); + + viewport = vp->get_viewport(); + + VisualServer::get_singleton()->viewport_attach_canvas(viewport,canvas->get_canvas()); + VisualServer::get_singleton()->viewport_set_canvas_layer(viewport,canvas->get_canvas(),layer); + VisualServer::get_singleton()->viewport_set_canvas_transform(viewport,canvas->get_canvas(),transform); + } + +} + +Node* CanvasLayer::get_custom_viewport() const { + + return custom_viewport; +} + void CanvasLayer::_bind_methods() { @@ -241,8 +272,11 @@ void CanvasLayer::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_scale","scale"),&CanvasLayer::set_scale); ObjectTypeDB::bind_method(_MD("get_scale"),&CanvasLayer::get_scale); + ObjectTypeDB::bind_method(_MD("set_custom_viewport","viewport:Viewport"),&CanvasLayer::set_custom_viewport); + ObjectTypeDB::bind_method(_MD("get_custom_viewport:Viewport"),&CanvasLayer::get_custom_viewport); + ObjectTypeDB::bind_method(_MD("get_world_2d:World2D"),&CanvasLayer::get_world_2d); - ObjectTypeDB::bind_method(_MD("get_viewport"),&CanvasLayer::get_viewport); +// ObjectTypeDB::bind_method(_MD("get_viewport"),&CanvasLayer::get_viewport); ADD_PROPERTY( PropertyInfo(Variant::INT,"layer",PROPERTY_HINT_RANGE,"-128,128,1"),_SCS("set_layer"),_SCS("get_layer") ); //ADD_PROPERTY( PropertyInfo(Variant::MATRIX32,"transform",PROPERTY_HINT_RANGE),_SCS("set_transform"),_SCS("get_transform") ); @@ -260,4 +294,6 @@ CanvasLayer::CanvasLayer() { locrotscale_dirty=false; layer=1; canvas = Ref<World2D>( memnew(World2D) ); + custom_viewport=NULL; + custom_viewport_id=0; } diff --git a/scene/main/canvas_layer.h b/scene/main/canvas_layer.h index a3e8211a43..a1311390be 100644 --- a/scene/main/canvas_layer.h +++ b/scene/main/canvas_layer.h @@ -40,11 +40,15 @@ class CanvasLayer : public Node { bool locrotscale_dirty; Vector2 ofs; - Vector2 scale; + Size2 scale; real_t rot; int layer; Matrix32 transform; Ref<World2D> canvas; + + ObjectID custom_viewport_id; // to check validity + Viewport *custom_viewport; + RID viewport; Viewport *vp; @@ -55,6 +59,7 @@ class CanvasLayer : public Node { void _update_xform(); void _update_locrotscale(); + protected: void _notification(int p_what); @@ -76,8 +81,8 @@ public: void set_rotationd(real_t p_degrees); real_t get_rotationd() const; - void set_scale(const Vector2& p_scale); - Vector2 get_scale() const; + void set_scale(const Size2& p_scale); + Size2 get_scale() const; Ref<World2D> get_world_2d() const; @@ -85,6 +90,9 @@ public: RID get_viewport() const; + void set_custom_viewport(Node *p_viewport); + Node* get_custom_viewport() const; + CanvasLayer(); }; diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp index 9b79af32bf..c713b5e4dc 100644 --- a/scene/main/http_request.cpp +++ b/scene/main/http_request.cpp @@ -96,7 +96,7 @@ Error HTTPRequest::_parse_url(const String& p_url) { return OK; } -Error HTTPRequest::request(const String& p_url, const Vector<String>& p_custom_headers, bool p_ssl_validate_domain) { +Error HTTPRequest::request(const String& p_url, const Vector<String>& p_custom_headers, bool p_ssl_validate_domain, HTTPClient::Method p_method, const String& p_request_data) { ERR_FAIL_COND_V(!is_inside_tree(),ERR_UNCONFIGURED); if ( requesting ) { @@ -104,6 +104,8 @@ Error HTTPRequest::request(const String& p_url, const Vector<String>& p_custom_h ERR_FAIL_V(ERR_BUSY); } + method=p_method; + Error err = _parse_url(p_url); if (err) return err; @@ -114,6 +116,8 @@ Error HTTPRequest::request(const String& p_url, const Vector<String>& p_custom_h bool has_accept=false; headers=p_custom_headers; + request_data = p_request_data; + for(int i=0;i<headers.size();i++) { if (headers[i].findn("user-agent:")==0) @@ -281,7 +285,7 @@ bool HTTPRequest::_update_connection() { switch( client->get_status() ) { case HTTPClient::STATUS_DISCONNECTED: { call_deferred("_request_done",RESULT_CANT_CONNECT,0,StringArray(),ByteArray()); - return true; //end it, since it's doing something + return true; //end it, since it's doing something } break; case HTTPClient::STATUS_RESOLVING: { client->poll(); @@ -334,7 +338,7 @@ bool HTTPRequest::_update_connection() { } else { //did not request yet, do request - Error err = client->request(HTTPClient::METHOD_GET,request_string,headers); + Error err = client->request(method,request_string,headers,request_data); if (err!=OK) { call_deferred("_request_done",RESULT_CONNECTION_ERROR,0,StringArray(),ByteArray()); return true; @@ -531,7 +535,7 @@ int HTTPRequest::get_body_size() const{ void HTTPRequest::_bind_methods() { - ObjectTypeDB::bind_method(_MD("request","url","custom_headers","ssl_validate_domain"),&HTTPRequest::request,DEFVAL(StringArray()),DEFVAL(true)); + ObjectTypeDB::bind_method(_MD("request","url","custom_headers","ssl_validate_domain","method","request_data"),&HTTPRequest::request,DEFVAL(StringArray()),DEFVAL(true),DEFVAL(HTTPClient::METHOD_GET),DEFVAL(String())); ObjectTypeDB::bind_method(_MD("cancel_request"),&HTTPRequest::cancel_request); ObjectTypeDB::bind_method(_MD("get_http_client_status"),&HTTPRequest::get_http_client_status); diff --git a/scene/main/http_request.h b/scene/main/http_request.h index 8dd433982b..705799f044 100644 --- a/scene/main/http_request.h +++ b/scene/main/http_request.h @@ -66,6 +66,8 @@ private: Vector<String> headers; bool validate_ssl; bool use_ssl; + HTTPClient::Method method; + String request_data; bool request_sent; Ref<HTTPClient> client; @@ -114,7 +116,7 @@ protected: static void _bind_methods(); public: - Error request(const String& p_url,const Vector<String>& p_custom_headers=Vector<String>(),bool p_ssl_validate_domain=true); //connects to a full url and perform request + Error request(const String& p_url, const Vector<String>& p_custom_headers=Vector<String>(), bool p_ssl_validate_domain=true, HTTPClient::Method p_method=HTTPClient::METHOD_GET, const String& p_request_data=""); //connects to a full url and perform request void cancel_request(); HTTPClient::Status get_http_client_status() const; diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 086b69c1c5..0c1b8e52e9 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1249,51 +1249,12 @@ void Node::set_human_readable_collision_renaming(bool p_enabled) { } +#ifdef TOOLS_ENABLED +String Node::validate_child_name(Node* p_child) { -String Node::validate_child_name(const String& p_name) const { - - //this approach to autoset node names is human readable but very slow - //it's turned on while running in the editor - - String basename = p_name; - - if (basename==String()) { - - return String(); - } - - int val=1; - - for(;;) { - - String attempted = val > 1 ? (basename + " " +itos(val) ) : basename; - - bool found=false; - - for (int i=0;i<data.children.size();i++) { - - //if (data.children[i]==p_child) - // continue; - if (data.children[i]->get_name() == attempted) { - found=true; - break; - } - - } - - if (found) { - - val++; - continue; - } - - return attempted; - break; - } - - return basename; - + return _generate_serial_child_name(p_child); } +#endif void Node::_validate_child_name(Node *p_child, bool p_force_human_readable) { @@ -1304,41 +1265,8 @@ void Node::_validate_child_name(Node *p_child, bool p_force_human_readable) { //this approach to autoset node names is human readable but very slow //it's turned on while running in the editor - String basename = p_child->data.name; - - if (basename=="") { - - basename = p_child->get_type(); - } - - int val=1; - - for(;;) { - - String attempted = val > 1 ? (basename + " " +itos(val) ) : basename; - - bool found=false; - - for (int i=0;i<data.children.size();i++) { - - if (data.children[i]==p_child) - continue; - if (data.children[i]->get_name() == attempted) { - found=true; - break; - } + p_child->data.name=_generate_serial_child_name(p_child); - } - - if (found) { - - val++; - continue; - } - - p_child->data.name=attempted; - break; - } } else { //this approach to autoset node names is fast but not as readable @@ -1373,6 +1301,54 @@ void Node::_validate_child_name(Node *p_child, bool p_force_human_readable) { } } +String Node::_generate_serial_child_name(Node *p_child) { + + String name = p_child->data.name; + + if (name=="") { + + name = p_child->get_type(); + } + + String nums; + for(int i=name.length()-1;i>=0;i--) { + CharType n=name[i]; + if (n>='0' && n<='9') { + nums=String::chr(name[i])+nums; + } else { + break; + } + } + + int num=nums.to_int(); + if (num<1) + num=1; + + String nnsep=_get_name_num_separator(); + name = name.substr(0,name.length()-nums.length()).strip_edges(); + if ( name.substr(name.length()-nnsep.length(),nnsep.length()) == nnsep) { + name = name.substr(0,name.length()-nnsep.length()); + } + + for(;;) { + String attempt = (name + (num > 1 ? nnsep + itos(num) : "")).strip_edges(); + bool found=false; + for(int i=0;i<data.children.size();i++) { + if (data.children[i]==p_child) + continue; + if (data.children[i]->data.name==attempt) { + found=true; + break; + } + } + if (!found) { + return attempt; + } else { + num++; + } + } +} + void Node::_add_child_nocheck(Node* p_child,const StringName& p_name) { //add a child node quickly, without name validation @@ -2811,6 +2787,10 @@ bool Node::is_displayed_folded() const { void Node::_bind_methods() { + _GLOBAL_DEF("node/name_num_separator",0); + Globals::get_singleton()->set_custom_property_info("node/name_num_separator",PropertyInfo(Variant::INT,"node/name_num_separator",PROPERTY_HINT_ENUM, "None,Space,Underscore,Dash")); + + ObjectTypeDB::bind_method(_MD("_add_child_below_node","node:Node","child_node:Node","legible_unique_name"),&Node::add_child_below_node,DEFVAL(false)); ObjectTypeDB::bind_method(_MD("set_name","name"),&Node::set_name); @@ -2903,16 +2883,16 @@ void Node::_bind_methods() { mi.name="rpc"; - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"rpc",&Node::_rpc_bind,mi); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc",&Node::_rpc_bind,mi); mi.name="rpc_unreliable"; - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"rpc_unreliable",&Node::_rpc_unreliable_bind,mi); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc_unreliable",&Node::_rpc_unreliable_bind,mi); - mi.arguments.push_front( PropertyInfo( Variant::INT, "peer_") ); + mi.arguments.push_front( PropertyInfo( Variant::INT, "peer_id") ); mi.name="rpc_id"; - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"rpc_id",&Node::_rpc_id_bind,mi); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc_id",&Node::_rpc_id_bind,mi); mi.name="rpc_unreliable_id"; - ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"rpc_unreliable_id",&Node::_rpc_unreliable_id_bind,mi); + ObjectTypeDB::bind_vararg_method(METHOD_FLAGS_DEFAULT,"rpc_unreliable_id",&Node::_rpc_unreliable_id_bind,mi); } @@ -2979,6 +2959,17 @@ void Node::_bind_methods() { } +String Node::_get_name_num_separator() { + switch(Globals::get_singleton()->get("node/name_num_separator").operator int()) { + case 0: return ""; + case 1: return " "; + case 2: return "_"; + case 3: return "-"; + } + return " "; +} + + Node::Node() { data.pos=-1; diff --git a/scene/main/node.h b/scene/main/node.h index 3568da2ab0..f18dc81195 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -29,6 +29,7 @@ #ifndef NODE_H #define NODE_H +#include "globals.h" #include "object.h" #include "path_db.h" #include "map.h" @@ -150,7 +151,8 @@ private: void _replace_connections_target(Node* p_new_target); - void _validate_child_name(Node *p_name, bool p_force_human_readable=false); + void _validate_child_name(Node *p_child, bool p_force_human_readable=false); + String _generate_serial_child_name(Node *p_child); void _propagate_reverse_notification(int p_notification); void _propagate_deferred_notification(int p_notification, bool p_reverse); @@ -193,6 +195,7 @@ protected: void _propagate_replace_owner(Node *p_owner,Node* p_by_owner); static void _bind_methods(); + static String _get_name_num_separator(); friend class SceneState; @@ -335,7 +338,9 @@ public: static void print_stray_nodes(); - String validate_child_name(const String& p_name) const; +#ifdef TOOLS_ENABLED + String validate_child_name(Node* p_child); +#endif void queue_delete(); diff --git a/scene/main/scene_main_loop.cpp b/scene/main/scene_main_loop.cpp index 4c7b7c1399..e3472c074a 100644 --- a/scene/main/scene_main_loop.cpp +++ b/scene/main/scene_main_loop.cpp @@ -2200,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); diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 7970229c06..0c243bd473 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -359,13 +359,7 @@ void Viewport::_notification(int p_what) { _update_listener_2d(); _update_rect(); - if (world_2d.is_valid()) { - find_world_2d()->_register_viewport(this,Rect2()); -//best to defer this and not do it here, as it can annoy a lot of setup logic if user -//adds a node and then moves it, will get enter/exit screen/viewport notifications -//unnecesarily -// update_worlds(); - } + find_world_2d()->_register_viewport(this,Rect2()); add_to_group("_viewports"); if (get_tree()->is_debugging_collisions_hint()) { @@ -1001,19 +995,34 @@ bool Viewport::has_transparent_background() const { return transparent_bg; } -#if 0 void Viewport::set_world_2d(const Ref<World2D>& p_world_2d) { + if (world_2d==p_world_2d) + return; + + if (parent && parent->find_world_2d()==p_world_2d) { + WARN_PRINT("Unable to use parent world as world_2d"); + return; + } + + if (is_inside_tree()) { + find_world_2d()->_remove_viewport(this); + VisualServer::get_singleton()->viewport_remove_canvas(viewport,current_canvas); + } + + if (p_world_2d.is_valid()) + world_2d=p_world_2d; + else { + WARN_PRINT("Invalid world"); + world_2d=Ref<World2D>( memnew( World2D )); + } - world_2d=p_world_2d; _update_listener_2d(); - if (is_inside_scene()) { - if (current_canvas.is_valid()) - VisualServer::get_singleton()->viewport_remove_canvas(viewport,current_canvas); + if (is_inside_tree()) { current_canvas=find_world_2d()->get_canvas(); VisualServer::get_singleton()->viewport_attach_canvas(viewport,current_canvas); + find_world_2d()->_register_viewport(this,Rect2()); } - } Ref<World2D> Viewport::find_world_2d() const{ @@ -1025,13 +1034,6 @@ Ref<World2D> Viewport::find_world_2d() const{ else return Ref<World2D>(); } -#endif - -Ref<World2D> Viewport::find_world_2d() const{ - - return world_2d; -} - void Viewport::_propagate_enter_world(Node *p_node) { @@ -1141,6 +1143,11 @@ Ref<World> Viewport::get_world() const{ return world; } +Ref<World2D> Viewport::get_world_2d() const{ + + return world_2d; +} + Ref<World> Viewport::find_world() const{ if (own_world.is_valid()) @@ -1303,6 +1310,9 @@ void Viewport::render_target_clear() { void Viewport::set_render_target_filter(bool p_enable) { + if(!render_target) + return; + render_target_texture->set_flags(p_enable?int(Texture::FLAG_FILTER):int(0)); } @@ -1344,6 +1354,15 @@ Matrix32 Viewport::_get_input_pre_xform() const { return pre_xf; } +Vector2 Viewport::_get_window_offset() const { + + if (parent_control) { + return (parent_control->get_viewport()->get_final_transform() * parent_control->get_global_transform_with_canvas()).get_origin(); + } + + return Vector2(); +} + void Viewport::_make_input_local(InputEvent& ev) { @@ -1351,10 +1370,7 @@ void Viewport::_make_input_local(InputEvent& ev) { case InputEvent::MOUSE_BUTTON: { - Vector2 vp_ofs; - if (parent_control) { - vp_ofs = (parent_control->get_viewport()->get_final_transform() * parent_control->get_global_transform_with_canvas()).get_origin(); - } + Vector2 vp_ofs = _get_window_offset(); Matrix32 ai = get_final_transform().affine_inverse() * _get_input_pre_xform(); Vector2 g = ai.xform(Vector2(ev.mouse_button.global_x,ev.mouse_button.global_y)); @@ -1369,10 +1385,7 @@ void Viewport::_make_input_local(InputEvent& ev) { } break; case InputEvent::MOUSE_MOTION: { - Vector2 vp_ofs; - if (parent_control) { - vp_ofs = (parent_control->get_viewport()->get_final_transform() * parent_control->get_global_transform_with_canvas()).get_origin(); - } + Vector2 vp_ofs = _get_window_offset(); Matrix32 ai = get_final_transform().affine_inverse() * _get_input_pre_xform(); Vector2 g = ai.xform(Vector2(ev.mouse_motion.global_x,ev.mouse_motion.global_y)); @@ -1393,10 +1406,7 @@ void Viewport::_make_input_local(InputEvent& ev) { } break; case InputEvent::SCREEN_TOUCH: { - Vector2 vp_ofs; - if (parent_control) { - vp_ofs = (parent_control->get_viewport()->get_final_transform() * parent_control->get_global_transform_with_canvas()).get_origin(); - } + Vector2 vp_ofs = _get_window_offset(); Matrix32 ai = get_final_transform().affine_inverse() * _get_input_pre_xform(); Vector2 t = ai.xform(Vector2(ev.screen_touch.x,ev.screen_touch.y)-vp_ofs); @@ -1408,10 +1418,7 @@ void Viewport::_make_input_local(InputEvent& ev) { } break; case InputEvent::SCREEN_DRAG: { - Vector2 vp_ofs; - if (parent_control) { - vp_ofs = (parent_control->get_viewport()->get_final_transform() * parent_control->get_global_transform_with_canvas()).get_origin(); - } + Vector2 vp_ofs = _get_window_offset(); Matrix32 ai = get_final_transform().affine_inverse() * _get_input_pre_xform(); Vector2 t = ai.xform(Vector2(ev.screen_drag.x,ev.screen_drag.y)-vp_ofs); @@ -1490,7 +1497,7 @@ void Viewport::_vp_unhandled_input(const InputEvent& p_ev) { Vector2 Viewport::get_mouse_pos() const { - return (get_final_transform().affine_inverse() * _get_input_pre_xform()).xform(Input::get_singleton()->get_mouse_pos()); + return (get_final_transform().affine_inverse() * _get_input_pre_xform()).xform(Input::get_singleton()->get_mouse_pos() - _get_window_offset()); } void Viewport::warp_mouse(const Vector2& p_pos) { @@ -1708,6 +1715,9 @@ Control* Viewport::_gui_find_control_at_pos(CanvasItem* p_node,const Point2& p_g } Matrix32 matrix = p_xform * p_node->get_transform(); + // matrix.basis_determinant() == 0.0f implies that node does not exist on scene + if(matrix.basis_determinant() == 0.0f) + return NULL; if (!c || !c->clips_input() || c->has_point(matrix.affine_inverse().xform(p_global))) { @@ -2590,8 +2600,8 @@ void Viewport::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_rect","rect"), &Viewport::set_rect); ObjectTypeDB::bind_method(_MD("get_rect"), &Viewport::get_rect); - //ObjectTypeDB::bind_method(_MD("set_world_2d","world_2d:World2D"), &Viewport::set_world_2d); - //ObjectTypeDB::bind_method(_MD("get_world_2d:World2D"), &Viewport::get_world_2d); + ObjectTypeDB::bind_method(_MD("set_world_2d","world_2d:World2D"), &Viewport::set_world_2d); + ObjectTypeDB::bind_method(_MD("get_world_2d:World2D"), &Viewport::get_world_2d); ObjectTypeDB::bind_method(_MD("find_world_2d:World2D"), &Viewport::find_world_2d); ObjectTypeDB::bind_method(_MD("set_world","world:World"), &Viewport::set_world); ObjectTypeDB::bind_method(_MD("get_world:World"), &Viewport::get_world); diff --git a/scene/main/viewport.h b/scene/main/viewport.h index 22a97a9888..f657f0507d 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -268,6 +268,8 @@ friend class Control; Control *_gui_get_focus_owner(); + Vector2 _get_window_offset() const; + friend class Listener; void _listener_transform_changed_notify(); void _listener_set(Listener* p_listener); @@ -303,9 +305,11 @@ public: RID get_viewport() const; void set_world(const Ref<World>& p_world); + void set_world_2d(const Ref<World2D>& p_world_2d); Ref<World> get_world() const; Ref<World> find_world() const; + Ref<World2D> get_world_2d() const; Ref<World2D> find_world_2d() const; diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index be2c12d63a..104aeb2b5e 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -55,6 +55,7 @@ #include "scene/gui/option_button.h" #include "scene/gui/color_picker.h" #include "scene/gui/texture_frame.h" +#include "scene/gui/color_rect.h" #include "scene/gui/patch_9_frame.h" #include "scene/gui/menu_button.h" #include "scene/gui/check_box.h" @@ -182,6 +183,7 @@ #include "scene/3d/spatial.h" +#include "scene/3d/remote_transform.h" #include "scene/3d/skeleton.h" #include "scene/3d/bone_attachment.h" #include "scene/3d/room_instance.h" @@ -338,6 +340,7 @@ void register_scene_types() { OS::get_singleton()->yield(); //may take time to init ObjectTypeDB::register_type<TextureFrame>(); + ObjectTypeDB::register_type<ColorFrame>(); ObjectTypeDB::register_type<Patch9Frame>(); ObjectTypeDB::register_type<TabContainer>(); ObjectTypeDB::register_type<Tabs>(); @@ -453,6 +456,7 @@ void register_scene_types() { ObjectTypeDB::register_type<BakedLightInstance>(); ObjectTypeDB::register_type<BakedLightSampler>(); ObjectTypeDB::register_type<WorldEnvironment>(); + ObjectTypeDB::register_type<RemoteTransform>(); ObjectTypeDB::register_virtual_type<Joint>(); ObjectTypeDB::register_type<PinJoint>(); diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index 8c1233b634..0740b591c4 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -40,7 +40,7 @@ typedef Map<const void*,Ref<ImageTexture> > TexCacheMap; static TexCacheMap *tex_cache; -static int scale=1; +static float scale=1; template<class T> static Ref<StyleBoxTexture> make_stylebox(T p_src,float p_left, float p_top, float p_right, float p_botton,float p_margin_left=-1, float p_margin_top=-1, float p_margin_right=-1, float p_margin_botton=-1, bool p_draw_center=true) { @@ -54,10 +54,21 @@ static Ref<StyleBoxTexture> make_stylebox(T p_src,float p_left, float p_top, flo texture = Ref<ImageTexture>( memnew( ImageTexture ) ); Image img(p_src); + if (scale>1) { + Size2 orig_size = Size2(img.get_width(),img.get_height()); + img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); + if (scale!=2.0) { + img.resize(orig_size.x*scale,orig_size.y*scale); + } + } else if (scale<1) { + Size2 orig_size = Size2(img.get_width(),img.get_height()); + img.convert(Image::FORMAT_RGBA); + img.resize(orig_size.x*scale,orig_size.y*scale); } + texture->create_from_image( img,ImageTexture::FLAG_FILTER ); (*tex_cache)[p_src]=texture; } @@ -95,8 +106,17 @@ static Ref<Texture> make_icon(T p_src) { Ref<ImageTexture> texture( memnew( ImageTexture ) ); Image img = Image(p_src); if (scale>1) { + Size2 orig_size = Size2(img.get_width(),img.get_height()); + img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); + if (scale!=2.0) { + img.resize(orig_size.x*scale,orig_size.y*scale); + } + } else if (scale<1) { + Size2 orig_size = Size2(img.get_width(),img.get_height()); + img.convert(Image::FORMAT_RGBA); + img.resize(orig_size.x*scale,orig_size.y*scale); } texture->create_from_image( img,ImageTexture::FLAG_FILTER ); @@ -194,12 +214,9 @@ static Ref<StyleBox> make_empty_stylebox(float p_margin_left=-1, float p_margin_ return style; } -void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<Font> & large_font,Ref<Texture>& default_icon, Ref<StyleBox>& default_style,bool p_hidpi) { +void fill_default_theme(Ref<Theme>& t, const Ref<Font> & default_font, const Ref<Font> & large_font, Ref<Texture>& default_icon, Ref<StyleBox>& default_style, float p_scale) { - if (p_hidpi) - scale=2; - else - scale=1; + scale=p_scale; tex_cache = memnew( TexCacheMap ); @@ -628,6 +645,7 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F 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); @@ -641,6 +659,7 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F 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); @@ -695,6 +714,8 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F t->set_constant("item_margin","Tree",12 *scale); t->set_constant("button_margin","Tree",4 *scale); t->set_constant("draw_relationship_lines", "Tree", 0); + t->set_constant("scroll_border", "Tree", 4); + t->set_constant("scroll_speed", "Tree", 12); // ItemList @@ -967,7 +988,7 @@ void make_default_theme(bool p_hidpi,Ref<Font> p_font) { default_font=make_font2(_lodpi_font_height,_lodpi_font_ascent,_lodpi_font_charcount,&_lodpi_font_charrects[0][0],_lodpi_font_kerning_pair_count,&_lodpi_font_kerning_pairs[0][0],_lodpi_font_img_width,_lodpi_font_img_height,_lodpi_font_img_data); } Ref<BitmapFont> large_font=default_font; - fill_default_theme(t,default_font,large_font,default_icon,default_style,p_hidpi); + fill_default_theme(t,default_font,large_font,default_icon,default_style,p_hidpi?2.0:1.0); Theme::set_default( t ); Theme::set_default_icon( default_icon ); diff --git a/scene/resources/default_theme/default_theme.h b/scene/resources/default_theme/default_theme.h index a2a45ac004..3312b2d812 100644 --- a/scene/resources/default_theme/default_theme.h +++ b/scene/resources/default_theme/default_theme.h @@ -35,7 +35,7 @@ @author Juan Linietsky <reduzio@gmail.com> */ -void fill_default_theme(Ref<Theme>& theme,const Ref<Font> & default_font,const Ref<Font> & large_font,Ref<Texture>& default_icon, Ref<StyleBox>& default_style,bool p_hidpi); +void fill_default_theme(Ref<Theme>& theme,const Ref<Font> & default_font,const Ref<Font> & large_font,Ref<Texture>& default_icon, Ref<StyleBox>& default_style,float p_scale); void make_default_theme(bool p_hidpi, Ref<Font> p_font); void clear_default_theme(); 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/theme_data.h b/scene/resources/default_theme/theme_data.h index ea68901196..73c801483f 100644 --- a/scene/resources/default_theme/theme_data.h +++ b/scene/resources/default_theme/theme_data.h @@ -119,6 +119,11 @@ static const unsigned char graph_node_comment_png[]={ }; +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 }; diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp index 40ae26ba5d..02faa9425d 100644 --- a/scene/resources/shader_graph.cpp +++ b/scene/resources/shader_graph.cpp @@ -1483,6 +1483,8 @@ const ShaderGraph::InOutParamInfo ShaderGraph::inout_param_info[]={ {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"LightColor","LIGHT_COLOR.rgb","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"LightAlpha","LIGHT_COLOR.a","",SLOT_TYPE_SCALAR,SLOT_IN}, {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"LightHeight","LIGHT_HEIGHT","",SLOT_TYPE_SCALAR,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"ShadowColor","LIGHT_SHADOW.rgb","",SLOT_TYPE_VEC,SLOT_IN}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"ShadowAlpha","LIGHT_SHADOW.a","",SLOT_TYPE_SCALAR,SLOT_IN}, {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"TexPixelSize","vec3(TEXTURE_PIXEL_SIZE,0)","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"Var1","VAR1.rgb","",SLOT_TYPE_VEC,SLOT_IN}, {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"Var2","VAR2.rgb","",SLOT_TYPE_VEC,SLOT_IN}, @@ -1490,6 +1492,8 @@ const ShaderGraph::InOutParamInfo ShaderGraph::inout_param_info[]={ //canvas item light out {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"LightColor","LIGHT.rgb","",SLOT_TYPE_VEC,SLOT_OUT}, {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"LightAlpha","LIGHT.a","",SLOT_TYPE_SCALAR,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"ShadowColor","SHADOW.rgb","",SLOT_TYPE_VEC,SLOT_OUT}, + {MODE_CANVAS_ITEM,SHADER_TYPE_LIGHT,"ShadowAlpha","SHADOW.a","",SLOT_TYPE_SCALAR,SLOT_OUT}, //end {MODE_MATERIAL,SHADER_TYPE_FRAGMENT,NULL,NULL,NULL,SLOT_TYPE_SCALAR,SLOT_OUT}, diff --git a/scene/resources/world.cpp b/scene/resources/world.cpp index 0a88abf252..1aeea5fa43 100644 --- a/scene/resources/world.cpp +++ b/scene/resources/world.cpp @@ -332,6 +332,10 @@ World::World() { sound_space = SpatialSoundServer::get_singleton()->space_create(); PhysicsServer::get_singleton()->space_set_active(space,true); + PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_GRAVITY,GLOBAL_DEF("physics/default_gravity",9.8)); + PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_GRAVITY_VECTOR,GLOBAL_DEF("physics/default_gravity_vector",Vector3(0,-1,0))); + PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_LINEAR_DAMP,GLOBAL_DEF("physics/default_linear_damp",0.1)); + PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_ANGULAR_DAMP,GLOBAL_DEF("physics/default_angular_damp",0.1)); #ifdef _3D_DISABLED indexer = NULL; diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp index 4c963da5b4..df3a374fc9 100644 --- a/scene/resources/world_2d.cpp +++ b/scene/resources/world_2d.cpp @@ -416,12 +416,6 @@ World2D::World2D() { } Physics2DServer::get_singleton()->area_set_param(space,Physics2DServer::AREA_PARAM_LINEAR_DAMP,GLOBAL_DEF("physics_2d/default_linear_damp",0.1)); Physics2DServer::get_singleton()->area_set_param(space,Physics2DServer::AREA_PARAM_ANGULAR_DAMP,GLOBAL_DEF("physics_2d/default_angular_damp",1)); - Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS,1.0); - Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_CONTACT_MAX_SEPARATION,1.5); - Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION,0.3); - Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_TRESHOLD,2); - Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS,0.2); - indexer = memnew( SpatialIndexer2D ); } diff --git a/scene/resources/world_2d.h b/scene/resources/world_2d.h index a939d935c4..d52189bcd4 100644 --- a/scene/resources/world_2d.h +++ b/scene/resources/world_2d.h @@ -31,6 +31,7 @@ #include "resource.h" #include "servers/physics_2d_server.h" +#include "globals.h" class SpatialIndexer2D; class VisibilityNotifier2D; diff --git a/servers/physics/space_sw.cpp b/servers/physics/space_sw.cpp index 7077146420..9755c49e2d 100644 --- a/servers/physics/space_sw.cpp +++ b/servers/physics/space_sw.cpp @@ -721,7 +721,7 @@ SpaceSW::SpaceSW() { constraint_bias = 0.01; body_linear_velocity_sleep_threshold=GLOBAL_DEF("physics/sleep_threshold_linear",0.1); body_angular_velocity_sleep_threshold=GLOBAL_DEF("physics/sleep_threshold_angular", (8.0 / 180.0 * Math_PI) ); - body_time_to_sleep=0.5; + body_time_to_sleep=GLOBAL_DEF("physics/time_before_sleep",0.5); body_angular_velocity_damp_ratio=10; diff --git a/servers/physics/space_sw.h b/servers/physics/space_sw.h index 3fdef7e62b..29eca2690a 100644 --- a/servers/physics/space_sw.h +++ b/servers/physics/space_sw.h @@ -37,6 +37,7 @@ #include "area_pair_sw.h" #include "broad_phase_sw.h" #include "collision_object_sw.h" +#include "globals.h" class PhysicsDirectSpaceStateSW : public PhysicsDirectSpaceState { 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/shape_2d_sw.cpp b/servers/physics_2d/shape_2d_sw.cpp index 9291aa6c17..77245c687d 100644 --- a/servers/physics_2d/shape_2d_sw.cpp +++ b/servers/physics_2d/shape_2d_sw.cpp @@ -136,7 +136,7 @@ bool LineShape2DSW::intersect_segment(const Vector2& p_begin,const Vector2& p_en return true; } -real_t LineShape2DSW::get_moment_of_inertia(float p_mass, const Vector2 &p_scale) const { +real_t LineShape2DSW::get_moment_of_inertia(float p_mass, const Size2 &p_scale) const { return 0; } @@ -191,7 +191,7 @@ bool RayShape2DSW::intersect_segment(const Vector2& p_begin,const Vector2& p_end } -real_t RayShape2DSW::get_moment_of_inertia(float p_mass, const Vector2 &p_scale) const { +real_t RayShape2DSW::get_moment_of_inertia(float p_mass, const Size2 &p_scale) const { return 0; //rays are mass-less } @@ -252,7 +252,7 @@ bool SegmentShape2DSW::intersect_segment(const Vector2& p_begin,const Vector2& p return true; } -real_t SegmentShape2DSW::get_moment_of_inertia(float p_mass, const Vector2 &p_scale) const { +real_t SegmentShape2DSW::get_moment_of_inertia(float p_mass, const Size2 &p_scale) const { Vector2 s[2]={a*p_scale,b*p_scale}; @@ -336,7 +336,7 @@ bool CircleShape2DSW::intersect_segment(const Vector2& p_begin,const Vector2& p_ return true; } -real_t CircleShape2DSW::get_moment_of_inertia(float p_mass, const Vector2 &p_scale) const { +real_t CircleShape2DSW::get_moment_of_inertia(float p_mass, const Size2 &p_scale) const { return (radius*radius)*(p_scale.x*0.5+p_scale.y*0.5); @@ -407,7 +407,7 @@ bool RectangleShape2DSW::intersect_segment(const Vector2& p_begin,const Vector2& return get_aabb().intersects_segment(p_begin,p_end,&r_point,&r_normal); } -real_t RectangleShape2DSW::get_moment_of_inertia(float p_mass,const Vector2& p_scale) const { +real_t RectangleShape2DSW::get_moment_of_inertia(float p_mass,const Size2& p_scale) const { Vector2 he2=half_extents*2*p_scale; return p_mass*he2.dot(he2)/12.0f; @@ -540,7 +540,7 @@ bool CapsuleShape2DSW::intersect_segment(const Vector2& p_begin,const Vector2& p return collided; //todo } -real_t CapsuleShape2DSW::get_moment_of_inertia(float p_mass, const Vector2 &p_scale) const { +real_t CapsuleShape2DSW::get_moment_of_inertia(float p_mass, const Size2 &p_scale) const { Vector2 he2=Vector2(radius*2,height+radius*2)*p_scale; return p_mass*he2.dot(he2)/12.0f; @@ -670,7 +670,7 @@ bool ConvexPolygonShape2DSW::intersect_segment(const Vector2& p_begin,const Vect return inters; //todo } -real_t ConvexPolygonShape2DSW::get_moment_of_inertia(float p_mass,const Vector2& p_scale) const { +real_t ConvexPolygonShape2DSW::get_moment_of_inertia(float p_mass,const Size2& p_scale) const { Rect2 aabb; aabb.pos=points[0].pos*p_scale; diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/shape_2d_sw.h index 4164896696..b90c36bc04 100644 --- a/servers/physics_2d/shape_2d_sw.h +++ b/servers/physics_2d/shape_2d_sw.h @@ -86,7 +86,7 @@ public: virtual void get_supports(const Vector2& p_normal,Vector2 *r_supports,int & r_amount) const=0; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const=0; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const=0; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const=0; virtual void set_data(const Variant& p_data)=0; virtual Variant get_data() const=0; @@ -175,7 +175,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const; virtual void set_data(const Variant& p_data); virtual Variant get_data() const; @@ -218,7 +218,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const; virtual void set_data(const Variant& p_data); virtual Variant get_data() const; @@ -266,7 +266,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const; virtual void set_data(const Variant& p_data); virtual Variant get_data() const; @@ -304,7 +304,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const; virtual void set_data(const Variant& p_data); virtual Variant get_data() const; @@ -344,7 +344,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const; virtual void set_data(const Variant& p_data); virtual Variant get_data() const; @@ -432,7 +432,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const; virtual void set_data(const Variant& p_data); virtual Variant get_data() const; @@ -495,7 +495,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const; + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const; virtual void set_data(const Variant& p_data); virtual Variant get_data() const; @@ -584,7 +584,7 @@ public: virtual bool contains_point(const Vector2& p_point) const; virtual bool intersect_segment(const Vector2& p_begin,const Vector2& p_end,Vector2 &r_point, Vector2 &r_normal) const; - virtual real_t get_moment_of_inertia(float p_mass,const Vector2& p_scale) const { return 0; } + virtual real_t get_moment_of_inertia(float p_mass,const Size2& p_scale) const { return 0; } virtual void set_data(const Variant& p_data); virtual Variant get_data() const; diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp index 366eda6913..56bee8b0c5 100644 --- a/servers/physics_2d/space_2d_sw.cpp +++ b/servers/physics_2d/space_2d_sw.cpp @@ -81,6 +81,9 @@ int Physics2DDirectSpaceStateSW::intersect_point(const Vector2& p_point,ShapeRes if (!shape->contains_point(local_point)) continue; + if (cc>=p_result_max) + continue; + r_results[cc].collider_id=col_obj->get_instance_id(); if (r_results[cc].collider_id!=0) r_results[cc].collider=ObjectDB::get_instance(r_results[cc].collider_id); @@ -589,7 +592,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 +601,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 +618,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 +688,7 @@ 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) @@ -690,12 +698,12 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p float traveled = n.dot(recover_motion); a+=n*traveled; - +#endif // float d = a.distance_to(b); //if (d<margin) /// continue; - recover_motion+=(b-a)*0.2; + recover_motion+=(b-a)*0.4; } if (recover_motion==Vector2()) { @@ -843,8 +851,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 { @@ -905,16 +914,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; @@ -1312,14 +1324,14 @@ Space2DSW::Space2DSW() { contact_debug_count=0; locked=false; - contact_recycle_radius=0.01; - contact_max_separation=0.05; - contact_max_allowed_penetration= 0.01; - - constraint_bias = 0.01; - body_linear_velocity_sleep_treshold=0.01; - body_angular_velocity_sleep_treshold=(8.0 / 180.0 * Math_PI); - body_time_to_sleep=0.5; + contact_recycle_radius=1.0; + contact_max_separation=1.5; + contact_max_allowed_penetration= 0.3; + + constraint_bias = 0.2; + body_linear_velocity_sleep_treshold=GLOBAL_DEF("physics_2d/sleep_threashold_linear",2.0); + body_angular_velocity_sleep_treshold=GLOBAL_DEF("physics_2d/sleep_threshold_angular",(8.0 / 180.0 * Math_PI)); + body_time_to_sleep=GLOBAL_DEF("physics_2d/time_before_sleep",0.5); broadphase = BroadPhase2DSW::create_func(); diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h index f8e1f32838..45a3e4ca8f 100644 --- a/servers/physics_2d/space_2d_sw.h +++ b/servers/physics_2d/space_2d_sw.h @@ -37,6 +37,7 @@ #include "area_pair_2d_sw.h" #include "broad_phase_2d_sw.h" #include "collision_object_2d_sw.h" +#include "globals.h" class Physics2DDirectSpaceStateSW : public Physics2DDirectSpaceState { @@ -184,7 +185,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.cpp b/servers/visual/rasterizer.cpp index 32f5b80e55..a4b91e17fe 100644 --- a/servers/visual/rasterizer.cpp +++ b/servers/visual/rasterizer.cpp @@ -290,9 +290,6 @@ RID Rasterizer::_create_shader(const FixedMaterialShaderKey& p_key) { //print_line("**VERTEX SHADER GENERATED code: \n"+vcode); - double tf = (OS::get_singleton()->get_ticks_usec()-t)/1000.0; -// print_line("generate: "+rtos(tf)); - shader_set_code(fms.shader,vcode,code,lcode,0,0); fixed_material_shaders[p_key]=fms; diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 09b3ada509..fdf3cb622d 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -1180,6 +1180,7 @@ const ShaderLanguage::BuiltinsDef ShaderLanguage::ci_light_builtins_defs[]={ { "LIGHT_HEIGHT", TYPE_FLOAT}, { "LIGHT_COLOR", TYPE_VEC4}, { "LIGHT_UV", TYPE_VEC2}, + { "LIGHT_SHADOW", TYPE_VEC4}, { "LIGHT", TYPE_VEC4}, { "SHADOW", TYPE_VEC4}, { "POINT_COORD", TYPE_VEC2}, diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index f7614ac080..8d228ad859 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -7534,10 +7534,10 @@ void VisualServerRaster::_draw_cursors_and_margins() { ERR_CONTINUE( !tex ); if (cursors[i].region.has_no_area()) { Point2 size(texture_get_width(tex), texture_get_height(tex)); - rasterizer->canvas_draw_rect(Rect2(cursors[i].pos, size), 0, Rect2(), tex, Color(1, 1, 1, 1)); + rasterizer->canvas_draw_rect(Rect2(cursors[i].pos-cursors[i].center, size), 0, Rect2(), tex, Color(1, 1, 1, 1)); } else { Point2 size = cursors[i].region.size; - rasterizer->canvas_draw_rect(Rect2(cursors[i].pos, size), Rasterizer::CANVAS_RECT_REGION, cursors[i].region, tex, Color(1, 1, 1, 1)); + rasterizer->canvas_draw_rect(Rect2(cursors[i].pos-cursors[i].center, size), Rasterizer::CANVAS_RECT_REGION, cursors[i].region, tex, Color(1, 1, 1, 1)); } }; diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index f31789a92a..dfa0c91c7f 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -531,6 +531,7 @@ void VisualServer::_bind_methods() { ObjectTypeDB::bind_method(_MD("canvas_item_set_self_opacity"),&VisualServer::canvas_item_set_self_opacity); 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_set_sort_children_by_y"),&VisualServer::canvas_item_set_sort_children_by_y); 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); diff --git a/tools/SCsub b/tools/SCsub index f6c14a13fb..67b1f20e72 100644 --- a/tools/SCsub +++ b/tools/SCsub @@ -115,12 +115,8 @@ 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') lib = env.Library("tool",env.tool_sources) 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/dist/uwp_template/AppxManifest.xml b/tools/dist/uwp_template/AppxManifest.xml new file mode 100644 index 0000000000..48a2ba7eb3 --- /dev/null +++ b/tools/dist/uwp_template/AppxManifest.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?>
+<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp build" xmlns:build="http://schemas.microsoft.com/developer/appx/2015/build">
+ <Identity Name="$identity_name$" Publisher="$publisher$" Version="$version_string$" ProcessorArchitecture="$architecture$" />
+ <mp:PhoneIdentity PhoneProductId="$product_guid$" PhonePublisherId="$publisher_guid$" />
+ <Properties>
+ <DisplayName>$display_name$</DisplayName>
+ <PublisherDisplayName>$publisher_display_name$</PublisherDisplayName>
+ <Logo>Assets\StoreLogo.png</Logo>
+ </Properties>
+ <Dependencies>
+ <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.14393.0" />
+ <PackageDependency Name="Microsoft.VCLibs.140.00" MinVersion="14.0.24123.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
+ </Dependencies>
+ <Resources>
+ <Resource Language="EN-US" />
+ </Resources>
+ <Applications>
+ <Application Id="App" Executable="godot.winrt.exe" EntryPoint="GodotWinRT.App">
+ <uap:VisualElements DisplayName="$display_name$" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="$app_description$" BackgroundColor="$bg_color$">
+ <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" Square310x310Logo="Assets\Square310x310Logo.png" Square71x71Logo="Assets\Square71x71Logo.png" ShortName="$short_name$">
+ $name_on_tiles$
+ </uap:DefaultTile>
+ <uap:SplashScreen Image="Assets\SplashScreen.png" />
+ $rotation_preference$
+ </uap:VisualElements>
+ </Application>
+ </Applications>
+ $capabilities_place$
+ <build:Metadata>
+ <build:Item Name="GodotEngine" Version="$godot_version$" />
+ </build:Metadata>
+</Package>
\ No newline at end of file diff --git a/tools/dist/uwp_template/Assets/SplashScreen.scale-100.png b/tools/dist/uwp_template/Assets/SplashScreen.scale-100.png Binary files differnew file mode 100644 index 0000000000..540bfb1c01 --- /dev/null +++ b/tools/dist/uwp_template/Assets/SplashScreen.scale-100.png diff --git a/tools/dist/uwp_template/Assets/Square150x150Logo.scale-100.png b/tools/dist/uwp_template/Assets/Square150x150Logo.scale-100.png Binary files differnew file mode 100644 index 0000000000..6cff663eb5 --- /dev/null +++ b/tools/dist/uwp_template/Assets/Square150x150Logo.scale-100.png diff --git a/tools/dist/uwp_template/Assets/Square310x310Logo.scale-100.png b/tools/dist/uwp_template/Assets/Square310x310Logo.scale-100.png Binary files differnew file mode 100644 index 0000000000..12ec232c87 --- /dev/null +++ b/tools/dist/uwp_template/Assets/Square310x310Logo.scale-100.png diff --git a/tools/dist/uwp_template/Assets/Square44x44Logo.scale-100.png b/tools/dist/uwp_template/Assets/Square44x44Logo.scale-100.png Binary files differnew file mode 100644 index 0000000000..ad059994ed --- /dev/null +++ b/tools/dist/uwp_template/Assets/Square44x44Logo.scale-100.png diff --git a/tools/dist/uwp_template/Assets/Square71x71Logo.scale-100.png b/tools/dist/uwp_template/Assets/Square71x71Logo.scale-100.png Binary files differnew file mode 100644 index 0000000000..b1bf331365 --- /dev/null +++ b/tools/dist/uwp_template/Assets/Square71x71Logo.scale-100.png diff --git a/tools/dist/uwp_template/Assets/StoreLogo.scale-100.png b/tools/dist/uwp_template/Assets/StoreLogo.scale-100.png Binary files differnew file mode 100644 index 0000000000..8d7a625c82 --- /dev/null +++ b/tools/dist/uwp_template/Assets/StoreLogo.scale-100.png diff --git a/tools/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png b/tools/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png Binary files differnew file mode 100644 index 0000000000..b06f1ad50f --- /dev/null +++ b/tools/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png diff --git a/tools/doc/doc_data.cpp b/tools/doc/doc_data.cpp index 479b99a03d..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++) { 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 2f67df1fc3..a556031e5e 100644 --- a/tools/editor/animation_editor.cpp +++ b/tools/editor/animation_editor.cpp @@ -1933,12 +1933,20 @@ void AnimationKeyEditor::_track_editor_input_event(const InputEvent& p_input) { if (mb.button_index==BUTTON_WHEEL_UP && mb.pressed) { - v_scroll->set_val( v_scroll->get_val() - v_scroll->get_page() / 8 ); + if (mb.mod.command) { + zoom->set_val(zoom->get_val() + zoom->get_step()); + } else { + v_scroll->set_val( v_scroll->get_val() - v_scroll->get_page() / 8 ); + } } if (mb.button_index==BUTTON_WHEEL_DOWN && mb.pressed) { - v_scroll->set_val( v_scroll->get_val() + v_scroll->get_page() / 8 ); + if (mb.mod.command) { + zoom->set_val(zoom->get_val() - zoom->get_step()); + } else { + v_scroll->set_val( v_scroll->get_val() + v_scroll->get_page() / 8 ); + } } if (mb.button_index==BUTTON_RIGHT && mb.pressed) { diff --git a/tools/editor/code_editor.cpp b/tools/editor/code_editor.cpp index 2779275ea8..9240e3527c 100644 --- a/tools/editor/code_editor.cpp +++ b/tools/editor/code_editor.cpp @@ -356,7 +356,7 @@ void FindReplaceBar::_show_search() { show(); search_text->grab_focus(); - if (text_edit->is_selection_active()) { + if (text_edit->is_selection_active() && !selection_only->is_pressed()) { search_text->set_text(text_edit->get_selection_text()); } @@ -376,12 +376,16 @@ void FindReplaceBar::popup_search() { void FindReplaceBar::popup_replace() { + if (!replace_hbc->is_visible() || !replace_options_hbc->is_visible()) { replace_text->clear(); replace_hbc->show(); replace_options_hbc->show(); + } + selection_only->set_pressed( (text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line()) ); + _show_search(); } @@ -409,6 +413,14 @@ void FindReplaceBar::_search_text_entered(const String& p_text) { search_next(); } +void FindReplaceBar::_replace_text_entered(const String& p_text) { + + if (selection_only->is_pressed() && text_edit->is_selection_active()) { + _replace_all(); + _hide_bar(); + } +} + String FindReplaceBar::get_search_text() const { return search_text->get_text(); @@ -452,6 +464,7 @@ void FindReplaceBar::_bind_methods() { ObjectTypeDB::bind_method("_editor_text_changed",&FindReplaceBar::_editor_text_changed); ObjectTypeDB::bind_method("_search_text_changed",&FindReplaceBar::_search_text_changed); ObjectTypeDB::bind_method("_search_text_entered",&FindReplaceBar::_search_text_entered); + ObjectTypeDB::bind_method("_replace_text_entered",&FindReplaceBar::_replace_text_entered); ObjectTypeDB::bind_method("_search_current",&FindReplaceBar::search_current); ObjectTypeDB::bind_method("_search_next",&FindReplaceBar::search_next); ObjectTypeDB::bind_method("_search_prev",&FindReplaceBar::search_prev); @@ -497,18 +510,19 @@ FindReplaceBar::FindReplaceBar() { replace_text = memnew(LineEdit); replace_hbc->add_child(replace_text); replace_text->set_custom_minimum_size(Size2(200, 0)); - replace_text->connect("text_entered",this,"_search_text_entered"); + replace_text->connect("text_entered",this,"_replace_text_entered"); + - replace = memnew(ToolButton); + replace = memnew(Button); replace_hbc->add_child(replace); replace->set_text(TTR("Replace")); - replace->set_focus_mode(FOCUS_NONE); + //replace->set_focus_mode(FOCUS_NONE); replace->connect("pressed",this,"_replace_pressed"); - replace_all = memnew(ToolButton); + replace_all = memnew(Button); replace_hbc->add_child(replace_all); replace_all->set_text(TTR("Replace All")); - replace_all->set_focus_mode(FOCUS_NONE); + //replace_all->set_focus_mode(FOCUS_NONE); replace_all->connect("pressed",this,"_replace_all_pressed"); Control *spacer_split = memnew( Control ); @@ -581,8 +595,10 @@ void FindReplaceDialog::popup_search() { void FindReplaceDialog::popup_replace() { + set_title(TTR("Replace")); bool do_selection=(text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line()); + set_replace_selection_only(do_selection); if (!do_selection && text_edit->is_selection_active()) { @@ -1112,8 +1128,10 @@ void CodeTextEditor::_update_font() { font_overridden = true; } } - if(!font_overridden) + if(!font_overridden) { + text_editor->add_font_override("font",get_font("source","EditorFonts")); + } } void CodeTextEditor::_on_settings_change() { @@ -1152,7 +1170,7 @@ void CodeTextEditor::_notification(int p_what) { _load_theme_settings(); emit_signal("load_theme_settings"); } - if (p_what==NOTIFICATION_ENTER_TREE) { + if (p_what==NOTIFICATION_THEME_CHANGED) { _update_font(); } } diff --git a/tools/editor/code_editor.h b/tools/editor/code_editor.h index 2affa31482..6f59dda1ee 100644 --- a/tools/editor/code_editor.h +++ b/tools/editor/code_editor.h @@ -73,8 +73,8 @@ class FindReplaceBar : public HBoxContainer { TextureButton *hide_button; LineEdit *replace_text; - ToolButton *replace; - ToolButton *replace_all; + Button *replace; + Button *replace_all; CheckBox *selection_only; VBoxContainer *text_vbc; @@ -98,6 +98,7 @@ class FindReplaceBar : public HBoxContainer { void _search_options_changed(bool p_pressed); void _search_text_changed(const String& p_text); void _search_text_entered(const String& p_text); + void _replace_text_entered(const String& p_text); protected: void _notification(int p_what); diff --git a/tools/editor/connections_dialog.cpp b/tools/editor/connections_dialog.cpp index c4f2435675..1baad2c6b3 100644 --- a/tools/editor/connections_dialog.cpp +++ b/tools/editor/connections_dialog.cpp @@ -181,6 +181,14 @@ void ConnectDialog::ok_pressed() { error->popup_centered_minsize(); return; } + Node* target = tree->get_selected(); + if (target->get_script().is_null()) { + if (!target->has_method(dst_method->get_text())) { + error->set_text(TTR("Target method not found! Specify a valid method or attach a script to target Node.")); + error->popup_centered_minsize(); + return; + } + } emit_signal("connected"); hide(); diff --git a/tools/editor/create_dialog.cpp b/tools/editor/create_dialog.cpp index 5aac8bff09..320939cb97 100644 --- a/tools/editor/create_dialog.cpp +++ b/tools/editor/create_dialog.cpp @@ -42,11 +42,84 @@ void CreateDialog::popup(bool p_dontclear) { + recent->clear(); + + FileAccess *f = FileAccess::open( EditorSettings::get_singleton()->get_project_settings_path().plus_file("create_recent."+base_type), FileAccess::READ ); + + if (f) { + + TreeItem *root = recent->create_item(); + + while(!f->eof_reached()) { + String l = f->get_line().strip_edges(); + + if (l!=String()) { + + TreeItem *ti = recent->create_item(root); + ti->set_text(0,l); + if (has_icon(l,"EditorIcons")) { + + ti->set_icon(0,get_icon(l,"EditorIcons")); + } else { + ti->set_icon(0,get_icon("Object","EditorIcons")); + } + } + } + + memdelete(f); + } + + favorites->clear(); + + f = FileAccess::open( EditorSettings::get_singleton()->get_project_settings_path().plus_file("favorites."+base_type), FileAccess::READ ); + + favorite_list.clear(); + + if (f) { + + + while(!f->eof_reached()) { + String l = f->get_line().strip_edges(); + + if (l!=String()) { + favorite_list.push_back(l); + } + } + + memdelete(f); + } else { +#if 0 +// I think this was way too confusing + if (base_type=="Node") { + //harcode some favorites :D + favorite_list.push_back("Panel"); + favorite_list.push_back("Button"); + favorite_list.push_back("Label"); + favorite_list.push_back("LineEdit"); + favorite_list.push_back("Node2D"); + favorite_list.push_back("Sprite"); + favorite_list.push_back("Camera2D"); + favorite_list.push_back("Area2D"); + favorite_list.push_back("CollisionShape2D"); + favorite_list.push_back("Spatial"); + favorite_list.push_back("Camera"); + favorite_list.push_back("Area"); + favorite_list.push_back("CollisionShape"); + favorite_list.push_back("TestCube"); + favorite_list.push_back("AnimationPlayer"); + + } +#endif + } + + _update_favorite_list(); + popup_centered_ratio(); if (p_dontclear) search_box->select_all(); - else + else { search_box->clear(); + } search_box->grab_focus(); _update_search(); @@ -104,7 +177,7 @@ void CreateDialog::add_type(const String& p_type,HashMap<String,TreeItem*>& p_ty item->set_selectable(0,false); } else { - if (!*to_select && (search_box->get_text().is_subsequence_ofi(p_type))) { + if ((!*to_select && (search_box->get_text().is_subsequence_ofi(p_type))) || search_box->get_text()==p_type) { *to_select=item; } @@ -140,6 +213,8 @@ void CreateDialog::_update_search() { search_options->clear(); + favorite->set_disabled(true); + help_bit->set_text(""); /* TreeItem *root = search_options->create_item(); @@ -225,7 +300,7 @@ void CreateDialog::_update_search() { } - if (!to_select) { + if (!to_select || ct[i].name==search_box->get_text()) { to_select=item; } @@ -234,8 +309,11 @@ void CreateDialog::_update_search() { } } - if (to_select) + if (to_select) { to_select->select(0); + favorite->set_disabled(false); + favorite->set_pressed(favorite_list.find(to_select->get_text(0))!=-1); + } get_ok()->set_disabled(root->get_children()==NULL); @@ -246,6 +324,32 @@ void CreateDialog::_confirmed() { TreeItem *ti = search_options->get_selected(); if (!ti) return; + + FileAccess *f = FileAccess::open( EditorSettings::get_singleton()->get_project_settings_path().plus_file("create_recent."+base_type), FileAccess::WRITE ); + + if (f) { + f->store_line(get_selected_type()); + TreeItem *t = recent->get_root(); + if (t) + t=t->get_children(); + int count=0; + while(t) { + if (t->get_text(0)!=get_selected_type()) { + + f->store_line(t->get_text(0)); + } + + if (count>32) { + //limit it to 32 entries.. + break; + } + t=t->get_next(); + count++; + } + + memdelete(f); + } + emit_signal("create"); hide(); } @@ -255,6 +359,7 @@ void CreateDialog::_notification(int p_what) { if (p_what==NOTIFICATION_ENTER_TREE) { connect("confirmed",this,"_confirmed"); + favorite->set_icon(get_icon("Favorites","EditorIcons")); } if (p_what==NOTIFICATION_EXIT_TREE) { @@ -344,6 +449,9 @@ void CreateDialog::_item_selected() { String name = item->get_text(0); + favorite->set_disabled(false); + favorite->set_pressed(favorite_list.find(name)!=-1); + if (!EditorHelp::get_doc_data()->class_list.has(name)) return; @@ -351,12 +459,182 @@ void CreateDialog::_item_selected() { } + +void CreateDialog::_favorite_toggled() { + + TreeItem *item = search_options->get_selected(); + if (!item) + return; + + String name = item->get_text(0); + + if (favorite_list.find(name)==-1) { + favorite_list.push_back(name); + favorite->set_pressed(true); + } else { + favorite_list.erase(name); + favorite->set_pressed(false); + } + + _save_favorite_list(); + _update_favorite_list(); +} + +void CreateDialog::_save_favorite_list() { + + FileAccess *f = FileAccess::open( EditorSettings::get_singleton()->get_project_settings_path().plus_file("favorites."+base_type), FileAccess::WRITE ); + + if (f) { + + for(int i=0;i<favorite_list.size();i++) { + + f->store_line(favorite_list[i]); + } + memdelete(f); + } +} + +void CreateDialog::_update_favorite_list() { + + favorites->clear(); + TreeItem *root = favorites->create_item(); + for(int i=0;i<favorite_list.size();i++) { + TreeItem *ti = favorites->create_item(root); + String l = favorite_list[i]; + ti->set_text(0,l); + + if (has_icon(l,"EditorIcons")) { + + ti->set_icon(0,get_icon(l,"EditorIcons")); + } else { + ti->set_icon(0,get_icon("Object","EditorIcons")); + } + } +} + + +void CreateDialog::_history_selected() { + + TreeItem *item = recent->get_selected(); + if (!item) + return; + + search_box->set_text(item->get_text(0)); + _update_search(); + +} + +void CreateDialog::_favorite_selected(){ + + TreeItem *item = favorites->get_selected(); + if (!item) + return; + + search_box->set_text(item->get_text(0)); + _update_search(); + +} + +void CreateDialog::_history_activated() { + + _confirmed(); +} + +void CreateDialog::_favorite_activated(){ + + _confirmed(); +} + +Variant CreateDialog::get_drag_data_fw(const Point2& p_point,Control* p_from) { + + TreeItem *ti = favorites->get_item_at_pos(p_point); + if (ti) { + Dictionary d; + d["type"]="create_favorite_drag"; + d["class"]=ti->get_text(0); + + ToolButton *tb = memnew( ToolButton ); + tb->set_icon(ti->get_icon(0)); + tb->set_text(ti->get_text(0)); + set_drag_preview(tb); + + return d; + } + + return Variant(); +} + +bool CreateDialog::can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const{ + + Dictionary d = p_data; + if (d.has("type") && String(d["type"])=="create_favorite_drag") { + favorites->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN); + return true; + } + + return false; +} +void CreateDialog::drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from){ + + Dictionary d = p_data; + + TreeItem *ti = favorites->get_item_at_pos(p_point); + if (!ti) + return; + + String drop_at = ti->get_text(0); + int ds = favorites->get_drop_section_at_pos(p_point); + + int drop_idx = favorite_list.find(drop_at); + if (drop_idx<0) + return; + + String type = d["class"]; + + int from_idx = favorite_list.find(type); + if (from_idx<0) + return; + + if (drop_idx==from_idx) { + ds=-1; //cause it will be gone + } else if (drop_idx>from_idx) { + drop_idx--; + } + + favorite_list.remove(from_idx); + + if (ds<0) { + favorite_list.insert(drop_idx,type); + } else { + if (drop_idx>=favorite_list.size()-1) { + favorite_list.push_back(type); + } else { + favorite_list.insert(drop_idx+1,type); + } + } + + _save_favorite_list(); + _update_favorite_list(); + + +} + 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); + ObjectTypeDB::bind_method(_MD("_favorite_toggled"),&CreateDialog::_favorite_toggled); + ObjectTypeDB::bind_method(_MD("_history_selected"),&CreateDialog::_history_selected); + ObjectTypeDB::bind_method(_MD("_favorite_selected"),&CreateDialog::_favorite_selected); + ObjectTypeDB::bind_method(_MD("_history_activated"),&CreateDialog::_history_activated); + ObjectTypeDB::bind_method(_MD("_favorite_activated"),&CreateDialog::_favorite_activated); + + + ObjectTypeDB::bind_method("get_drag_data_fw",&CreateDialog::get_drag_data_fw); + ObjectTypeDB::bind_method("can_drop_data_fw",&CreateDialog::can_drop_data_fw); + ObjectTypeDB::bind_method("drop_data_fw",&CreateDialog::drop_data_fw); ADD_SIGNAL(MethodInfo("create")); @@ -365,12 +643,44 @@ void CreateDialog::_bind_methods() { CreateDialog::CreateDialog() { + HSplitContainer *hbc = memnew( HSplitContainer ); + + add_child(hbc); + set_child_rect(hbc); + + VBoxContainer *lvbc = memnew( VBoxContainer); + hbc->add_child(lvbc); + lvbc->set_custom_minimum_size(Size2(150,0)*EDSCALE); + + favorites = memnew (Tree ); + lvbc->add_margin_child(TTR("Favorites:"),favorites,true); + favorites->set_hide_root(true); + favorites->set_hide_folding(true); + favorites->connect("cell_selected",this,"_favorite_selected"); + favorites->connect("item_activated",this,"_favorite_activated"); + favorites->set_drag_forwarding(this); + + + recent = memnew (Tree ); + lvbc->add_margin_child(TTR("Recent:"),recent,true); + recent->set_hide_root(true); + recent->set_hide_folding(true); + recent->connect("cell_selected",this,"_history_selected"); + recent->connect("item_activated",this,"_history_activated"); + VBoxContainer *vbc = memnew( VBoxContainer ); - add_child(vbc); - set_child_rect(vbc); + hbc->add_child(vbc); + vbc->set_h_size_flags(SIZE_EXPAND_FILL); + HBoxContainer *search_hb = memnew( HBoxContainer ); search_box = memnew( LineEdit ); - vbc->add_margin_child(TTR("Search:"),search_box); + search_box->set_h_size_flags(SIZE_EXPAND_FILL); + search_hb->add_child(search_box); + favorite = memnew( Button ); + favorite->set_toggle_mode(true); + search_hb->add_child(favorite); + favorite->connect("pressed",this,"_favorite_toggled"); + vbc->add_margin_child(TTR("Search:"),search_hb); search_box->connect("text_changed",this,"_text_changed"); search_box->connect("input_event",this,"_sbox_input"); search_options = memnew( Tree ); diff --git a/tools/editor/create_dialog.h b/tools/editor/create_dialog.h index 41156b538a..706a06ae16 100644 --- a/tools/editor/create_dialog.h +++ b/tools/editor/create_dialog.h @@ -32,6 +32,7 @@ #include "scene/gui/dialogs.h" #include "scene/gui/button.h" #include "scene/gui/tree.h" +#include "scene/gui/item_list.h" #include "scene/gui/line_edit.h" #include "scene/gui/label.h" #include "editor_help.h" @@ -46,6 +47,12 @@ class CreateDialog : public ConfirmationDialog { OBJ_TYPE(CreateDialog,ConfirmationDialog ) + + Vector<String> favorite_list; + Tree *favorites; + Tree *recent; + + Button *favorite; LineEdit *search_box; Tree *search_options; String base_type; @@ -55,6 +62,15 @@ class CreateDialog : public ConfirmationDialog { void _item_selected(); void _update_search(); + void _update_favorite_list(); + void _save_favorite_list(); + void _favorite_toggled(); + + void _history_selected(); + void _favorite_selected(); + + void _history_activated(); + void _favorite_activated(); void _sbox_input(const InputEvent& p_ie); @@ -63,6 +79,9 @@ class CreateDialog : public ConfirmationDialog { void add_type(const String& p_type,HashMap<String,TreeItem*>& p_types,TreeItem *p_root,TreeItem **to_select); + Variant get_drag_data_fw(const Point2& p_point,Control* p_from); + bool can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const; + void drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from); protected: diff --git a/tools/editor/editor_data.cpp b/tools/editor/editor_data.cpp index 35ec1ebfcc..8fc18b5b39 100644 --- a/tools/editor/editor_data.cpp +++ b/tools/editor/editor_data.cpp @@ -877,8 +877,7 @@ bool EditorSelection::is_selected(Node * p_node) const { return selection.has(p_node); } - -Array EditorSelection::_get_selected_nodes() { +Array EditorSelection::_get_transformable_selected_nodes() { Array ret; @@ -890,6 +889,18 @@ Array EditorSelection::_get_selected_nodes() { return ret; } +Array EditorSelection::_get_selected_nodes() { + + Array ret; + + for (Map<Node*,Object*>::Element *E=selection.front();E;E=E->next()) { + + ret.push_back(E->key()); + } + + return ret; +} + void EditorSelection::_bind_methods() { ObjectTypeDB::bind_method(_MD("_node_removed"),&EditorSelection::_node_removed); @@ -897,6 +908,7 @@ void EditorSelection::_bind_methods() { ObjectTypeDB::bind_method(_MD("add_node","node:Node"),&EditorSelection::add_node); ObjectTypeDB::bind_method(_MD("remove_node","node:Node"),&EditorSelection::remove_node); ObjectTypeDB::bind_method(_MD("get_selected_nodes"),&EditorSelection::_get_selected_nodes); + ObjectTypeDB::bind_method(_MD("get_transformable_selected_nodes"),&EditorSelection::_get_transformable_selected_nodes); ADD_SIGNAL( MethodInfo("selection_changed") ); } diff --git a/tools/editor/editor_data.h b/tools/editor/editor_data.h index a0b716f560..59f9d4e4f3 100644 --- a/tools/editor/editor_data.h +++ b/tools/editor/editor_data.h @@ -233,6 +233,8 @@ public: void _update_nl(); Array _get_selected_nodes(); + Array _get_transformable_selected_nodes(); + protected: static void _bind_methods(); 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_file_system.cpp b/tools/editor/editor_file_system.cpp index 582b9e2490..be1af16576 100644 --- a/tools/editor/editor_file_system.cpp +++ b/tools/editor/editor_file_system.cpp @@ -208,10 +208,14 @@ void EditorFileSystemDirectory::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_file_count"),&EditorFileSystemDirectory::get_file_count); ObjectTypeDB::bind_method(_MD("get_file","idx"),&EditorFileSystemDirectory::get_file); ObjectTypeDB::bind_method(_MD("get_file_path","idx"),&EditorFileSystemDirectory::get_file_path); - ObjectTypeDB::bind_method(_MD("get_file_types","idx"),&EditorFileSystemDirectory::get_file_type); + ObjectTypeDB::bind_method(_MD("get_file_type","idx"),&EditorFileSystemDirectory::get_file_type); ObjectTypeDB::bind_method(_MD("is_missing_sources","idx"),&EditorFileSystemDirectory::is_missing_sources); ObjectTypeDB::bind_method(_MD("get_name"),&EditorFileSystemDirectory::get_name); - ObjectTypeDB::bind_method(_MD("get_parent"),&EditorFileSystemDirectory::get_parent); + ObjectTypeDB::bind_method(_MD("get_path"),&EditorFileSystemDirectory::get_path); + ObjectTypeDB::bind_method(_MD("get_parent:EditorFileSystemDirectory"),&EditorFileSystemDirectory::get_parent); + ObjectTypeDB::bind_method(_MD("find_file_index","name"),&EditorFileSystemDirectory::find_file_index); + ObjectTypeDB::bind_method(_MD("find_dir_index","name"),&EditorFileSystemDirectory::find_dir_index); + } @@ -1341,6 +1345,16 @@ void EditorFileSystem::update_file(const String& p_file) { void EditorFileSystem::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("get_filesystem:EditorFileSystemDirectory"),&EditorFileSystem::get_filesystem); + ObjectTypeDB::bind_method(_MD("is_scanning"),&EditorFileSystem::is_scanning); + ObjectTypeDB::bind_method(_MD("get_scanning_progress"),&EditorFileSystem::get_scanning_progress); + ObjectTypeDB::bind_method(_MD("scan"),&EditorFileSystem::scan); + ObjectTypeDB::bind_method(_MD("scan_sources"),&EditorFileSystem::scan_sources); + ObjectTypeDB::bind_method(_MD("update_file","path"),&EditorFileSystem::update_file); + ObjectTypeDB::bind_method(_MD("get_path:EditorFileSystemDirectory","path"),&EditorFileSystem::get_path); + ObjectTypeDB::bind_method(_MD("get_file_type","path"),&EditorFileSystem::get_file_type); + ADD_SIGNAL( MethodInfo("filesystem_changed") ); ADD_SIGNAL( MethodInfo("sources_changed",PropertyInfo(Variant::BOOL,"exist")) ); diff --git a/tools/editor/editor_fonts.cpp b/tools/editor/editor_fonts.cpp index 47891eef6c..bcf41cbac8 100644 --- a/tools/editor/editor_fonts.cpp +++ b/tools/editor/editor_fonts.cpp @@ -158,17 +158,10 @@ void editor_register_fonts(Ref<Theme> p_theme) { p_theme->set_font("doc_source","EditorFonts",df_doc_code); - if (editor_is_hidpi()) { - //replace default theme - Ref<Texture> di; - Ref<StyleBox> ds; - fill_default_theme(p_theme,df,df_doc,di,ds,true); + //replace default theme + Ref<Texture> di; + Ref<StyleBox> ds; + fill_default_theme(p_theme,df,df_doc,di,ds,EDSCALE); - } else { - Ref<Texture> di; - Ref<StyleBox> ds; - fill_default_theme(p_theme,df,df_doc,di,ds,false); - - } } diff --git a/tools/editor/editor_help.cpp b/tools/editor/editor_help.cpp index 8f486ba0c2..4f83dc2f66 100644 --- a/tools/editor/editor_help.cpp +++ b/tools/editor/editor_help.cpp @@ -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(); diff --git a/tools/editor/editor_import_export.cpp b/tools/editor/editor_import_export.cpp index 357d139c04..d90a175811 100644 --- a/tools/editor/editor_import_export.cpp +++ b/tools/editor/editor_import_export.cpp @@ -1441,7 +1441,7 @@ bool EditorExportPlatformPC::can_export(String *r_error) const { String err; bool valid=true; - if (use64 && (!exists_export_template(debug_binary64)) || !exists_export_template(release_binary64)) { + if (use64 && (!exists_export_template(debug_binary64) || !exists_export_template(release_binary64))) { valid=false; err="No 64 bits export templates found.\nDownload and install export templates.\n"; } diff --git a/tools/editor/editor_log.cpp b/tools/editor/editor_log.cpp index 20613467d3..02af9712a8 100644 --- a/tools/editor/editor_log.cpp +++ b/tools/editor/editor_log.cpp @@ -161,7 +161,7 @@ void EditorLog::_undo_redo_cbk(void *p_self,const String& p_name) { void EditorLog::_bind_methods() { ObjectTypeDB::bind_method(_MD("_clear_request"),&EditorLog::_clear_request ); - + ObjectTypeDB::bind_method("_override_logger_styles",&EditorLog::_override_logger_styles ); //ObjectTypeDB::bind_method(_MD("_dragged"),&EditorLog::_dragged ); ADD_SIGNAL( MethodInfo("clear_request")); } @@ -193,11 +193,10 @@ EditorLog::EditorLog() { ec->set_custom_minimum_size(Size2(0,180)); ec->set_v_size_flags(SIZE_EXPAND_FILL); - - PanelContainer *pc = memnew( PanelContainer ); - pc->add_style_override("panel",get_stylebox("normal","TextEdit")); + pc = memnew( PanelContainer ); ec->add_child(pc); pc->set_area_as_parent_rect(); + pc->connect("enter_tree", this, "_override_logger_styles"); log = memnew( RichTextLabel ); log->set_scroll_follow(true); @@ -224,6 +223,11 @@ void EditorLog::deinit() { } +void EditorLog::_override_logger_styles() { + + pc->add_style_override("panel",get_stylebox("normal","TextEdit")); + +} EditorLog::~EditorLog() { diff --git a/tools/editor/editor_log.h b/tools/editor/editor_log.h index 699be710d8..bbf35b63cb 100644 --- a/tools/editor/editor_log.h +++ b/tools/editor/editor_log.h @@ -50,6 +50,7 @@ class EditorLog : public VBoxContainer { HBoxContainer *title_hb; // PaneDrag *pd; Control *ec; + PanelContainer *pc; static void _error_handler(void *p_self, const char*p_func, const char*p_file,int p_line, const char*p_error,const char*p_errorexp,ErrorHandlerType p_type); @@ -64,6 +65,7 @@ protected: static void _bind_methods(); void _notification(int p_what); + void _override_logger_styles(); public: void add_message(const String& p_msg, bool p_error=false); diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index f4b67f6e2b..c17cf05ea7 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -176,17 +176,6 @@ void EditorNode::_unhandled_input(const InputEvent& p_event) { if (p_event.type==InputEvent::KEY && p_event.key.pressed && !p_event.key.echo && !gui_base->get_viewport()->gui_has_modal_stack()) { - if (ED_IS_SHORTCUT("editor/fullscreen_mode", p_event)) { - if (distraction_free_mode) { - distraction_free_mode = false; - _update_top_menu_visibility(); - } else { - set_docks_visible(!get_docks_visible()); - } - } - if (ED_IS_SHORTCUT("editor/distraction_free_mode", p_event)) { - set_distraction_free_mode(!get_distraction_free_mode()); - } if (ED_IS_SHORTCUT("editor/next_tab", p_event)) { int next_tab = editor_data.get_edited_scene() + 1; next_tab %= editor_data.get_edited_scene_count(); @@ -277,10 +266,12 @@ void EditorNode::_notification(int p_what) { circle_step=0; circle_step_msec=tick; - circle_step_frame=frame+1; - - update_menu->set_icon(gui_base->get_icon("Progress"+itos(circle_step+1),"EditorIcons")); + circle_step_frame=frame+1; + // update the circle itself only when its enabled + if (!update_menu->get_popup()->is_item_checked(3)){ + update_menu->set_icon(gui_base->get_icon("Progress"+itos(circle_step+1),"EditorIcons")); + } } scene_root->set_size_override(true,Size2(Globals::get_singleton()->get("display/width"),Globals::get_singleton()->get("display/height"))); @@ -785,7 +776,7 @@ bool EditorNode::_find_and_save_resource(RES res,Map<RES,bool>& processed,int32_ if (changed || subchanged) { //save print_line("Also saving modified external resource: "+res->get_path()); - Error err = ResourceSaver::save(res->get_path(),res,flags); + ResourceSaver::save(res->get_path(),res,flags); } processed[res]=false; //because it's a file @@ -1228,7 +1219,8 @@ void EditorNode::_dialog_action(String p_file) { //_save_scene(p_file); _save_scene_with_preview(p_file); - _run(false); + _call_build(); + _run(true); } } break; @@ -1374,6 +1366,7 @@ void EditorNode::_dialog_action(String p_file) { unzClose(pkg); } break; + case RESOURCE_SAVE: case RESOURCE_SAVE_AS: { @@ -2646,6 +2639,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { } break; case RUN_PLAY: { _menu_option_confirm(RUN_STOP,true); + _call_build(); _run(false); } break; @@ -2681,17 +2675,19 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { } break; case RUN_PLAY_SCENE: { _menu_option_confirm(RUN_STOP,true); + _call_build(); _run(true); } break; case RUN_PLAY_NATIVE: { - + bool autosave = EDITOR_DEF("run/auto_save_before_running",true); if (autosave) { _menu_option_confirm(FILE_SAVE_ALL_SCENES, false); } if (run_native->is_deploy_debug_remote_enabled()){ _menu_option_confirm(RUN_STOP,true); + _call_build(); emit_signal("play_pressed"); editor_run.run_native_notify(); } @@ -2803,6 +2799,10 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { update_menu->get_popup()->set_item_checked(1,true); OS::get_singleton()->set_low_processor_usage_mode(true); } break; + case SETTINGS_UPDATE_SPINNER_HIDE: { + update_menu->set_icon(gui_base->get_icon("Collapse","EditorIcons")); + update_menu->get_popup()->toggle_item_checked(3); + } break; case SETTINGS_PREFERENCES: { settings_config_dialog->popup_edit_settings(); @@ -2817,6 +2817,12 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { file_templates->popup_centered_ratio(); } break; + case SETTINGS_TOGGLE_FULLSCREN: { + + OS::get_singleton()->set_window_fullscreen( !OS::get_singleton()->is_window_fullscreen() ); + + + } break; case SETTINGS_PICK_MAIN_SCENE: { @@ -3002,6 +3008,8 @@ void EditorNode::add_editor_plugin(EditorPlugin *p_editor) { singleton->main_editor_buttons.push_back(tb); singleton->main_editor_button_vb->add_child(tb); singleton->editor_table.push_back(p_editor); + + singleton->distraction_free->raise(); } singleton->editor_data.add_editor_plugin( p_editor ); singleton->add_child(p_editor); @@ -3014,7 +3022,11 @@ void EditorNode::remove_editor_plugin(EditorPlugin *p_editor) { for(int i=0;i<singleton->main_editor_buttons.size();i++) { - if (p_editor->get_name()==singleton->main_editor_buttons[i]->get_name()) { + if (p_editor->get_name()==singleton->main_editor_buttons[i]->get_text()) { + + if (singleton->main_editor_buttons[i]->is_pressed()) { + singleton->_editor_select(EDITOR_SCRIPT); + } memdelete( singleton->main_editor_buttons[i] ); singleton->main_editor_buttons.remove(i); @@ -4044,6 +4056,7 @@ void EditorNode::_quick_opened() { void EditorNode::_quick_run() { + _call_build(); _run(false,quick_run->get_selected()); } @@ -4139,6 +4152,11 @@ void EditorNode::register_editor_types() { //ObjectTypeDB::register_type<EditorImportExport>(); ObjectTypeDB::register_type<EditorSettings>(); ObjectTypeDB::register_type<EditorSpatialGizmo>(); + ObjectTypeDB::register_type<EditorResourcePreview>(); + ObjectTypeDB::register_type<EditorResourcePreviewGenerator>(); + ObjectTypeDB::register_type<EditorFileSystem>(); + ObjectTypeDB::register_type<EditorFileSystemDirectory>(); + //ObjectTypeDB::register_type<EditorImporter>(); @@ -4602,7 +4620,10 @@ void EditorNode::_update_dock_slots_visibility() { } void EditorNode::_update_top_menu_visibility() { - if (distraction_free_mode) { + + return; // I think removing top menu is too much + /* + if (distraction_free->is_pressed()) { play_cc->hide(); menu_hb->hide(); scene_tabs->hide(); @@ -4610,7 +4631,7 @@ void EditorNode::_update_top_menu_visibility() { play_cc->show(); menu_hb->show(); scene_tabs->show(); - } + }*/ } void EditorNode::_load_docks_from_config(Ref<ConfigFile> p_layout, const String& p_section) { @@ -4986,8 +5007,14 @@ bool EditorNode::get_docks_visible() const { return docks_visible; } +void EditorNode::_toggle_distraction_free_mode() { + + set_distraction_free_mode( distraction_free->is_pressed() ); +} + void EditorNode::set_distraction_free_mode(bool p_enter) { - distraction_free_mode = p_enter; + + distraction_free->set_pressed(p_enter); if (p_enter) { if (docks_visible) { @@ -5000,7 +5027,7 @@ void EditorNode::set_distraction_free_mode(bool p_enter) { } bool EditorNode::get_distraction_free_mode() const { - return distraction_free_mode; + return distraction_free->is_pressed(); } void EditorNode::add_control_to_dock(DockSlot p_slot,Control* p_control) { @@ -5232,6 +5259,24 @@ void EditorNode::add_plugin_init_callback(EditorPluginInitializeCallback p_callb EditorPluginInitializeCallback EditorNode::plugin_init_callbacks[EditorNode::MAX_INIT_CALLBACKS]; +int EditorNode::build_callback_count=0; + +void EditorNode::add_build_callback(EditorBuildCallback p_callback) { + + ERR_FAIL_COND(build_callback_count==MAX_INIT_CALLBACKS); + + build_callbacks[build_callback_count++]=p_callback; +} + +EditorPluginInitializeCallback EditorNode::build_callbacks[EditorNode::MAX_BUILD_CALLBACKS]; + +void EditorNode::_call_build() { + + for(int i=0;i<build_callback_count;i++) { + build_callbacks[i](); + } +} + void EditorNode::_bind_methods() { @@ -5300,6 +5345,7 @@ void EditorNode::_bind_methods() { ObjectTypeDB::bind_method("_clear_search_box",&EditorNode::_clear_search_box); ObjectTypeDB::bind_method("_clear_undo_history",&EditorNode::_clear_undo_history); ObjectTypeDB::bind_method("_dropped_files",&EditorNode::_dropped_files); + ObjectTypeDB::bind_method("_toggle_distraction_free_mode",&EditorNode::_toggle_distraction_free_mode); @@ -5344,7 +5390,7 @@ EditorNode::EditorNode() { changing_scene=false; _initializing_addons=false; docks_visible = true; - distraction_free_mode=false; + FileAccess::set_backup_save(true); @@ -5353,19 +5399,27 @@ EditorNode::EditorNode() { // load settings if (!EditorSettings::get_singleton()) EditorSettings::create(); + + bool use_single_dock_column = false; { int dpi_mode = EditorSettings::get_singleton()->get("global/hidpi_mode"); if (dpi_mode==0) { - editor_set_hidpi( OS::get_singleton()->get_screen_dpi(0) > 150 ); + editor_set_scale( OS::get_singleton()->get_screen_dpi(0) > 150 && OS::get_singleton()->get_screen_size(OS::get_singleton()->get_current_screen()).x>2000 ? 2.0 : 1.0 ); + + use_single_dock_column = OS::get_singleton()->get_screen_size(OS::get_singleton()->get_current_screen()).x<1200; + + } else if (dpi_mode==1) { + editor_set_scale(0.75); } else if (dpi_mode==2) { - editor_set_hidpi(true); - } else { - editor_set_hidpi(false); + editor_set_scale(1.0); + } else if (dpi_mode==3) { + editor_set_scale(1.5); + } else if (dpi_mode==4) { + editor_set_scale(2.0); } } - ResourceLoader::set_abort_on_missing_resources(false); FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("file_dialog/show_hidden_files")); EditorFileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("file_dialog/show_hidden_files")); @@ -5414,9 +5468,9 @@ EditorNode::EditorNode() { theme_base->add_child(gui_base); gui_base->set_area_as_parent_rect(); - theme_base->set_theme( create_default_theme() ); - theme = create_editor_theme(); - gui_base->set_theme(theme); + Ref<Theme> theme = create_editor_theme(); + theme_base->set_theme( theme ); + gui_base->set_theme(create_custom_theme()); resource_preview = memnew( EditorResourcePreview ); add_child(resource_preview); @@ -5672,8 +5726,6 @@ EditorNode::EditorNode() { prev_scene->set_pos(Point2(3,24)); prev_scene->hide(); - ED_SHORTCUT("editor/fullscreen_mode",TTR("Fullscreen Mode"),KEY_MASK_SHIFT|KEY_F11); - ED_SHORTCUT("editor/distraction_free_mode",TTR("Distraction Free Mode"),KEY_MASK_CMD|KEY_MASK_SHIFT|KEY_F11); ED_SHORTCUT("editor/next_tab", TTR("Next tab"), KEY_MASK_CMD+KEY_TAB); @@ -5744,6 +5796,13 @@ EditorNode::EditorNode() { editor_region->add_child(main_editor_button_vb); menu_hb->add_child(editor_region); + distraction_free = memnew( ToolButton ); + main_editor_button_vb->add_child(distraction_free); + distraction_free->set_shortcut( ED_SHORTCUT("editor/distraction_free_mode",TTR("Distraction Free Mode"),KEY_MASK_CMD|KEY_MASK_SHIFT|KEY_F11) ); + distraction_free->connect("pressed",this,"_toggle_distraction_free_mode"); + distraction_free->set_icon(gui_base->get_icon("DistractionFree","EditorIcons")); + distraction_free->set_toggle_mode(true); + //menu_hb->add_spacer(); #if 0 node_menu = memnew( MenuButton ); @@ -5984,6 +6043,9 @@ EditorNode::EditorNode() { p->add_child(editor_layouts); editor_layouts->connect("item_pressed",this,"_layout_menu_option"); p->add_submenu_item(TTR("Editor Layout"), "Layouts"); + + p->add_shortcut(ED_SHORTCUT("editor/fullscreen_mode",TTR("Toggle Fullscreen"),KEY_MASK_SHIFT|KEY_F11),SETTINGS_TOGGLE_FULLSCREN); + p->add_separator(); p->add_item(TTR("Install Export Templates"),SETTINGS_LOAD_EXPORT_TEMPLATES); p->add_separator(); @@ -6008,6 +6070,8 @@ EditorNode::EditorNode() { p=update_menu->get_popup(); p->add_check_item(TTR("Update Always"),SETTINGS_UPDATE_ALWAYS); p->add_check_item(TTR("Update Changes"),SETTINGS_UPDATE_CHANGES); + p->add_separator(); + p->add_check_item(TTR("Disable Update Spinner"),SETTINGS_UPDATE_SPINNER_HIDE); p->set_item_checked(1,true); //sources_button->connect(); @@ -6176,12 +6240,24 @@ EditorNode::EditorNode() { node_dock = memnew( NodeDock ); //node_dock->set_undoredo(&editor_data.get_undo_redo()); - dock_slot[DOCK_SLOT_RIGHT_BL]->add_child(node_dock); + if (use_single_dock_column) { + dock_slot[DOCK_SLOT_RIGHT_UL]->add_child(node_dock); + } else { + dock_slot[DOCK_SLOT_RIGHT_BL]->add_child(node_dock); + } scenes_dock = memnew( FileSystemDock(this) ); scenes_dock->set_name(TTR("FileSystem")); scenes_dock->set_display_mode(int(EditorSettings::get_singleton()->get("filesystem_dock/display_mode"))); - dock_slot[DOCK_SLOT_LEFT_UR]->add_child(scenes_dock); + + if (use_single_dock_column) { + dock_slot[DOCK_SLOT_RIGHT_BL]->add_child(scenes_dock); + left_r_vsplit->hide(); + dock_slot[DOCK_SLOT_LEFT_UR]->hide(); + dock_slot[DOCK_SLOT_LEFT_BR]->hide(); + } else { + dock_slot[DOCK_SLOT_LEFT_UR]->add_child(scenes_dock); + } //prop_pallete->add_child(scenes_dock); scenes_dock->connect("open",this,"open_request"); scenes_dock->connect("instance",this,"_instance_request"); @@ -6190,9 +6266,9 @@ EditorNode::EditorNode() { overridden_default_layout=-1; default_layout.instance(); - default_layout->set_value(docks_section, "dock_3", TTR("Scene")); - default_layout->set_value(docks_section, "dock_4", TTR("FileSystem")); - default_layout->set_value(docks_section, "dock_5", TTR("Inspector")); + default_layout->set_value(docks_section, "dock_3", TTR("FileSystem")); + default_layout->set_value(docks_section, "dock_5", TTR("Scene")); + default_layout->set_value(docks_section, "dock_6", TTR("Inspector")+","+TTR("Node")); for(int i=0;i<DOCK_SLOT_MAX/2;i++) default_layout->set_value(docks_section, "dock_hsplit_"+itos(i+1), 0); @@ -6543,11 +6619,6 @@ EditorNode::EditorNode() { Globals::get_singleton()->set("debug/indicators_enabled",true); Globals::get_singleton()->set("render/room_cull_enabled",false); - theme->set_color("prop_category","Editor",Color::hex(0x3f3a44ff)); - theme->set_color("prop_section","Editor",Color::hex(0x35313aff)); - theme->set_color("prop_subsection","Editor",Color::hex(0x312e37ff)); - theme->set_color("fg_selected","Editor",Color::html("ffbd8e8e")); - theme->set_color("fg_error","Editor",Color::html("ffbd8e8e")); reference_resource_mem=true; save_external_resources_mem=true; @@ -6684,45 +6755,54 @@ EditorNode::~EditorNode() { void EditorPluginList::make_visible(bool p_visible) { - if (!plugins_list.empty()) { - for (int i = 0; i < plugins_list.size(); i++) { - plugins_list[i]->make_visible(p_visible); - } + + for (int i = 0; i < plugins_list.size(); i++) { + plugins_list[i]->make_visible(p_visible); } + } void EditorPluginList::edit(Object* p_object) { - if (!plugins_list.empty()) { - for (int i = 0; i < plugins_list.size(); i++) { - plugins_list[i]->edit(p_object); - } + + for (int i = 0; i < plugins_list.size(); i++) { + plugins_list[i]->edit(p_object); } + } -bool EditorPluginList::forward_input_event(const InputEvent& p_event) { +bool EditorPluginList::forward_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { + bool discard = false; - if (!plugins_list.empty()) { - for (int i = 0; i < plugins_list.size(); i++) { - if (plugins_list[i]->forward_input_event(p_event)) { - discard = true; - } + + for (int i = 0; i < plugins_list.size(); i++) { + if (plugins_list[i]->forward_canvas_input_event(p_canvas_xform,p_event)) { + discard = true; } } + return discard; } bool EditorPluginList::forward_spatial_input_event(Camera* p_camera, const InputEvent& p_event) { bool discard = false; - if (!plugins_list.empty()) { - for (int i = 0; i < plugins_list.size(); i++) { - if (plugins_list[i]->forward_spatial_input_event(p_camera, p_event)) { - discard = true; - } + + for (int i = 0; i < plugins_list.size(); i++) { + if (plugins_list[i]->forward_spatial_input_event(p_camera, p_event)) { + discard = true; } } + return discard; } +void EditorPluginList::forward_draw_over_canvas(const Matrix32& p_canvas_xform,Control* p_canvas) { + + for (int i = 0; i < plugins_list.size(); i++) { + plugins_list[i]->forward_draw_over_canvas(p_canvas_xform,p_canvas); + } + +} + bool EditorPluginList::empty() { return plugins_list.empty(); } diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h index e6119cf577..6392b96f8f 100644 --- a/tools/editor/editor_node.h +++ b/tools/editor/editor_node.h @@ -95,6 +95,7 @@ typedef void (*EditorNodeInitCallback)(); typedef void (*EditorPluginInitializeCallback)(); +typedef void (*EditorBuildCallback)(); class EditorPluginList; @@ -178,6 +179,7 @@ private: RUN_RELOAD_SCRIPTS, SETTINGS_UPDATE_ALWAYS, SETTINGS_UPDATE_CHANGES, + SETTINGS_UPDATE_SPINNER_HIDE, SETTINGS_EXPORT_PREFERENCES, SETTINGS_PREFERENCES, SETTINGS_OPTIMIZED_PRESETS, @@ -186,6 +188,7 @@ private: SETTINGS_LAYOUT_DEFAULT, SETTINGS_LOAD_EXPORT_TEMPLATES, SETTINGS_PICK_MAIN_SCENE, + SETTINGS_TOGGLE_FULLSCREN, SETTINGS_HELP, SETTINGS_ABOUT, SOURCES_REIMPORT, @@ -356,7 +359,7 @@ private: int dock_popup_selected; Timer *dock_drag_timer; bool docks_visible; - bool distraction_free_mode; + ToolButton *distraction_free; String _tmp_import_path; @@ -576,13 +579,21 @@ private: static void _file_access_close_error_notify(const String& p_str); + void _toggle_distraction_free_mode(); enum { - MAX_INIT_CALLBACKS=128 + MAX_INIT_CALLBACKS=128, + MAX_BUILD_CALLBACKS=128 }; + + static int plugin_init_callback_count; static EditorPluginInitializeCallback plugin_init_callbacks[MAX_INIT_CALLBACKS]; + + void _call_build(); + static int build_callback_count; + static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS]; protected: void _notification(int p_what); static void _bind_methods(); @@ -690,6 +701,7 @@ public: void notify_child_process_exited(); + OS::ProcessID get_child_process_id() const { return editor_run.get_pid(); } void stop_child_process(); Ref<Theme> get_editor_theme() const { return theme; } @@ -750,6 +762,7 @@ public: void get_singleton(const char* arg1, bool arg2); static void add_init_callback(EditorNodeInitCallback p_callback) { _init_callbacks.push_back(p_callback); } + static void add_build_callback(EditorBuildCallback p_callback); @@ -780,8 +793,9 @@ public: void make_visible(bool p_visible); void edit(Object *p_object); - bool forward_input_event(const InputEvent& p_event); + bool forward_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event); bool forward_spatial_input_event(Camera* p_camera, const InputEvent& p_event); + void forward_draw_over_canvas(const Matrix32& p_canvas_xform,Control* p_canvas); void clear(); bool empty(); diff --git a/tools/editor/editor_plugin.cpp b/tools/editor/editor_plugin.cpp index 5e671549ef..4b82d5e59c 100644 --- a/tools/editor/editor_plugin.cpp +++ b/tools/editor/editor_plugin.cpp @@ -32,6 +32,7 @@ #include "plugins/spatial_editor_plugin.h" #include "tools/editor/editor_node.h" #include "tools/editor/editor_settings.h" +#include "editor_resource_preview.h" void EditorPlugin::add_custom_type(const String& p_type, const String& p_base,const Ref<Script>& p_script, const Ref<Texture>& p_icon) { @@ -70,6 +71,11 @@ void EditorPlugin::remove_control_from_bottom_panel(Control *p_control) { } +Control * EditorPlugin::get_editor_viewport() { + + return EditorNode::get_singleton()->get_viewport(); +} + void EditorPlugin::add_control_to_container(CustomControlContainer p_location,Control *p_control) { switch(p_location) { @@ -130,13 +136,25 @@ Ref<SpatialEditorGizmo> EditorPlugin::create_spatial_gizmo(Spatial* p_spatial) { return Ref<SpatialEditorGizmo>(); } -bool EditorPlugin::forward_input_event(const InputEvent& p_event) { +bool EditorPlugin::forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { - if (get_script_instance() && get_script_instance()->has_method("forward_input_event")) { - return get_script_instance()->call("forward_input_event",p_event); + if (get_script_instance() && get_script_instance()->has_method("forward_canvas_input_event")) { + return get_script_instance()->call("forward_canvas_input_event",p_canvas_xform,p_event); } return false; } + +void EditorPlugin::forward_draw_over_canvas(const Matrix32& p_canvas_xform,Control *p_canvas) { + + if (get_script_instance() && get_script_instance()->has_method("forward_draw_over_canvas")) { + get_script_instance()->call("forward_draw_over_canvas",p_canvas_xform,p_canvas); + } +} + +void EditorPlugin::update_canvas() { + CanvasItemEditor::get_singleton()->get_viewport_control()->update(); +} + bool EditorPlugin::forward_spatial_input_event(Camera* p_camera,const InputEvent& p_event) { if (get_script_instance() && get_script_instance()->has_method("forward_spatial_input_event")) { @@ -272,6 +290,10 @@ EditorSettings *EditorPlugin::get_editor_settings() { return EditorSettings::get_singleton(); } +EditorResourcePreview *EditorPlugin::get_resource_previewer() { + return EditorResourcePreview::get_singleton(); +} + void EditorPlugin::add_import_plugin(const Ref<EditorImportPlugin>& p_editor_import) { EditorNode::get_singleton()->add_editor_import_plugin(p_editor_import); @@ -298,6 +320,24 @@ Control *EditorPlugin::get_base_control() { return EditorNode::get_singleton()->get_gui_base(); } +void EditorPlugin::make_bottom_panel_item_visible(Control * p_item) { + + EditorNode::get_singleton()->make_bottom_panel_item_visible(p_item); +} + +void EditorPlugin::hide_bottom_panel() { + + EditorNode::get_singleton()->hide_bottom_panel(); +} + +void EditorPlugin::inspect_object(Object *p_obj,const String& p_for_property) { + + EditorNode::get_singleton()->push_item(p_obj,p_for_property); +} + +EditorFileSystem *EditorPlugin::get_resource_file_system() { + return EditorFileSystem::get_singleton(); +} void EditorPlugin::_bind_methods() { @@ -308,6 +348,7 @@ void EditorPlugin::_bind_methods() { ObjectTypeDB::bind_method(_MD("remove_control_from_bottom_panel","control:Control"),&EditorPlugin::remove_control_from_bottom_panel); ObjectTypeDB::bind_method(_MD("add_custom_type","type","base","script:Script","icon:Texture"),&EditorPlugin::add_custom_type); ObjectTypeDB::bind_method(_MD("remove_custom_type","type"),&EditorPlugin::remove_custom_type); + ObjectTypeDB::bind_method(_MD("get_editor_viewport:Control"), &EditorPlugin::get_editor_viewport); ObjectTypeDB::bind_method(_MD("add_import_plugin","plugin:EditorImportPlugin"),&EditorPlugin::add_import_plugin); ObjectTypeDB::bind_method(_MD("remove_import_plugin","plugin:EditorImportPlugin"),&EditorPlugin::remove_import_plugin); @@ -315,6 +356,14 @@ void EditorPlugin::_bind_methods() { ObjectTypeDB::bind_method(_MD("add_export_plugin","plugin:EditorExportPlugin"),&EditorPlugin::add_export_plugin); ObjectTypeDB::bind_method(_MD("remove_export_plugin","plugin:EditorExportPlugin"),&EditorPlugin::remove_export_plugin); + ObjectTypeDB::bind_method(_MD("get_resource_previewer:EditorResourcePreview"),&EditorPlugin::get_resource_previewer); + ObjectTypeDB::bind_method(_MD("get_resource_filesystem:EditorFileSystem"),&EditorPlugin::get_resource_file_system); + + ObjectTypeDB::bind_method(_MD("inspect_object","object","for_property"),&EditorPlugin::inspect_object,DEFVAL(String())); + ObjectTypeDB::bind_method(_MD("update_canvas"),&EditorPlugin::update_canvas); + + ObjectTypeDB::bind_method(_MD("make_bottom_panel_item_visible","item:Control"), &EditorPlugin::make_bottom_panel_item_visible); + ObjectTypeDB::bind_method(_MD("hide_bottom_panel"), &EditorPlugin::hide_bottom_panel); ObjectTypeDB::bind_method(_MD("get_base_control:Control"),&EditorPlugin::get_base_control); ObjectTypeDB::bind_method(_MD("get_undo_redo:UndoRedo"),&EditorPlugin::_get_undo_redo); @@ -322,7 +371,8 @@ void EditorPlugin::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_editor_settings:EditorSettings"),&EditorPlugin::get_editor_settings); ObjectTypeDB::bind_method(_MD("queue_save_layout"),&EditorPlugin::queue_save_layout); - ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::BOOL,"forward_input_event",PropertyInfo(Variant::INPUT_EVENT,"event"))); + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::BOOL,"forward_canvas_input_event",PropertyInfo(Variant::MATRIX32,"canvas_xform"),PropertyInfo(Variant::INPUT_EVENT,"event"))); + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo("forward_draw_over_canvas",PropertyInfo(Variant::MATRIX32,"canvas_xform"),PropertyInfo(Variant::OBJECT,"canvas:Control"))); ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::BOOL,"forward_spatial_input_event",PropertyInfo(Variant::OBJECT,"camera",PROPERTY_HINT_RESOURCE_TYPE,"Camera"),PropertyInfo(Variant::INPUT_EVENT,"event"))); MethodInfo gizmo = MethodInfo(Variant::OBJECT,"create_spatial_gizmo",PropertyInfo(Variant::OBJECT,"for_spatial:Spatial")); gizmo.return_val.hint=PROPERTY_HINT_RESOURCE_TYPE; diff --git a/tools/editor/editor_plugin.h b/tools/editor/editor_plugin.h index 9a9c32357d..2700c49a6c 100644 --- a/tools/editor/editor_plugin.h +++ b/tools/editor/editor_plugin.h @@ -34,6 +34,7 @@ #include "scene/resources/texture.h" #include "undo_redo.h" #include "io/config_file.h" + /** @author Juan Linietsky <reduzio@gmail.com> */ @@ -47,6 +48,8 @@ class EditorSettings; class SpatialEditorGizmo; class EditorImportPlugin; class EditorExportPlugin; +class EditorResourcePreview; +class EditorFileSystem; class EditorPlugin : public Node { @@ -97,9 +100,11 @@ public: void add_control_to_dock(DockSlot p_slot,Control *p_control); void remove_control_from_docks(Control *p_control); void remove_control_from_bottom_panel(Control *p_control); + Control* get_editor_viewport(); virtual Ref<SpatialEditorGizmo> create_spatial_gizmo(Spatial* p_spatial); - virtual bool forward_input_event(const InputEvent& p_event); + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform, const InputEvent& p_event); + virtual void forward_draw_over_canvas(const Matrix32& p_canvas_xform,Control *p_canvas); virtual bool forward_spatial_input_event(Camera* p_camera,const InputEvent& p_event); virtual String get_name() const; virtual bool has_main_screen() const; @@ -116,12 +121,19 @@ public: virtual bool get_remove_list(List<Node*> *p_list); virtual void set_window_layout(Ref<ConfigFile> p_layout); virtual void get_window_layout(Ref<ConfigFile> p_layout); - virtual void edited_scene_changed(){}; // if changes are pending in editor, apply them + virtual void edited_scene_changed(){} // if changes are pending in editor, apply them + + void update_canvas(); + + virtual void inspect_object(Object *p_obj,const String& p_for_property=String()); void queue_save_layout() const; Control *get_base_control(); + void make_bottom_panel_item_visible(Control *p_item); + void hide_bottom_panel(); + void add_import_plugin(const Ref<EditorImportPlugin>& p_editor_import); void remove_import_plugin(const Ref<EditorImportPlugin>& p_editor_import); @@ -131,6 +143,8 @@ public: EditorSelection* get_selection(); //EditorImportExport *get_import_export(); EditorSettings *get_editor_settings(); + EditorResourcePreview *get_resource_previewer(); + EditorFileSystem *get_resource_file_system(); virtual void restore_global_state(); virtual void save_global_state(); diff --git a/tools/editor/editor_resource_preview.cpp b/tools/editor/editor_resource_preview.cpp index a02fe2a531..6afc3e2a34 100644 --- a/tools/editor/editor_resource_preview.cpp +++ b/tools/editor/editor_resource_preview.cpp @@ -35,14 +35,46 @@ #include "editor_scale.h" #include "message_queue.h" +bool EditorResourcePreviewGenerator::handles(const String& p_type) const { + + if (get_script_instance() && get_script_instance()->has_method("handles")) { + return get_script_instance()->call("handles",p_type); + } + ERR_EXPLAIN("EditorResourcePreviewGenerator::handles needs to be overriden"); + ERR_FAIL_V(false); +} +Ref<Texture> EditorResourcePreviewGenerator::generate(const RES& p_from){ + + if (get_script_instance() && get_script_instance()->has_method("generate")) { + return get_script_instance()->call("generate",p_from); + } + ERR_EXPLAIN("EditorResourcePreviewGenerator::generate needs to be overriden"); + ERR_FAIL_V(Ref<Texture>()); + +} + + Ref<Texture> EditorResourcePreviewGenerator::generate_from_path(const String& p_path) { + if (get_script_instance() && get_script_instance()->has_method("generate_from_path")) { + return get_script_instance()->call("generate_from_path",p_path); + } + RES res = ResourceLoader::load(p_path); if (!res.is_valid()) return res; return generate(res); } + +void EditorResourcePreviewGenerator::_bind_methods() { + + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::BOOL,"handles",PropertyInfo(Variant::STRING,"type"))); + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::OBJECT,"generate:Texture",PropertyInfo(Variant::OBJECT,"from",PROPERTY_HINT_RESOURCE_TYPE,"Resource"))); + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::OBJECT,"generate_from_path:Texture",PropertyInfo(Variant::STRING,"path",PROPERTY_HINT_FILE))); + +} + EditorResourcePreviewGenerator::EditorResourcePreviewGenerator() { @@ -330,6 +362,11 @@ void EditorResourcePreview::add_preview_generator(const Ref<EditorResourcePrevie preview_generators.push_back(p_generator); } +void EditorResourcePreview::remove_preview_generator(const Ref<EditorResourcePreviewGenerator>& p_generator) { + + preview_generators.erase(p_generator); +} + EditorResourcePreview* EditorResourcePreview::get_singleton() { return singleton; @@ -338,6 +375,11 @@ EditorResourcePreview* EditorResourcePreview::get_singleton() { void EditorResourcePreview::_bind_methods() { ObjectTypeDB::bind_method("_preview_ready",&EditorResourcePreview::_preview_ready); + + ObjectTypeDB::bind_method(_MD("queue_resource_preview","path","receiver","receiver_func","userdata:Variant"),&EditorResourcePreview::queue_resource_preview); + ObjectTypeDB::bind_method(_MD("queue_edited_resource_preview","resource:Resource","receiver","receiver_func","userdata:Variant"),&EditorResourcePreview::queue_edited_resource_preview); + ObjectTypeDB::bind_method(_MD("add_preview_generator","generator:EditorResourcePreviewGenerator"),&EditorResourcePreview::add_preview_generator); + ObjectTypeDB::bind_method(_MD("remove_preview_generator","generator:EditorResourcePreviewGenerator"),&EditorResourcePreview::remove_preview_generator); ObjectTypeDB::bind_method(_MD("check_for_invalidation","path"),&EditorResourcePreview::check_for_invalidation); diff --git a/tools/editor/editor_resource_preview.h b/tools/editor/editor_resource_preview.h index 51a00965eb..2756360130 100644 --- a/tools/editor/editor_resource_preview.h +++ b/tools/editor/editor_resource_preview.h @@ -57,10 +57,13 @@ class EditorResourcePreviewGenerator : public Reference { OBJ_TYPE(EditorResourcePreviewGenerator,Reference ); +protected: + + static void _bind_methods(); public: - virtual bool handles(const String& p_type) const=0; - virtual Ref<Texture> generate(const RES& p_from)=0; + virtual bool handles(const String& p_type) const; + virtual Ref<Texture> generate(const RES& p_from); virtual Ref<Texture> generate_from_path(const String& p_path); EditorResourcePreviewGenerator(); @@ -121,6 +124,7 @@ public: void queue_edited_resource_preview(const Ref<Resource>& p_path, Object* p_receiver, const StringName& p_receiver_func, const Variant& p_userdata); void add_preview_generator(const Ref<EditorResourcePreviewGenerator>& p_generator); + void remove_preview_generator(const Ref<EditorResourcePreviewGenerator>& p_generator); void check_for_invalidation(const String& p_path); EditorResourcePreview(); diff --git a/tools/editor/editor_run.cpp b/tools/editor/editor_run.cpp index fb0f24c084..5fbb4ae2a0 100644 --- a/tools/editor/editor_run.cpp +++ b/tools/editor/editor_run.cpp @@ -52,6 +52,9 @@ Error EditorRun::run(const String& p_scene,const String p_custom_args,const List args.push_back("localhost:"+String::num(GLOBAL_DEF("debug/debug_port", 6007))); } + args.push_back("-epid"); + args.push_back(String::num(OS::get_singleton()->get_process_ID())); + if (p_custom_args!="") { Vector<String> cargs=p_custom_args.split(" ",false); @@ -132,6 +135,7 @@ Error EditorRun::run(const String& p_scene,const String p_custom_args,const List } + if (p_breakpoints.size()) { args.push_back("-bp"); diff --git a/tools/editor/editor_run.h b/tools/editor/editor_run.h index 0b96a2c91c..5aa2adf801 100644 --- a/tools/editor/editor_run.h +++ b/tools/editor/editor_run.h @@ -53,6 +53,8 @@ public: void run_native_notify() { status=STATUS_PLAY; } void stop(); + OS::ProcessID get_pid() const { return pid; } + void set_debug_collisions(bool p_debug); bool get_debug_collisions() const; diff --git a/tools/editor/editor_scale.cpp b/tools/editor/editor_scale.cpp index c332acc0ca..8575e1c30a 100644 --- a/tools/editor/editor_scale.cpp +++ b/tools/editor/editor_scale.cpp @@ -1,14 +1,13 @@ #include "editor_scale.h" #include "os/os.h" -static bool editor_hidpi=false; +static float scale = 1.0; -void editor_set_hidpi(bool p_hidpi) { +void editor_set_scale(float p_scale) { - editor_hidpi=p_hidpi; + scale=p_scale; } +float editor_get_scale() { -bool editor_is_hidpi() { - - return editor_hidpi; + return scale; } diff --git a/tools/editor/editor_scale.h b/tools/editor/editor_scale.h index a60cf00f0a..90e575f771 100644 --- a/tools/editor/editor_scale.h +++ b/tools/editor/editor_scale.h @@ -1,8 +1,8 @@ #ifndef EDITOR_SCALE_H #define EDITOR_SCALE_H -void editor_set_hidpi(bool p_hidpi); -bool editor_is_hidpi(); +void editor_set_scale(float p_scale); +float editor_get_scale(); -#define EDSCALE (editor_is_hidpi() ? 2 : 1) +#define EDSCALE (editor_get_scale()) #endif // EDITOR_SCALE_H diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index 99c80fdc36..a5ba4847f5 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -511,7 +511,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { } set("global/hidpi_mode",0); - hints["global/hidpi_mode"]=PropertyInfo(Variant::INT,"global/hidpi_mode",PROPERTY_HINT_ENUM,"Auto,LoDPI,HiDPI",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + hints["global/hidpi_mode"]=PropertyInfo(Variant::INT,"global/hidpi_mode",PROPERTY_HINT_ENUM,"Auto,VeryLoDPI,LoDPI,MidDPI,HiDPI",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); set("global/show_script_in_scene_tabs",false); set("global/font_size",14); hints["global/font_size"]=PropertyInfo(Variant::INT,"global/font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); @@ -565,8 +565,6 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("text_editor/restore_scripts_on_load",true); - set("scenetree_editor/duplicate_node_name_num_separator",0); - hints["scenetree_editor/duplicate_node_name_num_separator"]=PropertyInfo(Variant::INT,"scenetree_editor/duplicate_node_name_num_separator",PROPERTY_HINT_ENUM, "None,Space,Underscore,Dash"); //set("scenetree_editor/display_old_action_buttons",false); set("scenetree_editor/start_create_dialog_fully_expanded",false); set("scenetree_editor/draw_relationship_lines",false); @@ -574,6 +572,9 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { 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); set("3d_editor/default_z_far",500.0); diff --git a/tools/editor/editor_themes.cpp b/tools/editor/editor_themes.cpp index 44e21aee85..08f14ec167 100644 --- a/tools/editor/editor_themes.cpp +++ b/tools/editor/editor_themes.cpp @@ -32,8 +32,9 @@ #include "editor_fonts.h" #include "editor_settings.h" #include "core/io/resource_loader.h" +#include "editor_scale.h" -Ref<Theme> create_default_theme() +Ref<Theme> create_editor_theme() { Ref<Theme> theme = Ref<Theme>( memnew( Theme ) ); @@ -43,32 +44,36 @@ Ref<Theme> create_default_theme() Ref<StyleBoxTexture> focus_sbt=memnew( StyleBoxTexture ); focus_sbt->set_texture(theme->get_icon("EditorFocus","EditorIcons")); for(int i=0;i<4;i++) { - focus_sbt->set_margin_size(Margin(i),16); - focus_sbt->set_default_margin(Margin(i),16); + focus_sbt->set_margin_size(Margin(i),16*EDSCALE); + focus_sbt->set_default_margin(Margin(i),16*EDSCALE); } focus_sbt->set_draw_center(false); theme->set_stylebox("EditorFocus","EditorStyles",focus_sbt); + theme->set_color("prop_category","Editor",Color::hex(0x3f3a44ff)); + theme->set_color("prop_section","Editor",Color::hex(0x35313aff)); + theme->set_color("prop_subsection","Editor",Color::hex(0x312e37ff)); + theme->set_color("fg_selected","Editor",Color::html("ffbd8e8e")); + theme->set_color("fg_error","Editor",Color::html("ffbd8e8e")); return theme; } -Ref<Theme> create_editor_theme() +Ref<Theme> create_custom_theme() { - Ref<Theme> theme = NULL; + Ref<Theme> theme; String custom_theme = EditorSettings::get_singleton()->get("global/custom_theme"); if (custom_theme!="") { theme = ResourceLoader::load(custom_theme); } - if (theme.is_null() || !theme.is_valid()) { - theme = create_default_theme(); - } - String global_font = EditorSettings::get_singleton()->get("global/custom_font"); if (global_font!="") { Ref<Font> fnt = ResourceLoader::load(global_font); if (fnt.is_valid()) { + if (!theme.is_valid()) { + theme.instance(); + } theme->set_default_theme_font(fnt); } } diff --git a/tools/editor/editor_themes.h b/tools/editor/editor_themes.h index dbff8b3079..db49801600 100644 --- a/tools/editor/editor_themes.h +++ b/tools/editor/editor_themes.h @@ -31,8 +31,8 @@ #include "scene/resources/theme.h" -Ref<Theme> create_default_theme(); - Ref<Theme> create_editor_theme(); +Ref<Theme> create_custom_theme(); + #endif diff --git a/tools/editor/icons/2x/icon_distraction_free.png b/tools/editor/icons/2x/icon_distraction_free.png Binary files differnew file mode 100644 index 0000000000..034239a4e7 --- /dev/null +++ b/tools/editor/icons/2x/icon_distraction_free.png diff --git a/tools/editor/icons/2x/icon_mini_aabb.png b/tools/editor/icons/2x/icon_mini_aabb.png Binary files differindex f0fd5620e9..25603eec49 100644 --- a/tools/editor/icons/2x/icon_mini_aabb.png +++ b/tools/editor/icons/2x/icon_mini_aabb.png diff --git a/tools/editor/icons/2x/icon_mini_transform.png b/tools/editor/icons/2x/icon_mini_transform.png Binary files differindex cb106ba5fa..5144871c5c 100644 --- a/tools/editor/icons/2x/icon_mini_transform.png +++ b/tools/editor/icons/2x/icon_mini_transform.png diff --git a/tools/editor/icons/2x/icon_remote_transform.png b/tools/editor/icons/2x/icon_remote_transform.png Binary files differnew file mode 100644 index 0000000000..dad528615a --- /dev/null +++ b/tools/editor/icons/2x/icon_remote_transform.png diff --git a/tools/editor/icons/SCsub b/tools/editor/icons/SCsub index bc104294cb..44e28f49e6 100644 --- a/tools/editor/icons/SCsub +++ b/tools/editor/icons/SCsub @@ -61,8 +61,10 @@ def make_editor_icons_action(target, source, env): s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png,const uint8_t* p_hidpi_png) {\n") s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n") - s.write("\tImage img((editor_is_hidpi()&&p_hidpi_png)?p_hidpi_png:p_png);\n") - s.write("\tif (editor_is_hidpi() && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); }\n") + s.write("\tbool use_hidpi_image=(editor_get_scale()>1.0&&p_hidpi_png);\n") + s.write("\tImage img(use_hidpi_image?p_hidpi_png:p_png);\n") + s.write("\tif (editor_get_scale()>1.0 && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); use_hidpi_image=true;}\n") + s.write("\timg.resize(img.get_width()*EDSCALE/(use_hidpi_image?2:1),img.get_height()*EDSCALE/(use_hidpi_image?2:1));\n") s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n") s.write("\treturn texture;\n") s.write("}\n\n") diff --git a/tools/editor/icons/icon_color_frame.png b/tools/editor/icons/icon_color_frame.png Binary files differnew file mode 100644 index 0000000000..a82eefc10a --- /dev/null +++ b/tools/editor/icons/icon_color_frame.png diff --git a/tools/editor/icons/icon_distraction_free.png b/tools/editor/icons/icon_distraction_free.png Binary files differnew file mode 100644 index 0000000000..c6f8a08874 --- /dev/null +++ b/tools/editor/icons/icon_distraction_free.png diff --git a/tools/editor/icons/icon_mini_aabb.png b/tools/editor/icons/icon_mini_aabb.png Binary files differindex 3a6be5605a..eebc4633e4 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_transform.png b/tools/editor/icons/icon_mini_transform.png Binary files differindex 0107107a96..068ea0506c 100644 --- a/tools/editor/icons/icon_mini_transform.png +++ b/tools/editor/icons/icon_mini_transform.png diff --git a/tools/editor/icons/icon_remote_transform.png b/tools/editor/icons/icon_remote_transform.png Binary files differnew file mode 100644 index 0000000000..2a8b5f4d0e --- /dev/null +++ b/tools/editor/icons/icon_remote_transform.png diff --git a/tools/editor/icons/source/icon_distraction_free.svg b/tools/editor/icons/source/icon_distraction_free.svg new file mode 100644 index 0000000000..4ae48b2fb6 --- /dev/null +++ b/tools/editor/icons/source/icon_distraction_free.svg @@ -0,0 +1,104 @@ +<?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="16" + viewBox="0 0 16 16" + 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_distraction_free.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="10.344519" + inkscape:cy="8.9631686" + 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:snap-midpoints="true" + inkscape:snap-smooth-nodes="true" + inkscape:object-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,-1036.3622)"> + <path + style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 3.7578125 2.34375 L 2.34375 3.7578125 L 5.2929688 6.7070312 L 6.7070312 5.2929688 L 3.7578125 2.34375 z M 12.242188 2.34375 L 9.2929688 5.2929688 L 10.707031 6.7070312 L 13.65625 3.7578125 L 12.242188 2.34375 z M 5.2929688 9.2929688 L 2.34375 12.242188 L 3.7578125 13.65625 L 6.7070312 10.707031 L 5.2929688 9.2929688 z M 10.707031 9.2929688 L 9.2929688 10.707031 L 12.242188 13.65625 L 13.65625 12.242188 L 10.707031 9.2929688 z " + transform="translate(0,1036.3622)" + id="rect4137" /> + <path + style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 1,1051.3622 0,-5 5,5 z" + id="path4155" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4158" + d="m 15,1051.3622 0,-5 -5,5 z" + style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 15,1037.3622 0,5 -5,-5 z" + id="path4160" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4162" + d="m 1,1037.3622 0,5 5,-5 z" + style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_mini_aabb.svg b/tools/editor/icons/source/icon_mini_aabb.svg index f6cc3feda1..ebfd505bea 100644 --- a/tools/editor/icons/source/icon_mini_aabb.svg +++ b/tools/editor/icons/source/icon_mini_aabb.svg @@ -29,8 +29,8 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="45.254835" - inkscape:cx="3.148993" - inkscape:cy="6.4579802" + inkscape:cx="5.0272453" + inkscape:cy="5.132155" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -76,7 +76,7 @@ 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" + style="fill:#f39bad;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" /> @@ -99,7 +99,7 @@ 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" + style="fill:#f39bad;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" /> diff --git a/tools/editor/icons/source/icon_mini_transform.svg b/tools/editor/icons/source/icon_mini_transform.svg index a844171dd4..6da4eb806d 100644 --- a/tools/editor/icons/source/icon_mini_transform.svg +++ b/tools/editor/icons/source/icon_mini_transform.svg @@ -29,8 +29,8 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="32" - inkscape:cx="5.8969613" - inkscape:cy="6.372864" + inkscape:cx="8.2643591" + inkscape:cy="7.6152896" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -71,26 +71,20 @@ 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" /> + style="fill:#f6a86e;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 4,1042.3622 3.0917969,1044.5438 2,1042.3622 l -2,0 2,4 -2,4 2,0 0.9082031,-2.1816 L 4,1050.3622 l 2,0 -2,-4 2,-4 z" + id="rect4214" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccc" /> <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" + style="fill:#f8bf95;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,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 1,0 0,-2 -1,0 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 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" /> + style="fill:#f6a86e;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 10 4 L 10 6 L 10 8 L 10 10 L 12 10 L 12 8 L 13 9 L 14 8 L 14 10 L 16 10 L 16 8 L 16 6 L 16 4 L 14 4 L 13 6 L 12 4 L 10 4 z " + transform="translate(0,1040.3622)" + id="rect4231" /> </g> </svg> diff --git a/tools/editor/icons/source/icon_remote_transform.svg b/tools/editor/icons/source/icon_remote_transform.svg new file mode 100644 index 0000000000..fbbfacf629 --- /dev/null +++ b/tools/editor/icons/source/icon_remote_transform.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="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_remote_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="16" + inkscape:cx="7.0691739" + inkscape:cy="9.3738931" + 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="1680" + inkscape:window-height="1050" + inkscape:window-x="1366" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" + empspacing="4" /> + </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></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4155" + sodipodi:type="arc" + sodipodi:cx="744.13245" + sodipodi:cy="734.23291" + sodipodi:rx="4" + sodipodi:ry="4" + sodipodi:start="0" + sodipodi:end="3.1415927" + d="m 748.13245,734.23291 a 4,4 0 0 1 -2,3.4641 4,4 0 0 1 -4,0 4,4 0 0 1 -2,-3.4641 l 4,0 z" + inkscape:transform-center-y="0.58575321" + transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" + inkscape:transform-center-x="0.58575732" /> + <circle + style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4159" + cx="7" + cy="1045.3622" + r="1" /> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 13.242641,1039.1196 a 6.0000172,6.0000172 0 0 0 -8.4852817,0 l 0.7071068,0.7071 a 5.0000172,5.0000172 0 0 1 7.0710679,0 5.0000172,5.0000172 0 0 1 0,7.071 l 0.707107,0.7071 a 6.0000172,6.0000172 0 0 0 0,-8.4852 z" + id="circle4163" + inkscape:connector-curvature="0" + inkscape:transform-center-y="-0.87867618" + inkscape:transform-center-x="-0.8786559" /> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 11.828427,1040.5338 a 4.0000172,4.0000172 0 0 0 -5.6568541,0 l 0.7071068,0.7071 a 3.0000174,3.0000174 0 0 1 4.2426403,0 3.0000174,3.0000174 0 0 1 0,4.2426 l 0.707107,0.7071 a 4.0000172,4.0000172 0 0 0 0,-5.6568 z" + id="circle4168" + inkscape:connector-curvature="0" + inkscape:transform-center-y="-0.58578284" + inkscape:transform-center-x="-0.58576926" /> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 10.414214,1041.948 a 2,2 0 0 0 -2.8284276,0 l 0.7071068,0.7071 a 1.0000174,1.0000174 0 0 1 1.4142136,0 1.0000174,1.0000174 0 0 1 0,1.4142 l 0.7071072,0.7071 a 2,2 0 0 0 0,-2.8284 z" + id="circle4172" + inkscape:connector-curvature="0" + inkscape:transform-center-y="-0.29289334" + inkscape:transform-center-x="-0.29288664" /> + <path + style="fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 1,1051.3622 4,-5 1,0 0,5 z" + id="path4181" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + </g> +</svg> diff --git a/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp b/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp index dca7d011ff..757d2ed5d4 100644 --- a/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_bitmask_import_plugin.cpp @@ -147,7 +147,7 @@ public: dst = dst.plus_file(bitmasks[i].get_file().basename() + ".pbm"); - Error err = plugin->import(dst, imd); + plugin->import(dst, imd); } hide(); diff --git a/tools/editor/io_plugins/editor_sample_import_plugin.cpp b/tools/editor/io_plugins/editor_sample_import_plugin.cpp index ac0795f522..7dc74e58dd 100644 --- a/tools/editor/io_plugins/editor_sample_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -298,7 +298,7 @@ public: dst = dst.plus_file(samples[i].get_file().basename()+".smp"); - Error err = plugin->import(dst,imd); + plugin->import(dst,imd); } hide(); diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.cpp b/tools/editor/io_plugins/editor_scene_import_plugin.cpp index fa62283e37..190b56faba 100644 --- a/tools/editor/io_plugins/editor_scene_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_scene_import_plugin.cpp @@ -1447,6 +1447,7 @@ void EditorSceneImportPlugin::_find_resources(const Variant& p_var, Map<Ref<Imag } } break; + default: {} } @@ -2325,7 +2326,7 @@ void EditorSceneImportPlugin::_filter_tracks(Node *scene, const String& p_text) if (!scene->has_node(String("AnimationPlayer"))) return; - Node* n = scene->get_node(String("AnimationPlayer")); + Node* n = scene->get_node(String("AnimationPlayer")); ERR_FAIL_COND(!n); AnimationPlayer *anim = n->cast_to<AnimationPlayer>(); ERR_FAIL_COND(!anim); @@ -2443,7 +2444,7 @@ void EditorSceneImportPlugin::_optimize_animations(Node *scene, float p_max_lin_ if (!scene->has_node(String("AnimationPlayer"))) return; - Node* n = scene->get_node(String("AnimationPlayer")); + Node* n = scene->get_node(String("AnimationPlayer")); ERR_FAIL_COND(!n); AnimationPlayer *anim = n->cast_to<AnimationPlayer>(); ERR_FAIL_COND(!anim); @@ -2842,7 +2843,7 @@ Error EditorSceneImportPlugin::import2(Node *scene, const String& p_dest_path, c } } - Error err = EditorTextureImportPlugin::get_singleton()->import(target_path,imd); + EditorTextureImportPlugin::get_singleton()->import(target_path,imd); } } diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.cpp b/tools/editor/io_plugins/editor_texture_import_plugin.cpp index 60642999f2..2935ea8fe2 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -38,6 +38,7 @@ #include "scene/gui/check_button.h" #include "scene/gui/button_group.h" #include "scene/gui/margin_container.h" +#include "scene/io/resource_format_image.h" static const char *flag_names[]={ ("Streaming Format"), @@ -1589,16 +1590,9 @@ Vector<uint8_t> EditorTextureImportPlugin::custom_export(const String& p_path, c } break; //use default } + String validated_path=EditorImportPlugin::validate_source_path(p_path); - int flags=0; - - if (Globals::get_singleton()->get("image_loader/filter")) - flags|=IMAGE_FLAG_FILTER; - if (!Globals::get_singleton()->get("image_loader/gen_mipmaps")) - flags|=IMAGE_FLAG_NO_MIPMAPS; - if (!Globals::get_singleton()->get("image_loader/repeat")) - flags|=IMAGE_FLAG_REPEAT; - + int flags=texture_flags_to_export_flags(ResourceFormatLoaderImage::load_image_flags(validated_path)); flags|=IMAGE_FLAG_FIX_BORDER_ALPHA; print_line("group format"+itos(group_format)); @@ -1607,7 +1601,7 @@ Vector<uint8_t> EditorTextureImportPlugin::custom_export(const String& p_path, c rimd->set_option("quality",group_lossy_quality); rimd->set_option("atlas",false); rimd->set_option("shrink",group_shrink); - rimd->add_source(EditorImportPlugin::validate_source_path(p_path),FileAccess::get_md5(p_path)); + rimd->add_source(validated_path,FileAccess::get_md5(p_path)); } else if (EditorImportExport::get_singleton()->get_image_formats().has(p_path.extension().to_lower()) && EditorImportExport::get_singleton()->get_export_image_action()!=EditorImportExport::IMAGE_ACTION_NONE) { //handled by general image export settings @@ -1619,22 +1613,16 @@ Vector<uint8_t> EditorTextureImportPlugin::custom_export(const String& p_path, c case EditorImportExport::IMAGE_ACTION_COMPRESS_RAM: rimd->set_option("format",IMAGE_FORMAT_COMPRESS_RAM); break; } - int flags=0; - - if (Globals::get_singleton()->get("image_loader/filter")) - flags|=IMAGE_FLAG_FILTER; - if (!Globals::get_singleton()->get("image_loader/gen_mipmaps")) - flags|=IMAGE_FLAG_NO_MIPMAPS; - if (!Globals::get_singleton()->get("image_loader/repeat")) - flags|=IMAGE_FLAG_REPEAT; + String validated_path=EditorImportPlugin::validate_source_path(p_path); + int flags=texture_flags_to_export_flags(ResourceFormatLoaderImage::load_image_flags(validated_path)); flags|=IMAGE_FLAG_FIX_BORDER_ALPHA; rimd->set_option("shrink",EditorImportExport::get_singleton()->get_export_image_shrink()); rimd->set_option("flags",flags); rimd->set_option("quality",EditorImportExport::get_singleton()->get_export_image_quality()); rimd->set_option("atlas",false); - rimd->add_source(EditorImportPlugin::validate_source_path(p_path),FileAccess::get_md5(p_path)); + rimd->add_source(validated_path,FileAccess::get_md5(p_path)); } else { return Vector<uint8_t>(); @@ -1726,6 +1714,33 @@ Vector<uint8_t> EditorTextureImportPlugin::custom_export(const String& p_path, c return ret; } +uint32_t EditorTextureImportPlugin::texture_flags_to_export_flags(uint32_t p_tex_flags) const { + + uint32_t flags=0; + + if (!(p_tex_flags&Texture::FLAG_MIPMAPS)) { + flags|=IMAGE_FLAG_NO_MIPMAPS; + } + if (p_tex_flags&Texture::FLAG_REPEAT) { + flags|=IMAGE_FLAG_REPEAT; + } + if (p_tex_flags&Texture::FLAG_FILTER) { + flags|=IMAGE_FLAG_FILTER; + } + if (p_tex_flags&Texture::FLAG_ANISOTROPIC_FILTER) { + flags|=IMAGE_FLAG_USE_ANISOTROPY; + } + if (p_tex_flags&Texture::FLAG_CONVERT_TO_LINEAR) { + flags|=IMAGE_FLAG_CONVERT_TO_LINEAR; + } + /* // no correspondence yet + if (p_tex_flags&Texture::TEXTURE_FLAG_MIRRORED_REPEAT) { + flags|=; + }*/ + + return flags; +} + void EditorTextureImportPlugin::import_from_drop(const Vector<String>& p_drop,const String& p_dest_path) { Vector<String> valid; diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.h b/tools/editor/io_plugins/editor_texture_import_plugin.h index 5c8abd10a4..22c10a1a3a 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.h +++ b/tools/editor/io_plugins/editor_texture_import_plugin.h @@ -72,6 +72,8 @@ private: Error _process_texture_data(Ref<ImageTexture> &texture, int format, float quality, int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,float shrink); void compress_image(EditorExportPlatform::ImageCompression p_mode,Image& image,bool p_smaller); + + uint32_t texture_flags_to_export_flags(uint32_t p_tex_flags) const; public: diff --git a/tools/editor/multi_node_edit.cpp b/tools/editor/multi_node_edit.cpp index 4d27b8e349..e4ceaf4a8b 100644 --- a/tools/editor/multi_node_edit.cpp +++ b/tools/editor/multi_node_edit.cpp @@ -53,7 +53,14 @@ bool MultiNodeEdit::_set(const StringName& p_name, const Variant& p_value){ if (!n) continue; - ur->add_do_property(n,name,p_value); + if (p_value.get_type() == Variant::NODE_PATH) { + Node *tonode = n->get_node(p_value); + NodePath p_path = n->get_path_to(tonode); + ur->add_do_property(n,name,p_path); + } else { + ur->add_do_property(n,name,p_value); + } + ur->add_undo_property(n,name,n->get(name)); diff --git a/tools/editor/plugins/baked_light_baker.cpp b/tools/editor/plugins/baked_light_baker.cpp index a2e94e8855..f43bec1cd3 100644 --- a/tools/editor/plugins/baked_light_baker.cpp +++ b/tools/editor/plugins/baked_light_baker.cpp @@ -1177,8 +1177,6 @@ float BakedLightBaker::_throw_ray(ThreadStack& thread_stack,bool p_bake_direct,c diffuse_at_point.g=res_light.g*diffuse_at_point.g; diffuse_at_point.b=res_light.b*diffuse_at_point.b; - float ret=1e6; - if (p_bounces>0) { @@ -1220,7 +1218,7 @@ float BakedLightBaker::_throw_ray(ThreadStack& thread_stack,bool p_bake_direct,c #endif - ret=_throw_ray(thread_stack,p_bake_direct,r_point,r_point+rn*p_rest,p_rest,diffuse_at_point,p_att_curve,p_att_pos,p_att_curve_len,p_bounces-1); + _throw_ray(thread_stack,p_bake_direct,r_point,r_point+rn*p_rest,p_rest,diffuse_at_point,p_att_curve,p_att_pos,p_att_curve_len,p_bounces-1); } if (use_specular && (specular_at_point.r>CMP_EPSILON || specular_at_point.g>CMP_EPSILON || specular_at_point.b>CMP_EPSILON)) { diff --git a/tools/editor/plugins/canvas_item_editor_plugin.cpp b/tools/editor/plugins/canvas_item_editor_plugin.cpp index 57707ffa72..b0e002ba44 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); + } } @@ -1051,7 +1058,7 @@ void CanvasItemEditor::_viewport_input_event(const InputEvent& p_event) { EditorPluginList *over_plugin_list = en->get_editor_plugins_over(); if (!over_plugin_list->empty()) { - bool discard = over_plugin_list->forward_input_event(p_event); + bool discard = over_plugin_list->forward_input_event(transform,p_event); if (discard) { accept_event(); return; @@ -2083,76 +2090,90 @@ 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"); + { - for(Map<ObjectID,BoneList>::Element*E=bone_list.front();E;E=E->next()) { + EditorNode *en = editor; + EditorPluginList *over_plugin_list = en->get_editor_plugins_over(); - E->get().from=Vector2(); - E->get().to=Vector2(); + if (!over_plugin_list->empty()) { - Object *obj = ObjectDB::get_instance(E->get().bone); - if (!obj) - continue; + over_plugin_list->forward_draw_over_canvas(transform,viewport); - Node2D* n2d = obj->cast_to<Node2D>(); - if (!n2d) - continue; + } + } - if (!n2d->get_parent()) - continue; + 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"); - CanvasItem *pi = n2d->get_parent_item(); + for(Map<ObjectID,BoneList>::Element*E=bone_list.front();E;E=E->next()) { + E->get().from=Vector2(); + E->get().to=Vector2(); - Node2D* pn2d=n2d->get_parent()->cast_to<Node2D>(); + Object *obj = ObjectDB::get_instance(E->get().bone); + if (!obj) + continue; - if (!pn2d) - continue; + Node2D* n2d = obj->cast_to<Node2D>(); + if (!n2d) + continue; - Vector2 from = transform.xform(pn2d->get_global_pos()); - Vector2 to = transform.xform(n2d->get_global_pos()); + if (!n2d->get_parent()) + continue; - E->get().from=from; - E->get().to=to; + CanvasItem *pi = n2d->get_parent_item(); - Vector2 rel = to-from; - Vector2 relt = rel.tangent().normalized()*bone_width; + Node2D* pn2d=n2d->get_parent()->cast_to<Node2D>(); + if (!pn2d) + continue; - 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_")) { + Vector2 from = transform.xform(pn2d->get_global_pos()); + Vector2 to = transform.xform(n2d->get_global_pos()); - 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); - } + E->get().from=from; + E->get().to=to; + Vector2 rel = to-from; + Vector2 relt = rel.tangent().normalized()*bone_width; - 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++) { - VisualServer::get_singleton()->canvas_item_add_line(ci,bone_shape[i],bone_shape[(i+1)%bone_shape.size()],bone_selected_color,2); + 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); } - } + + 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++) { + + VisualServer::get_singleton()->canvas_item_add_line(ci,bone_shape[i],bone_shape[(i+1)%bone_shape.size()],bone_selected_color,2); + } + } + + } } } @@ -2536,6 +2557,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; @@ -2999,6 +3026,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(); @@ -3017,6 +3046,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(); @@ -3036,6 +3067,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)); } @@ -3055,6 +3088,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(); @@ -3401,15 +3436,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"); /* @@ -3535,6 +3572,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 ea582f6fa7..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; diff --git a/tools/editor/plugins/collision_polygon_2d_editor_plugin.h b/tools/editor/plugins/collision_polygon_2d_editor_plugin.h index 982ba35fe8..431d3651c1 100644 --- a/tools/editor/plugins/collision_polygon_2d_editor_plugin.h +++ b/tools/editor/plugins/collision_polygon_2d_editor_plugin.h @@ -95,7 +95,7 @@ class CollisionPolygon2DEditorPlugin : public EditorPlugin { public: - virtual bool forward_input_event(const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } virtual String get_name() const { return "CollisionPolygon2D"; } bool has_main_screen() const { return false; } diff --git a/tools/editor/plugins/collision_shape_2d_editor_plugin.h b/tools/editor/plugins/collision_shape_2d_editor_plugin.h index 1ee81eda43..a8930dc0f2 100644 --- a/tools/editor/plugins/collision_shape_2d_editor_plugin.h +++ b/tools/editor/plugins/collision_shape_2d_editor_plugin.h @@ -86,7 +86,7 @@ class CollisionShape2DEditorPlugin : public EditorPlugin { EditorNode* editor; public: - virtual bool forward_input_event(const InputEvent& p_event) { return collision_shape_2d_editor->forward_input_event(p_event); } + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { return collision_shape_2d_editor->forward_input_event(p_event); } virtual String get_name() const { return "CollisionShape2D"; } bool has_main_screen() const { return false; } diff --git a/tools/editor/plugins/light_occluder_2d_editor_plugin.h b/tools/editor/plugins/light_occluder_2d_editor_plugin.h index b570fff506..0176eb87dd 100644 --- a/tools/editor/plugins/light_occluder_2d_editor_plugin.h +++ b/tools/editor/plugins/light_occluder_2d_editor_plugin.h @@ -99,7 +99,7 @@ class LightOccluder2DEditorPlugin : public EditorPlugin { public: - virtual bool forward_input_event(const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } virtual String get_name() const { return "LightOccluder2D"; } bool has_main_screen() const { return false; } diff --git a/tools/editor/plugins/navigation_polygon_editor_plugin.h b/tools/editor/plugins/navigation_polygon_editor_plugin.h index 503b4c2662..defdebbec2 100644 --- a/tools/editor/plugins/navigation_polygon_editor_plugin.h +++ b/tools/editor/plugins/navigation_polygon_editor_plugin.h @@ -101,7 +101,7 @@ class NavigationPolygonEditorPlugin : public EditorPlugin { public: - virtual bool forward_input_event(const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } virtual String get_name() const { return "NavigationPolygonInstance"; } bool has_main_screen() const { return false; } diff --git a/tools/editor/plugins/path_2d_editor_plugin.h b/tools/editor/plugins/path_2d_editor_plugin.h index 973c17464e..acbc481e09 100644 --- a/tools/editor/plugins/path_2d_editor_plugin.h +++ b/tools/editor/plugins/path_2d_editor_plugin.h @@ -108,7 +108,7 @@ class Path2DEditorPlugin : public EditorPlugin { public: - virtual bool forward_input_event(const InputEvent& p_event) { return path2d_editor->forward_input_event(p_event); } + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { return path2d_editor->forward_input_event(p_event); } virtual String get_name() const { return "Path2D"; } bool has_main_screen() const { return false; } diff --git a/tools/editor/plugins/polygon_2d_editor_plugin.h b/tools/editor/plugins/polygon_2d_editor_plugin.h index d8b951ec44..33bae94340 100644 --- a/tools/editor/plugins/polygon_2d_editor_plugin.h +++ b/tools/editor/plugins/polygon_2d_editor_plugin.h @@ -151,7 +151,7 @@ class Polygon2DEditorPlugin : public EditorPlugin { public: - virtual bool forward_input_event(const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { return collision_polygon_editor->forward_input_event(p_event); } virtual String get_name() const { return "Polygon2D"; } bool has_main_screen() const { return false; } diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp index fdb7856b83..3cd6d8336a 100644 --- a/tools/editor/plugins/script_editor_plugin.cpp +++ b/tools/editor/plugins/script_editor_plugin.cpp @@ -43,6 +43,17 @@ /*** SCRIPT EDITOR ****/ + +void ScriptEditorBase::_bind_methods() { + + ADD_SIGNAL(MethodInfo("name_changed")); + ADD_SIGNAL(MethodInfo("request_help_search",PropertyInfo(Variant::STRING,"topic"))); + ADD_SIGNAL(MethodInfo("request_open_script_at_line",PropertyInfo(Variant::OBJECT,"script"),PropertyInfo(Variant::INT,"line"))); + ADD_SIGNAL(MethodInfo("request_save_history")); + ADD_SIGNAL(MethodInfo("go_to_help",PropertyInfo(Variant::STRING,"what"))); + +} + static bool _can_open_in_editor(Script* p_script) { String path = p_script->get_path(); @@ -346,6 +357,34 @@ void ScriptEditor::_update_history_arrows() { script_forward->set_disabled( history_pos>=history.size()-1 ); } +void ScriptEditor::_save_history() { + + + if (history_pos>=0 && history_pos<history.size() && history[history_pos].control==tab_container->get_current_tab_control()) { + + Node *n = tab_container->get_current_tab_control(); + + if (n->cast_to<ScriptEditorBase>()) { + + history[history_pos].state=n->cast_to<ScriptEditorBase>()->get_edit_state(); + } + if (n->cast_to<EditorHelp>()) { + + history[history_pos].state=n->cast_to<EditorHelp>()->get_scroll(); + } + } + + history.resize(history_pos+1); + ScriptHistory sh; + sh.control=tab_container->get_current_tab_control(); + sh.state=Variant(); + + history.push_back(sh); + history_pos++; + + _update_history_arrows(); +} + void ScriptEditor::_go_to_tab(int p_idx) { @@ -480,6 +519,33 @@ void ScriptEditor::_close_docs_tab() { } +void ScriptEditor::_close_all_tabs() { + + int child_count = tab_container->get_child_count(); + for (int i = child_count-1; i>=0; i--) { + + tab_container->set_current_tab(i); + ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>(); + + if (se) { + + // Maybe there are unsaved changes + if (se->is_unsaved()) { + _ask_close_current_unsaved_tab(se); + continue; + } + + } + + _close_current_tab(); + } + +} + +void ScriptEditor::_ask_close_current_unsaved_tab(ScriptEditorBase *current) { + erase_tab_confirm->set_text("Close and save changes?\n\""+current->get_name()+"\""); + erase_tab_confirm->popup_centered_minsize(); +} void ScriptEditor::_resave_scripts(const String& p_str) { @@ -689,29 +755,10 @@ void ScriptEditor::_menu_option(int p_option) { } break; case FILE_SAVE_ALL: { - if (!_test_script_times_on_disk()) + if (_test_script_times_on_disk()) return; save_all_scripts(); - -#if 0 - for(int i=0;i<tab_container->get_child_count();i++) { - - ScriptTextEditor *se = tab_container->get_child(i)->cast_to<ScriptTextEditor>(); - if (!se) - continue; - - - Ref<Script> script = se->get_edited_script(); - - if (script->get_path()=="" || script->get_path().find("local://")!=-1 || script->get_path().find("::")!=-1) - continue; //internal script, who cares - - - editor->save_resource( script ); - } - -#endif } break; case FILE_IMPORT_THEME: { file_dialog->set_mode(EditorFileDialog::MODE_OPEN_FILE); @@ -831,8 +878,7 @@ void ScriptEditor::_menu_option(int p_option) { case FILE_CLOSE: { if (current->is_unsaved()) { - erase_tab_confirm->set_text("Close and save changes?\n\""+current->get_name()+"\""); - erase_tab_confirm->popup_centered_minsize(); + _ask_close_current_unsaved_tab(current); } else { _close_current_tab(); } @@ -840,6 +886,9 @@ void ScriptEditor::_menu_option(int p_option) { case CLOSE_DOCS: { _close_docs_tab(); } break; + case CLOSE_ALL: { + _close_all_tabs(); + } break; case DEBUG_NEXT: { if (debugger) @@ -913,6 +962,9 @@ void ScriptEditor::_menu_option(int p_option) { case CLOSE_DOCS: { _close_docs_tab(); } break; + case CLOSE_ALL: { + _close_all_tabs(); + } break; } @@ -1291,9 +1343,8 @@ struct _ScriptEditorItemData { void ScriptEditor::_update_script_colors() { - bool enabled = EditorSettings::get_singleton()->get("text_editor/script_temperature_enabled"); - if (!enabled) - return; + bool script_temperature_enabled = EditorSettings::get_singleton()->get("text_editor/script_temperature_enabled"); + bool highlight_current = EditorSettings::get_singleton()->get("text_editor/highlight_current_script"); int hist_size = EditorSettings::get_singleton()->get("text_editor/script_temperature_history_size"); Color hot_color=EditorSettings::get_singleton()->get("text_editor/script_temperature_hot_color"); @@ -1307,20 +1358,27 @@ void ScriptEditor::_update_script_colors() { continue; script_list->set_item_custom_bg_color(i,Color(0,0,0,0)); - if (!n->has_meta("__editor_pass")) { - continue; - } - int pass=n->get_meta("__editor_pass"); - int h = edit_pass - pass; - if (h>hist_size) { - continue; - } - 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); + 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 if (script_temperature_enabled) { + + if (!n->has_meta("__editor_pass")) { + continue; + } + int pass=n->get_meta("__editor_pass"); + int h = edit_pass - pass; + if (h>hist_size) { + continue; + } + 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)); + script_list->set_item_custom_bg_color(i,hot_color.linear_interpolate(cold_color,v)); + } } } @@ -1476,6 +1534,7 @@ void ScriptEditor::edit(const Ref<Script>& p_script, bool p_grab_focus) { } ERR_FAIL_COND(!se); tab_container->add_child(se); + se->set_edited_script(p_script); se->set_tooltip_request_func("_get_debug_tooltip",this); if (se->get_edit_menu()) { @@ -1497,6 +1556,11 @@ void ScriptEditor::edit(const Ref<Script>& p_script, bool p_grab_focus) { _save_layout(); se->connect("name_changed",this,"_update_script_names"); se->connect("request_help_search",this,"_help_search"); + se->connect("request_open_script_at_line",this,"_goto_script_line"); + se->connect("go_to_help",this,"_help_class_goto"); + se->connect("request_save_history",this,"_save_history"); + + //test for modification, maybe the script was not edited but was loaded @@ -1653,6 +1717,7 @@ void ScriptEditor::_editor_settings_changed() { se->update_settings(); } + _update_script_colors(); ScriptServer::set_reload_scripts_on_save(EDITOR_DEF("text_editor/auto_reload_and_parse_scripts_on_save",true)); @@ -1802,7 +1867,6 @@ void ScriptEditor::_help_class_open(const String& p_class) { void ScriptEditor::_help_class_goto(const String& p_desc) { - String cname=p_desc.get_slice(":",1); for(int i=0;i<tab_container->get_child_count();i++) { @@ -1972,6 +2036,7 @@ void ScriptEditor::_bind_methods() { ObjectTypeDB::bind_method("_menu_option",&ScriptEditor::_menu_option); ObjectTypeDB::bind_method("_close_current_tab",&ScriptEditor::_close_current_tab); ObjectTypeDB::bind_method("_close_docs_tab", &ScriptEditor::_close_docs_tab); + ObjectTypeDB::bind_method("_close_all_tabs", &ScriptEditor::_close_all_tabs); ObjectTypeDB::bind_method("_editor_play",&ScriptEditor::_editor_play); ObjectTypeDB::bind_method("_editor_pause",&ScriptEditor::_editor_pause); ObjectTypeDB::bind_method("_editor_stop",&ScriptEditor::_editor_stop); @@ -1982,6 +2047,8 @@ void ScriptEditor::_bind_methods() { ObjectTypeDB::bind_method("_goto_script_line",&ScriptEditor::_goto_script_line); ObjectTypeDB::bind_method("_goto_script_line2",&ScriptEditor::_goto_script_line2); ObjectTypeDB::bind_method("_help_search",&ScriptEditor::_help_search); + ObjectTypeDB::bind_method("_save_history",&ScriptEditor::_save_history); + ObjectTypeDB::bind_method("_breaked",&ScriptEditor::_breaked); @@ -2052,8 +2119,8 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_script_soft", TTR("Soft Reload Script"), KEY_MASK_CMD|KEY_MASK_SHIFT|KEY_R), FILE_TOOL_RELOAD_SOFT); file_menu->get_popup()->add_separator(); - file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_previous", TTR("History Prev"), KEY_MASK_CTRL|KEY_MASK_ALT|KEY_LEFT), WINDOW_PREV); - file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_next", TTR("History Next"), KEY_MASK_CTRL|KEY_MASK_ALT|KEY_RIGHT), WINDOW_NEXT); + file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_previous", TTR("History Prev"), KEY_MASK_ALT|KEY_LEFT), WINDOW_PREV); + file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_next", TTR("History Next"), KEY_MASK_ALT|KEY_RIGHT), WINDOW_NEXT); file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/import_theme", TTR("Import Theme")), FILE_IMPORT_THEME); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_theme", TTR("Reload Theme")), FILE_RELOAD_THEME); @@ -2062,6 +2129,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_docs", TTR("Close Docs")), CLOSE_DOCS); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_file", TTR("Close"), KEY_MASK_CMD | KEY_W), FILE_CLOSE); + file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_all", TTR("Close All")), CLOSE_ALL); file_menu->get_popup()->connect("item_pressed", this,"_menu_option"); @@ -2356,9 +2424,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 1a23ffed72..10f3bce14e 100644 --- a/tools/editor/plugins/script_editor_plugin.h +++ b/tools/editor/plugins/script_editor_plugin.h @@ -78,7 +78,8 @@ class ScriptEditorDebugger; class ScriptEditorBase : public Control { OBJ_TYPE( ScriptEditorBase, Control ); - +protected: + static void _bind_methods(); public: virtual void apply_code()=0; @@ -133,6 +134,7 @@ class ScriptEditor : public VBoxContainer { FILE_SAVE_THEME_AS, FILE_CLOSE, CLOSE_DOCS, + CLOSE_ALL, FILE_TOOL_RELOAD, FILE_TOOL_RELOAD_SOFT, DEBUG_NEXT, @@ -221,6 +223,9 @@ class ScriptEditor : public VBoxContainer { void _close_current_tab(); void _close_docs_tab(); + void _close_all_tabs(); + + void _ask_close_current_unsaved_tab(ScriptEditorBase *current); bool grab_focus_block; @@ -278,6 +283,7 @@ class ScriptEditor : public VBoxContainer { void _help_class_open(const String& p_class); void _help_class_goto(const String& p_desc); void _update_history_arrows(); + void _save_history(); void _go_to_tab(int p_idx); void _update_history_pos(int p_new_pos); void _update_script_colors(); diff --git a/tools/editor/plugins/script_text_editor.cpp b/tools/editor/plugins/script_text_editor.cpp index 57cf8cbea3..2f807eaa19 100644 --- a/tools/editor/plugins/script_text_editor.cpp +++ b/tools/editor/plugins/script_text_editor.cpp @@ -30,6 +30,7 @@ #include "tools/editor/editor_settings.h" #include "os/keyboard.h" #include "tools/editor/script_editor_debugger.h" +#include "tools/editor/editor_node.h" Vector<String> ScriptTextEditor::get_functions() { @@ -497,6 +498,7 @@ void ScriptTextEditor::_code_complete_scripts(void* p_ud,const String& p_code, L void ScriptTextEditor::_code_complete_script(const String& p_code, List<String>* r_options) { + if (color_panel->is_visible()) return; Node *base = get_tree()->get_edited_scene_root(); if (base) { base = _find_node_for_script(base,base,script); @@ -525,6 +527,74 @@ static void swap_lines(TextEdit *tx, int line1, int line2) tx->cursor_set_line(line2); } +void ScriptTextEditor::_lookup_symbol(const String& p_symbol,int p_row, int p_column) { + + Node *base = get_tree()->get_edited_scene_root(); + if (base) { + base = _find_node_for_script(base,base,script); + } + + + ScriptLanguage::LookupResult result; + if (script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(),p_symbol,script->get_path().get_base_dir(),base,result)==OK) { + + _goto_line(p_row); + + switch(result.type) { + case ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION: { + + if (result.script.is_valid()) { + emit_signal("request_open_script_at_line",result.script,result.location-1); + } else { + emit_signal("request_save_history"); + _goto_line(result.location-1); + } + } break; + case ScriptLanguage::LookupResult::RESULT_CLASS: { + emit_signal("go_to_help","class_name:"+result.class_name); + } break; + case ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT: { + + StringName cname = result.class_name; + bool success; + while(true) { + ObjectTypeDB::get_integer_constant(cname,result.class_member,&success); + if (success) { + result.class_name=cname; + cname=ObjectTypeDB::type_inherits_from(cname); + } else { + break; + } + } + + + emit_signal("go_to_help","class_constant:"+result.class_name+":"+result.class_member); + + } break; + case ScriptLanguage::LookupResult::RESULT_CLASS_PROPERTY: { + emit_signal("go_to_help","class_property:"+result.class_name+":"+result.class_member); + + } break; + case ScriptLanguage::LookupResult::RESULT_CLASS_METHOD: { + + StringName cname = result.class_name; + + while(true) { + if (ObjectTypeDB::has_method(cname,result.class_member)) { + result.class_name=cname; + cname=ObjectTypeDB::type_inherits_from(cname); + } else { + break; + } + } + + emit_signal("go_to_help","class_method:"+result.class_name+":"+result.class_member); + + } break; + } + + } +} void ScriptTextEditor::_edit_option(int p_op) { @@ -813,6 +883,9 @@ void ScriptTextEditor::_edit_option(int p_op) { case EDIT_TRIM_TRAILING_WHITESAPCE: { trim_trailing_whitespace(); } break; + case EDIT_PICK_COLOR: { + color_panel->popup(); + } break; case SEARCH_FIND: { @@ -919,9 +992,15 @@ void ScriptTextEditor::_bind_methods() { ObjectTypeDB::bind_method("_breakpoint_toggled",&ScriptTextEditor::_breakpoint_toggled); ObjectTypeDB::bind_method("_edit_option",&ScriptTextEditor::_edit_option); ObjectTypeDB::bind_method("_goto_line",&ScriptTextEditor::_goto_line); + ObjectTypeDB::bind_method("_lookup_symbol",&ScriptTextEditor::_lookup_symbol); + ObjectTypeDB::bind_method("_text_edit_input_event", &ScriptTextEditor::_text_edit_input_event); + ObjectTypeDB::bind_method("_color_changed", &ScriptTextEditor::_color_changed); + + + ObjectTypeDB::bind_method("get_drag_data_fw",&ScriptTextEditor::get_drag_data_fw); + ObjectTypeDB::bind_method("can_drop_data_fw",&ScriptTextEditor::can_drop_data_fw); + ObjectTypeDB::bind_method("drop_data_fw",&ScriptTextEditor::drop_data_fw); - ADD_SIGNAL(MethodInfo("name_changed")); - ADD_SIGNAL(MethodInfo("request_help_search",PropertyInfo(Variant::STRING,"topic"))); } Control *ScriptTextEditor::get_edit_menu() { @@ -957,6 +1036,234 @@ void ScriptTextEditor::set_debugger_active(bool p_active) { } + +Variant ScriptTextEditor::get_drag_data_fw(const Point2& p_point,Control* p_from) { + + return Variant(); +} + +bool ScriptTextEditor::can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const{ + + Dictionary d = p_data; + if (d.has("type") && + ( + + String(d["type"])=="resource" || + String(d["type"])=="files" || + String(d["type"])=="nodes" + ) ) { + + + return true; + } + + + return false; + +} + +#ifdef TOOLS_ENABLED + +static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const Ref<Script> &script) { + + if (p_edited_scene!=p_current_node && p_current_node->get_owner()!=p_edited_scene) + return NULL; + + Ref<Script> scr = p_current_node->get_script(); + + if (scr.is_valid() && scr==script) + return p_current_node; + + for(int i=0;i<p_current_node->get_child_count();i++) { + Node *n = _find_script_node(p_edited_scene,p_current_node->get_child(i),script); + if (n) + return n; + } + + return NULL; +} + +#else + +static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const Ref<Script> &script) { + + return NULL; +} +#endif + + + + +void ScriptTextEditor::drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from){ + + Dictionary d = p_data; + + if (d.has("type") && String(d["type"])=="resource") { + + Ref<Resource> res = d["resource"]; + if (!res.is_valid()) { + return; + } + + if (res->get_path().is_resource_file()) { + EditorNode::get_singleton()->show_warning("Only resources from filesystem can be dropped."); + return; + } + + code_editor->get_text_edit()->insert_text_at_cursor(res->get_path()); + + } + + if (d.has("type") && String(d["type"])=="files") { + + + Array files = d["files"]; + + String text_to_drop; + for(int i=0;i<files.size();i++) { + + if (i>0) + text_to_drop+=","; + text_to_drop+="\""+String(files[i]).c_escape()+"\""; + + } + + code_editor->get_text_edit()->insert_text_at_cursor(text_to_drop); + + } + + 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); + + + if (!sn) { + EditorNode::get_singleton()->show_warning("Can't drop nodes because script '"+get_name()+"' is not used in this scene."); + return; + } + + + Array nodes = d["nodes"]; + String text_to_drop; + for(int i=0;i<nodes.size();i++) { + + if (i>0) + text_to_drop+=","; + + NodePath np = nodes[i]; + Node *node = get_node(np); + if (!node) { + continue; + } + + + + String path = sn->get_path_to(node); + text_to_drop+="\""+path.c_escape()+"\""; + + + } + + code_editor->get_text_edit()->insert_text_at_cursor(text_to_drop); + + + } + + + +} + +void ScriptTextEditor::_text_edit_input_event(const InputEvent& ev) { + if (ev.type == InputEvent::MOUSE_BUTTON) { + InputEventMouseButton mb = ev.mouse_button; + if (mb.button_index == BUTTON_RIGHT && !mb.pressed) { + + int col, row; + TextEdit* tx = code_editor->get_text_edit(); + tx->_get_mouse_pos(Point2i(mb.global_x, mb.global_y)-tx->get_global_pos(), row, col); + Vector2 mpos = Vector2(mb.global_x, mb.global_y)-tx->get_global_pos(); + bool have_selection = (tx->get_selection_text().length() > 0); + bool have_color = (tx->get_word_at_pos(mpos) == "Color"); + if (have_color) { + + String line = tx->get_line(row); + color_line = row; + int begin = 0; + int end = 0; + bool valid = false; + for (int i = col; i < line.length(); i++) { + if (line[i] == '(') { + begin = i; + continue; + } + else if (line[i] == ')') { + end = i+1; + valid = true; + break; + } + } + if (valid) { + color_args = line.substr(begin, end-begin); + String stripped = color_args.replace(" ", "").replace("(", "").replace(")", ""); + Vector<float> color = stripped.split_floats(","); + if (color.size() > 2) { + float alpha = color.size() > 3 ? color[3] : 1.0f; + color_picker->set_color(Color(color[0], color[1], color[2], alpha)); + } + color_panel->set_pos(get_global_transform().xform(get_local_mouse_pos())); + Size2 ms = Size2(300, color_picker->get_combined_minimum_size().height+10); + color_panel->set_size(ms); + } else { + have_color = false; + } + } + _make_context_menu(have_selection, have_color); + } + } +} + +void ScriptTextEditor::_color_changed(const Color& p_color) { + String new_args; + if (p_color.a == 1.0f) { + new_args = String("("+rtos(p_color.r)+", "+rtos(p_color.g)+", "+rtos(p_color.b)+")"); + } else { + new_args = String("("+rtos(p_color.r)+", "+rtos(p_color.g)+", "+rtos(p_color.b)+", "+rtos(p_color.a)+")"); + } + + String line = code_editor->get_text_edit()->get_line(color_line); + String new_line = line.replace(color_args, new_args); + color_args = new_args; + code_editor->get_text_edit()->set_line(color_line, new_line); +} + +void ScriptTextEditor::_make_context_menu(bool p_selection, bool p_color) { + + context_menu->clear(); + if (p_selection) { + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/cut")); + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/copy")); + } + + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/paste")); + context_menu->add_separator(); + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/select_all")); + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/undo")); + + if (p_selection) { + context_menu->add_separator(); + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_left")); + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_right")); + context_menu->add_shortcut(ED_GET_SHORTCUT("script_text_editor/toggle_comment")); + } + if (p_color) { + context_menu->add_separator(); + context_menu->add_item(TTR("Pick Color"), EDIT_PICK_COLOR); + } + context_menu->set_pos(get_global_transform().xform(get_local_mouse_pos())); + context_menu->set_size(Vector2(1, 1)); + context_menu->popup(); +} + ScriptTextEditor::ScriptTextEditor() { code_editor = memnew( CodeTextEditor ); @@ -966,6 +1273,8 @@ ScriptTextEditor::ScriptTextEditor() { code_editor->connect("load_theme_settings",this,"_load_theme_settings"); code_editor->set_code_complete_func(_code_complete_scripts,this); code_editor->get_text_edit()->connect("breakpoint_toggled", this, "_breakpoint_toggled"); + code_editor->get_text_edit()->connect("symbol_lookup", this, "_lookup_symbol"); + code_editor->get_text_edit()->set_scroll_pass_end_of_file(EditorSettings::get_singleton()->get("text_editor/scroll_past_end_of_file")); code_editor->get_text_edit()->set_auto_brace_completion(EditorSettings::get_singleton()->get("text_editor/auto_brace_complete")); @@ -982,6 +1291,21 @@ ScriptTextEditor::ScriptTextEditor() { EditorSettings::get_singleton()->get("text_editor/put_callhint_tooltip_below_current_line"), EditorSettings::get_singleton()->get("text_editor/callhint_tooltip_offset")); + code_editor->get_text_edit()->set_select_identifiers_on_hover(true); + code_editor->get_text_edit()->set_context_menu_enabled(false); + code_editor->get_text_edit()->connect("input_event", this, "_text_edit_input_event"); + + context_menu = memnew(PopupMenu); + add_child(context_menu); + context_menu->connect("item_pressed", this, "_edit_option"); + + color_panel = memnew(PopupPanel); + add_child(color_panel); + color_picker = memnew(ColorPicker); + color_panel->add_child(color_picker); + color_panel->set_child_rect(color_picker); + color_picker->connect("color_changed", this, "_color_changed"); + edit_hb = memnew (HBoxContainer); edit_menu = memnew( MenuButton ); @@ -1039,6 +1363,9 @@ ScriptTextEditor::ScriptTextEditor() { goto_line_dialog = memnew(GotoLineDialog); add_child(goto_line_dialog); + + + code_editor->get_text_edit()->set_drag_forwarding(this); } static ScriptEditorBase * create_editor(const Ref<Script>& p_script) { diff --git a/tools/editor/plugins/script_text_editor.h b/tools/editor/plugins/script_text_editor.h index 247fd97e81..ceef50f0bc 100644 --- a/tools/editor/plugins/script_text_editor.h +++ b/tools/editor/plugins/script_text_editor.h @@ -30,6 +30,7 @@ #define SCRIPT_TEXT_EDITOR_H #include "script_editor_plugin.h" +#include "scene/gui/color_picker.h" class ScriptTextEditor : public ScriptEditorBase { @@ -47,10 +48,16 @@ class ScriptTextEditor : public ScriptEditorBase { MenuButton *edit_menu; MenuButton *search_menu; + PopupMenu *context_menu; GotoLineDialog *goto_line_dialog; ScriptEditorQuickOpen *quick_open; + PopupPanel *color_panel; + ColorPicker *color_picker; + int color_line; + String color_args; + enum { EDIT_UNDO, EDIT_REDO, @@ -67,6 +74,7 @@ class ScriptTextEditor : public ScriptEditorBase { EDIT_INDENT_RIGHT, EDIT_INDENT_LEFT, EDIT_CLONE_DOWN, + EDIT_PICK_COLOR, SEARCH_FIND, SEARCH_FIND_NEXT, SEARCH_FIND_PREV, @@ -96,8 +104,17 @@ protected: static void _bind_methods(); void _edit_option(int p_op); + void _make_context_menu(bool p_selection, bool p_color); + void _text_edit_input_event(const InputEvent& ev); + void _color_changed(const Color& p_color); void _goto_line(int p_line) { goto_line(p_line); } + void _lookup_symbol(const String& p_symbol,int p_row, int p_column); + + Variant get_drag_data_fw(const Point2& p_point,Control* p_from); + bool can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const; + void drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from); + public: virtual void apply_code(); diff --git a/tools/editor/plugins/shader_graph_editor_plugin.cpp b/tools/editor/plugins/shader_graph_editor_plugin.cpp index 815da48e96..3ab906f84e 100644 --- a/tools/editor/plugins/shader_graph_editor_plugin.cpp +++ b/tools/editor/plugins/shader_graph_editor_plugin.cpp @@ -901,6 +901,7 @@ void ShaderGraphView::_variant_edited() { case Variant::COLOR: v2=Color(); break; + default: {} } UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); ur->create_action(TTR("Change Default Value")); @@ -1321,6 +1322,7 @@ void ShaderGraphView::_default_changed(int p_id, Node *p_button, int p_param, in h=PROPERTY_HINT_COLOR_NO_ALPHA; v=Color(); break; + default: {} } ped_popup->edit(NULL,"",vt,v,h,p_hint); @@ -1347,6 +1349,8 @@ ToolButton *ShaderGraphView::make_label(String text, Variant::Type v_type) { break; case Variant::COLOR: l->set_icon(ped_popup->get_icon("Color", "EditorIcons")); + break; + default: {} } return l; } @@ -1372,7 +1376,7 @@ ToolButton *ShaderGraphView::make_editor(String text,GraphNode* gn,int p_id,int case Variant::TRANSFORM: edit->set_icon(ped_popup->get_icon("Matrix", "EditorIcons")); break; - case Variant::COLOR: + case Variant::COLOR: { Image icon_color = Image(15,15,false,Image::FORMAT_RGB); Color c = graph->default_get_value(type,p_id,param); for (int x=1;x<14;x++) @@ -1382,7 +1386,8 @@ ToolButton *ShaderGraphView::make_editor(String text,GraphNode* gn,int p_id,int t.instance(); t->create_from_image(icon_color); edit->set_icon(t); - break; + } break; + default: {} } return edit; } @@ -2417,6 +2422,7 @@ void ShaderGraphView::_create_node(int p_id) { colors.push_back("Color"); colors.push_back("LightColor"); colors.push_back("Light"); + colors.push_back("ShadowColor"); colors.push_back("Diffuse"); colors.push_back("Specular"); colors.push_back("Emmision"); @@ -2429,6 +2435,7 @@ void ShaderGraphView::_create_node(int p_id) { reals.push_back("ShadeParam"); reals.push_back("SpecularExp"); reals.push_back("LightAlpha"); + reals.push_back("ShadowAlpha"); reals.push_back("PointSize"); reals.push_back("Discard"); diff --git a/tools/editor/plugins/spatial_editor_plugin.cpp b/tools/editor/plugins/spatial_editor_plugin.cpp index 95106d2c81..6dcc71422a 100644 --- a/tools/editor/plugins/spatial_editor_plugin.cpp +++ b/tools/editor/plugins/spatial_editor_plugin.cpp @@ -1978,6 +1978,11 @@ void SpatialEditorViewport::_menu_option(int p_option) { _update_name(); } break; + case VIEW_CENTER_TO_ORIGIN: { + + cursor.pos = Vector3(0,0,0); + + } break; case VIEW_CENTER_TO_SELECTION: { focus_selection(); @@ -2391,6 +2396,7 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed view_menu->get_popup()->set_item_checked( view_menu->get_popup()->get_item_index(VIEW_GIZMOS),true); view_menu->get_popup()->add_separator(); + view_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("spatial_editor/focus_origin"), VIEW_CENTER_TO_ORIGIN); view_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("spatial_editor/focus_selection"), VIEW_CENTER_TO_SELECTION); view_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("spatial_editor/align_selection_with_view"), VIEW_ALIGN_SELECTION_WITH_VIEW); view_menu->get_popup()->connect("item_pressed",this,"_menu_option"); @@ -3151,6 +3157,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; @@ -3168,10 +3176,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); @@ -3467,6 +3475,8 @@ void SpatialEditor::_unhandled_key_input(InputEvent p_event) { if (!is_visible() || get_viewport()->gui_has_modal_stack()) return; +#if 0 +//i don't remember this being used, why was it here? { EditorNode *en = editor; @@ -3478,6 +3488,7 @@ void SpatialEditor::_unhandled_key_input(InputEvent p_event) { } } +#endif switch(p_event.type) { @@ -3853,6 +3864,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) { ED_SHORTCUT("spatial_editor/switch_perspective_orthogonal", TTR("Switch Perspective/Orthogonal view"), KEY_KP_5); ED_SHORTCUT("spatial_editor/snap", TTR("Snap"), KEY_S); ED_SHORTCUT("spatial_editor/insert_anim_key", TTR("Insert Animation Key"), KEY_K); + ED_SHORTCUT("spatial_editor/focus_origin", TTR("Focus Origin"), KEY_O); ED_SHORTCUT("spatial_editor/focus_selection", TTR("Focus Selection"), KEY_F); ED_SHORTCUT("spatial_editor/align_selection_with_view", TTR("Align Selection With View"), KEY_MASK_ALT+KEY_MASK_CMD+KEY_F); diff --git a/tools/editor/plugins/spatial_editor_plugin.h b/tools/editor/plugins/spatial_editor_plugin.h index 975092a01d..89587526ee 100644 --- a/tools/editor/plugins/spatial_editor_plugin.h +++ b/tools/editor/plugins/spatial_editor_plugin.h @@ -76,6 +76,7 @@ friend class SpatialEditor; VIEW_RIGHT, VIEW_FRONT, VIEW_REAR, + VIEW_CENTER_TO_ORIGIN, VIEW_CENTER_TO_SELECTION, VIEW_ALIGN_SELECTION_WITH_VIEW, VIEW_PERSPECTIVE, diff --git a/tools/editor/plugins/theme_editor_plugin.cpp b/tools/editor/plugins/theme_editor_plugin.cpp index 5db331ba45..84568aa8c0 100644 --- a/tools/editor/plugins/theme_editor_plugin.cpp +++ b/tools/editor/plugins/theme_editor_plugin.cpp @@ -668,7 +668,7 @@ ThemeEditor::ThemeEditor() { theme_menu = memnew( MenuButton ); - theme_menu->set_text("Theme"); + theme_menu->set_text(TTR("Theme")); theme_menu->get_popup()->add_item(TTR("Add Item"),POPUP_ADD); theme_menu->get_popup()->add_item(TTR("Add Class Items"),POPUP_CLASS_ADD); theme_menu->get_popup()->add_item(TTR("Remove Item"),POPUP_REMOVE); diff --git a/tools/editor/plugins/tile_map_editor_plugin.cpp b/tools/editor/plugins/tile_map_editor_plugin.cpp index 822d9e6c87..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,7 +825,7 @@ 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); + int tile_under = node->get_cell(over_tile.x, over_tile.y); String tile_name = "none"; if (node->get_tileset()->has_tile(tile_under)) diff --git a/tools/editor/plugins/tile_map_editor_plugin.h b/tools/editor/plugins/tile_map_editor_plugin.h index 666290489b..2f24002770 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.h +++ b/tools/editor/plugins/tile_map_editor_plugin.h @@ -129,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); @@ -181,7 +181,7 @@ class TileMapEditorPlugin : public EditorPlugin { public: - virtual bool forward_input_event(const InputEvent& p_event) { return tile_map_editor->forward_input_event(p_event); } + virtual bool forward_canvas_input_event(const Matrix32& p_canvas_xform,const InputEvent& p_event) { return tile_map_editor->forward_input_event(p_event); } virtual String get_name() const { return "TileMap"; } bool has_main_screen() const { return false; } diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index dc1d6ec0f9..1c99982155 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -142,6 +142,7 @@ private: String sp = p.simplify_path(); project_path->set_text(sp); _path_text_changed(p); + get_ok()->call_deferred("grab_focus"); } void _path_selected(const String& p_path) { @@ -150,7 +151,7 @@ private: String sp = p.simplify_path(); project_path->set_text(sp); _path_text_changed(p); - + get_ok()->call_deferred("grab_focus"); } void _browse_path() { @@ -506,7 +507,7 @@ void ProjectManager::_panel_draw(Node *p_hb) { hb->draw_line(Point2(0,hb->get_size().y+1),Point2(hb->get_size().x-10,hb->get_size().y+1),get_color("guide_color","Tree")); if (selected_list.has(hb->get_meta("name"))) { - hb->draw_style_box(get_stylebox("selected","Tree"),Rect2(Point2(),hb->get_size()-Size2(10,0))); + hb->draw_style_box( gui_base->get_stylebox("selected","Tree"),Rect2(Point2(),hb->get_size()-Size2(10,0))); } } @@ -753,7 +754,7 @@ void ProjectManager::_load_recent_projects() { List<PropertyInfo> properties; EditorSettings::get_singleton()->get_property_list(&properties); - Color font_color = get_color("font_color","Tree"); + Color font_color = gui_base->get_color("font_color","Tree"); List<ProjectItem> projects; List<ProjectItem> favorite_projects; @@ -864,6 +865,7 @@ void ProjectManager::_load_recent_projects() { hb->set_meta("favorite",is_favorite); hb->connect("draw",this,"_panel_draw",varray(hb)); hb->connect("input_event",this,"_panel_input",varray(hb)); + hb->add_constant_override("separation",10*EDSCALE); VBoxContainer *favorite_box = memnew( VBoxContainer ); TextureButton *favorite = memnew( TextureButton ); @@ -885,7 +887,7 @@ void ProjectManager::_load_recent_projects() { ec->set_custom_minimum_size(Size2(0,1)); vb->add_child(ec); Label *title = memnew( Label(project_name) ); - title->add_font_override("font",get_font("large","Fonts")); + title->add_font_override("font", gui_base->get_font("large","Fonts")); title->add_color_override("font_color",font_color); vb->add_child(title); Label *fpath = memnew( Label(path) ); @@ -1185,25 +1187,27 @@ ProjectManager::ProjectManager() { { int dpi_mode = EditorSettings::get_singleton()->get("global/hidpi_mode"); if (dpi_mode==0) { - editor_set_hidpi( OS::get_singleton()->get_screen_dpi(0) > 150 ); + editor_set_scale( OS::get_singleton()->get_screen_dpi(0) > 150 && OS::get_singleton()->get_screen_size(OS::get_singleton()->get_current_screen()).x>2000 ? 2.0 : 1.0 ); + } else if (dpi_mode==1) { + editor_set_scale(0.75); } else if (dpi_mode==2) { - editor_set_hidpi(true); - } else { - editor_set_hidpi(false); + editor_set_scale(1.0); + } else if (dpi_mode==3) { + editor_set_scale(1.5); + } else if (dpi_mode==4) { + editor_set_scale(2.0); } } FileDialog::set_default_show_hidden_files(EditorSettings::get_singleton()->get("file_dialog/show_hidden_files")); set_area_as_parent_rect(); + set_theme(create_editor_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); + gui_base->set_theme(create_custom_theme()); Panel *panel = memnew( Panel ); gui_base->add_child(panel); @@ -1226,7 +1230,7 @@ ProjectManager::ProjectManager() { CenterContainer *ccl = memnew( CenterContainer ); Label *l = memnew( Label ); l->set_text(_MKSTR(VERSION_NAME)+String(" - ")+TTR("Project Manager")); - l->add_font_override("font",get_font("doc","EditorFonts")); + l->add_font_override("font", gui_base->get_font("doc","EditorFonts")); ccl->add_child(l); top_hb->add_child(ccl); top_hb->add_spacer(); @@ -1262,7 +1266,7 @@ ProjectManager::ProjectManager() { search_tree_vb->add_child(search_box); PanelContainer *pc = memnew( PanelContainer); - pc->add_style_override("panel",get_stylebox("bg","Tree")); + pc->add_style_override("panel", gui_base->get_stylebox("bg","Tree")); search_tree_vb->add_child(pc); pc->set_v_size_flags(SIZE_EXPAND_FILL); diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp index 2ea28e26ad..7163836f73 100644 --- a/tools/editor/property_editor.cpp +++ b/tools/editor/property_editor.cpp @@ -214,6 +214,12 @@ void CustomPropertyEditor::_menu_option(int p_which) { } } } break; + case OBJ_MENU_NEW_SCRIPT: { + + if (owner->cast_to<Node>()) + EditorNode::get_singleton()->get_scene_tree_dock()->open_script_dialog(owner->cast_to<Node>()); + + } break; default: { @@ -850,8 +856,10 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty menu->clear(); menu->set_size(Size2(1,1)); - - if (hint_text!="") { + if (p_name=="script/script" && hint_text=="Script" && owner->cast_to<Node>()) { + menu->add_icon_item(get_icon("Script","EditorIcons"),TTR("New Script"),OBJ_MENU_NEW_SCRIPT); + menu->add_separator(); + } else if (hint_text!="") { int idx=0; for(int i=0;i<hint_text.get_slice_count(",");i++) { @@ -3041,7 +3049,7 @@ void PropertyEditor::update_tree() { if (E) { descr=E->get().brief_description; } - class_descr_cache[type]=descr.world_wrap(80); + class_descr_cache[type]=descr.word_wrap(80); } @@ -3134,7 +3142,7 @@ void PropertyEditor::update_tree() { if (E) { for(int i=0;i<E->get().methods.size();i++) { if (E->get().methods[i].name==setter.operator String()) { - descr=E->get().methods[i].description.strip_edges().world_wrap(80); + descr=E->get().methods[i].description.strip_edges().word_wrap(80); } } } @@ -3174,6 +3182,7 @@ void PropertyEditor::update_tree() { item->set_cell_mode( 1, TreeItem::CELL_MODE_CHECK ); item->set_text(1,TTR("On")); + item->set_tooltip(1, obj->get(p.name) ? "True" : "False"); item->set_checked( 1, obj->get( p.name ) ); if (show_type_icons) item->set_icon( 0, get_icon("Bool","EditorIcons") ); @@ -3820,6 +3829,7 @@ void PropertyEditor::_item_edited() { case Variant::BOOL: { _edit_set(name,item->is_checked(1)); + item->set_tooltip(1, item->is_checked(1) ? "True" : "False"); } break; case Variant::INT: case Variant::REAL: { @@ -4557,7 +4567,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 6c6c309d32..3fe332bf87 100644 --- a/tools/editor/property_editor.h +++ b/tools/editor/property_editor.h @@ -65,6 +65,7 @@ class CustomPropertyEditor : public Popup { OBJ_MENU_COPY=4, OBJ_MENU_PASTE=5, OBJ_MENU_REIMPORT=6, + OBJ_MENU_NEW_SCRIPT=7, TYPE_BASE_ID=100 }; diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index 506dfd3889..342e6b98c8 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -227,7 +227,7 @@ void SceneTreeDock::_perform_instance_scenes(const Vector<String>& p_files,Node* editor_data->get_undo_redo().add_do_reference(instanced_scene); editor_data->get_undo_redo().add_undo_method(parent,"remove_child",instanced_scene); - String new_name = parent->validate_child_name(instanced_scene->get_name()); + String new_name = parent->validate_child_name(instanced_scene); ScriptEditorDebugger *sed = ScriptEditor::get_singleton()->get_debugger(); editor_data->get_undo_redo().add_do_method(sed,"live_debug_instance_node",edited_scene->get_path_to(parent),p_files[i],new_name); editor_data->get_undo_redo().add_undo_method(sed,"live_debug_remove_node",NodePath(String(edited_scene->get_path_to(parent))+"/"+new_name)); @@ -257,17 +257,6 @@ bool SceneTreeDock::_cyclical_dependency_exists(const String& p_target_scene_pat } -static String _get_name_num_separator() { - switch(EditorSettings::get_singleton()->get("scenetree_editor/duplicate_node_name_num_separator").operator int()) { - case 0: return ""; - case 1: return " "; - case 2: return "_"; - case 3: return "-"; - } - return " "; -} - - void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { current_option=p_tool; @@ -474,37 +463,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { if (selection.size()==1) dupsingle=dup; - String name = node->get_name(); - - String nums; - for(int i=name.length()-1;i>=0;i--) { - CharType n=name[i]; - if (n>='0' && n<='9') { - nums=String::chr(name[i])+nums; - } else { - break; - } - } - - int num=nums.to_int(); - if (num<1) - num=1; - else - num++; - - String nnsep = _get_name_num_separator(); - name = name.substr(0,name.length()-nums.length()).strip_edges(); - if ( name.substr(name.length()-nnsep.length(),nnsep.length()) == nnsep) { - name = name.substr(0,name.length()-nnsep.length()); - } - String attempt = (name + nnsep + itos(num)).strip_edges(); - - while(parent->has_node(attempt)) { - num++; - attempt = (name + nnsep + itos(num)).strip_edges(); - } - - dup->set_name(attempt); + dup->set_name(parent->validate_child_name(dup)); editor_data->get_undo_redo().add_do_method(parent,"_add_child_below_node",node, dup); for (List<Node*>::Element *F=owned.front();F;F=F->next()) { @@ -522,8 +481,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { ScriptEditorDebugger *sed = ScriptEditor::get_singleton()->get_debugger(); - editor_data->get_undo_redo().add_do_method(sed,"live_debug_duplicate_node",edited_scene->get_path_to(node),attempt); - editor_data->get_undo_redo().add_undo_method(sed,"live_debug_remove_node",NodePath(String(edited_scene->get_path_to(parent))+"/"+attempt)); + editor_data->get_undo_redo().add_do_method(sed,"live_debug_duplicate_node",edited_scene->get_path_to(node),dup->get_name()); + editor_data->get_undo_redo().add_undo_method(sed,"live_debug_remove_node",NodePath(String(edited_scene->get_path_to(parent))+"/"+dup->get_name())); //parent->add_child(dup); //reselect.push_back(dup); @@ -1109,6 +1068,7 @@ void SceneTreeDock::_do_reparent(Node* p_new_parent,int p_position_in_parent,Vec editor_data->get_undo_redo().create_action(TTR("Reparent Node")); List<Pair<NodePath,NodePath> > path_renames; + Vector<StringName> former_names; int inc=0; @@ -1118,6 +1078,7 @@ void SceneTreeDock::_do_reparent(Node* p_new_parent,int p_position_in_parent,Vec Node *node = p_nodes[ni]; fill_path_renames(node,new_parent,&path_renames); + former_names.push_back(node->get_name()); List<Node*> owned; node->get_owned_by(node->get_owner(),&owned); @@ -1140,7 +1101,7 @@ void SceneTreeDock::_do_reparent(Node* p_new_parent,int p_position_in_parent,Vec editor_data->get_undo_redo().add_do_method(new_parent,"move_child",node,p_position_in_parent+inc); ScriptEditorDebugger *sed = ScriptEditor::get_singleton()->get_debugger(); - String new_name = new_parent->validate_child_name(node->get_name()); + String new_name = new_parent->validate_child_name(node); editor_data->get_undo_redo().add_do_method(sed,"live_debug_reparent_node",edited_scene->get_path_to(node),edited_scene->get_path_to(new_parent),new_name,-1); editor_data->get_undo_redo().add_undo_method(sed,"live_debug_reparent_node",NodePath(String(edited_scene->get_path_to(new_parent))+"/"+new_name),edited_scene->get_path_to(node->get_parent()),node->get_name(),node->get_index()); @@ -1159,6 +1120,7 @@ void SceneTreeDock::_do_reparent(Node* p_new_parent,int p_position_in_parent,Vec editor_data->get_undo_redo().add_do_method(AnimationPlayerEditor::singleton->get_key_editor(),"set_root",node); editor_data->get_undo_redo().add_undo_method(new_parent,"remove_child",node); + editor_data->get_undo_redo().add_undo_method(node,"set_name",former_names[ni]); inc++; @@ -1360,7 +1322,7 @@ void SceneTreeDock::_create() { editor_data->get_undo_redo().add_undo_method(parent,"remove_child",child); - String new_name = parent->validate_child_name(child->get_type()); + String new_name = parent->validate_child_name(child); ScriptEditorDebugger *sed = ScriptEditor::get_singleton()->get_debugger(); editor_data->get_undo_redo().add_do_method(sed,"live_debug_create_node",edited_scene->get_path_to(parent),child->get_type(),new_name); editor_data->get_undo_redo().add_undo_method(sed,"live_debug_remove_node",NodePath(String(edited_scene->get_path_to(parent))+"/"+new_name)); @@ -1841,6 +1803,12 @@ void SceneTreeDock::_focus_node() { } } +void SceneTreeDock::open_script_dialog(Node* p_for_node) { + + scene_tree->set_selected(p_for_node,false); + _tool_selected(TOOL_SCRIPT); +} + void SceneTreeDock::_bind_methods() { ObjectTypeDB::bind_method(_MD("_tool_selected"),&SceneTreeDock::_tool_selected,DEFVAL(false)); diff --git a/tools/editor/scene_tree_dock.h b/tools/editor/scene_tree_dock.h index d92f12c34b..971013a568 100644 --- a/tools/editor/scene_tree_dock.h +++ b/tools/editor/scene_tree_dock.h @@ -175,6 +175,7 @@ public: SceneTreeEditor *get_tree_editor() { return scene_tree; } + void open_script_dialog(Node* p_for_node); SceneTreeDock(EditorNode *p_editor,Node *p_scene_root,EditorSelection *p_editor_selection,EditorData &p_editor_data); }; diff --git a/tools/editor/scene_tree_editor.cpp b/tools/editor/scene_tree_editor.cpp index e5a97fa26e..53bfe8cc57 100644 --- a/tools/editor/scene_tree_editor.cpp +++ b/tools/editor/scene_tree_editor.cpp @@ -254,7 +254,7 @@ void SceneTreeEditor::_cell_button_pressed(Object *p_item,int p_column,int p_id) String config_err = n->get_configuration_warning(); if (config_err==String()) return; - config_err=config_err.world_wrap(80); + config_err=config_err.word_wrap(80); warning->set_text(config_err); warning->popup_centered_minsize(); diff --git a/tools/editor/script_editor_debugger.cpp b/tools/editor/script_editor_debugger.cpp index da42f54095..c8170ca9a3 100644 --- a/tools/editor/script_editor_debugger.cpp +++ b/tools/editor/script_editor_debugger.cpp @@ -216,6 +216,8 @@ void ScriptEditorDebugger::debug_continue() { ERR_FAIL_COND(connection.is_null()); ERR_FAIL_COND(!connection->is_connected()); + OS::get_singleton()->enable_for_stealing_focus(EditorNode::get_singleton()->get_child_process_id()); + Array msg; msg.push_back("continue"); ppeer->put_var(msg); @@ -1087,6 +1089,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/editor/spatial_editor_gizmos.cpp b/tools/editor/spatial_editor_gizmos.cpp index 480d33fd0a..84803eb6db 100644 --- a/tools/editor/spatial_editor_gizmos.cpp +++ b/tools/editor/spatial_editor_gizmos.cpp @@ -422,8 +422,6 @@ bool EditorSpatialGizmo::intersect_ray(const Camera *p_camera,const Point2& p_po if (billboard_handle) { t.set_look_at(t.origin,t.origin+p_camera->get_transform().basis.get_axis(2),p_camera->get_transform().basis.get_axis(1)); } - Transform ti=t.affine_inverse(); - float min_d=1e20; int idx=-1; 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/pck/SCsub b/tools/pck/SCsub deleted file mode 100644 index cf98ae145d..0000000000 --- a/tools/pck/SCsub +++ /dev/null @@ -1,4 +0,0 @@ -Import('env') - -if env["tools"] == "yes": - env.add_source_files(env.tool_sources, "*.cpp") 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..de03046e16 100644 --- a/tools/translations/ar.po +++ b/tools/translations/ar.po @@ -33,6 +33,12 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "" @@ -156,19 +162,88 @@ msgid "Editing Signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "نداء" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -231,7 +306,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,19 +366,92 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -440,6 +600,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -488,7 +652,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 +1189,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 "" @@ -1075,10 +1241,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "نداء" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1197,6 +1359,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1272,11 +1440,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1535,14 +1718,6 @@ msgstr "" 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 "" @@ -1592,10 +1767,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 "" @@ -1941,14 +2112,6 @@ 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 "" @@ -2034,6 +2197,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2192,6 +2359,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2216,6 +2387,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2255,6 +2430,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3084,10 +3263,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3628,6 +3803,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4366,6 +4545,10 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4473,6 +4656,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4849,6 +5036,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5114,6 +5305,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5925,6 +6120,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5941,10 +6140,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5956,6 +6151,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..f1fdc9086a 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" @@ -35,6 +35,12 @@ msgid "step argument is zero!" msgstr "Стъпката на range() е нула!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp #, fuzzy msgid "Not a script with an instance" msgstr "Скриптът няма инстанция" @@ -165,19 +171,89 @@ msgid "Editing Signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 -msgid "Add Getter Property" +#, fuzzy +msgid "Condition" +msgstr "Преходи" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -240,9 +316,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,19 +378,93 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Имаше грешка при изнасяне на проекта!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -396,7 +560,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 +569,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 "" @@ -472,6 +639,13 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"Параметърът 'Path' трябва да сочи към действителен възел Particles2D, за да " +"работи." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -520,7 +694,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 +1231,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 "" @@ -1107,10 +1283,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1229,6 +1401,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1304,11 +1482,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Любими:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 +1572,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 +1703,7 @@ msgstr "" #: tools/editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "Обновяване на сцената" #: tools/editor/editor_data.cpp msgid "Storing local changes.." @@ -1518,7 +1711,7 @@ msgstr "" #: tools/editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "Обновяване на сцената.." #: tools/editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1568,14 +1761,6 @@ msgstr "" 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 "" @@ -1625,10 +1810,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 +1844,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 +1856,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 +1896,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "Запазване на сцената" #: tools/editor/editor_node.cpp msgid "Analyzing" @@ -1838,7 +2019,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "Отваряне на сцена" #: tools/editor/editor_node.cpp msgid "Open Base Scene" @@ -1846,7 +2027,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "" +msgstr "Бързо отваряне на сцена.." #: tools/editor/editor_node.cpp msgid "Quick Open Script.." @@ -1858,11 +2039,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 +2051,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 +2067,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "Изход" #: tools/editor/editor_node.cpp msgid "Exit the editor?" @@ -1910,7 +2091,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "" +msgstr "Бързо пускане на сцена.." #: tools/editor/editor_node.cpp msgid "" @@ -1920,7 +2101,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 +2115,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,21 +2148,13 @@ 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." 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 "" @@ -1995,7 +2168,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "Нова сцена" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." @@ -2003,19 +2176,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 +2229,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Project Settings" -msgstr "" +msgstr "Настройки на проекта" #: tools/editor/editor_node.cpp msgid "Revert Scene" @@ -2064,11 +2237,15 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Quit to Project List" +msgstr "Изход до списъка с проекти" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" 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 +2257,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 +2269,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 +2286,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 +2303,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,23 +2391,27 @@ 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" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" #: tools/editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "Относно" #: tools/editor/editor_node.cpp msgid "Alerts when an external resource has changed." @@ -2249,6 +2430,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2288,13 +2473,17 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Възел" + #: tools/editor/editor_node.cpp msgid "Output" 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 +2499,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 +2592,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 +2636,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 +2704,7 @@ msgstr "" #: tools/editor/filesystem_dock.cpp msgid "Re-Import.." -msgstr "" +msgstr "Повторно внасяне.." #: tools/editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2661,7 +2851,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 +2976,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 +3016,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 +3029,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 +3053,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 +3109,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 +3121,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 +3133,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 +3157,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 +3187,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 +3260,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 +3268,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 +3296,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" @@ -3117,10 +3307,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3436,7 +3622,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" @@ -3661,6 +3847,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -3793,11 +3983,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 +4524,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.." @@ -4399,6 +4589,11 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "Избиране на всичко" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4412,7 +4607,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 +4631,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,13 +4694,17 @@ 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 "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4882,6 +5081,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5063,7 +5266,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" @@ -5147,6 +5350,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5328,11 +5535,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 +5583,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Project Export Settings" -msgstr "" +msgstr "Настройки за изнасяне на проекта" #: tools/editor/project_export.cpp msgid "Target" @@ -5384,7 +5591,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Export to Platform" -msgstr "" +msgstr "Изнасяне към платформа" #: tools/editor/project_export.cpp msgid "Resources" @@ -5392,23 +5599,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 +5780,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Export.." -msgstr "" +msgstr "Изнасяне.." #: tools/editor/project_export.cpp msgid "Project Export" @@ -5597,7 +5804,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 +5824,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 +6018,7 @@ msgstr "" #: tools/editor/project_settings.cpp msgid "Settings saved OK." -msgstr "" +msgstr "Настройките са запазени." #: tools/editor/project_settings.cpp msgid "Add Translation" @@ -5958,6 +6165,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Нова сцена" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5974,10 +6186,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5989,6 +6197,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 +6269,7 @@ msgstr "" #: tools/editor/run_settings_dialog.cpp msgid "Scene Run Settings" -msgstr "" +msgstr "Настройки за пускане на сцена" #: tools/editor/scene_tree_dock.cpp msgid "OK :(" @@ -6368,7 +6586,7 @@ msgstr "" #: tools/editor/script_editor_debugger.cpp msgid "Errors" -msgstr "" +msgstr "Грешки" #: tools/editor/script_editor_debugger.cpp msgid "Child Process Connected" @@ -6392,7 +6610,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 +6638,7 @@ msgstr "" #: tools/editor/script_editor_debugger.cpp msgid "Value" -msgstr "" +msgstr "Стойност" #: tools/editor/script_editor_debugger.cpp msgid "Monitors" @@ -6452,7 +6670,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..19861e2158 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-09-02 13:47+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" @@ -16,7 +16,7 @@ msgstr "" "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" +"X-Generator: Weblate 2.8\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -33,6 +33,12 @@ msgid "step argument is zero!" msgstr "ধাপ মান শূন্য!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "ইনস্ট্যান্স বিহীন স্ক্রিপ্ট" @@ -65,100 +71,140 @@ 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:" -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 "ফাংশনের (Function) নতুন নামকরণ করুন" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "" +msgstr "চলক/ভেরিয়েবল-এর নামান্তর করুন" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "" +msgstr "সংকেত/সিগন্যাল-এর নামান্তর করুন" #: 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 "সংকেত/সিগন্যাল সংযোজন করুন" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Function" -msgstr "নির্বাচিত সমূহ অপসারণ করুন" +msgstr "ফাংশন (Function) অপসারণ করুন" #: 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 "সংকেত (Signal) অপসারণ করুন" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "" +msgstr "সংকেত/সিগন্যাল সম্পাদন:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Expression" +msgstr "অ্যানিমেশনের (Anim) ট্র্যানজিশন/স্থানান্তরণ পরিবর্তন করুন" #: 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 "" +"গেটার (Getter) ফেলতে/নামাতে মেটা কী (Meta) চাপুন। জেনেরিক সিগনেচার (generic " +"signature) ফেলতে/নামাতে শিফট কী (Shift) চাপুন।" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"গেটার (Getter) ফেলতে/নামাতে কন্ট্রোল কী (Ctrl) চাপুন। জেনেরিক সিগনেচার (generic " +"signature) ফেলতে/নামাতে শিফট কী (Shift) চাপুন।" + +#: 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 @@ -166,11 +212,49 @@ 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 -msgid "Add Getter Property" +#, fuzzy +msgid "Condition" +msgstr "অনুবাদসমূহ" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -224,9 +308,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 +317,21 @@ 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 msgid "Input type not iterable: " msgstr "" @@ -282,19 +377,94 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "ফন্টের আকার অগ্র্যহনযোগ্য।" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "ফন্টের আকার অগ্র্যহনযোগ্য।" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -478,6 +648,11 @@ msgstr "" "NavigationMeshInstance-কে অবশ্যই Navigation-এর অংশ অথবা অংশের অংশ হতে হবে। " "এটা শুধুমাত্র ন্যাভিগেশনের তথ্য প্রদান করে।" +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "Path এর দিক অবশ্যই একটি কার্যকর Particles2D এর দিকে নির্দেশ করাতে হবে।" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -532,7 +707,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 +1251,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 "" @@ -1126,10 +1303,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1248,6 +1421,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1323,11 +1502,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1589,14 +1783,6 @@ msgstr "" 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 "" @@ -1646,10 +1832,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 "" @@ -1995,14 +2177,6 @@ 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 "" @@ -2088,6 +2262,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2246,6 +2424,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2270,6 +2452,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2309,6 +2495,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3138,10 +3328,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3579,9 +3765,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 +3785,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" @@ -3683,6 +3867,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4421,6 +4609,11 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "সবগুলি বাছাই করুন" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4528,6 +4721,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4904,6 +5101,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5169,6 +5370,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5980,6 +6185,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5996,10 +6205,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -6011,6 +6216,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 "" @@ -6216,9 +6429,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..9922663465 --- /dev/null +++ b/tools/translations/ca.po @@ -0,0 +1,6837 @@ +# Catalan 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. +# +# Roger BR <drai_kin@hotmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-09-11 09:26+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 "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: 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 +#, fuzzy +msgid "Change Expression" +msgstr "Canvia Transició" + +#: 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 "" +"Retén Meta per dipositar un mètode Accessor (Getter). Retén Maj per " +"dipositar una firma genèrica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Retén Ctrl per dipositar un mètode Accessor (Getter). Retén Maj per " +"dipositar una firma genèrica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "Retén Meta per dipositar una referència simple al node." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "Retén Ctrl per dipositar una referència simple al node." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "Retén Meta per dipositar una variable d'Actualització (Setter)." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "Retén Ctrl per dipositar una Variable d'Actualització (Setter)." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "Afegeix Node de Precàrrega" + +#: 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 "Afegeix Propietat d'Accés (Getter)" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "Afegeix Propietat d'Actualització (Setter)" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Condition" +msgstr "Transició" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Retorn:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Crida" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +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 "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 "Copia Nodes" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "Talla els Nodes" + +#: 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)." + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just pressed" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Nom no vàlid." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "La mida de la lletra no és vàlida." + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Lletra personalitzada no vàlida." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +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 "" +"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 \"destinació 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 "" +"La Vista (Viewport) especificada en la propietat \"Camí\" (Path) ha " +"d'utilitzar el mode 'Destinació 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/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"Cal que la propietat Camí (Path) assenyali cap a un node Particles2D vàlid." + +#: 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 "" +"La Vista (Viewport) no és la Destinació 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 Destinació " +"de Renderització i assigneu-ne 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 "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 "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: 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_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favorits:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recents:" + +#: 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 +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 "No s'ha pogut escriure en el fitxer:" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "Format de fitxer desconegut:" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "Error en desar." + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "Desant Escena" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "Analitzant" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "Creant Miniatura" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" +"No s'ha pogut desar l'escena. Probablement, no s'han pogut establir totes " +"les dependències (instàncies)." + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "No s'ha pogut carregar el recurs." + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "No s'ha pogut carregar MeshLibrary per combinar les dades!!" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "Error en desar MeshLibrary!" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "No s'ha pogut carregar TileSet per combinar les dades!" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "Error en desar TileSet!" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "No s'ha pogut obrir el zip amb les plantilles d'exportació." + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "Carregant Plantilles d'Exportació" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "Error en desar els canvis!" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "S'han sobreescrit els Ajustos Predeterminats de l'Editor." + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "No s'ha trobat el nom de l'ajust!" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "S'ha restaurat la configuració predeterminada." + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "Copia Paràmetres" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "Enganxa Paràmetres" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "Enganxa Recurs" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "Copia Recurs" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "Crea'l Integrat" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "Crea SubRecurs Únic" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "Obre dins l'Ajuda" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "No s'ha definit cap escena per executar." + +#: 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 "" +"No s'ha definit cap escena principal. Seleccioneu-ne una.\n" +"És possible triar-ne una altra més endavant a \"Configuració del Projecte\" " +"en la categoria \"aplicació\"." + +#: 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 "" +"L'escena '%s' no existeix. Seleccioneu-ne una de vàlida.\n" +"És possible triar-ne una altra més endavant a \"Configuració del Projecte\" " +"en la categoria \"aplicació\"." + +#: 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 "" +"L'escena '%s' seleccionada no és un fitxer d'escena. Seleccioneu-ne un de " +"vàlid.\n" +"És possible triar-ne una altra més endavant a \"Configuració del Projecte\" " +"en la categoria \"aplicació\"." + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" +"L'escena actual no s'ha desat encara. Desa l'escena abans d'executar-la." + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "No s'ha pogut començar el subprocés!" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "Obre Escena" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "Obre Escena Base" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "Obertura Ràpida d'Escenes..." + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "Obertura Ràpida d'Scripts..." + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "Sí" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "Tanca l'Escena? (Es perdran els canvis sense desar)" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "Desa Escena com..." + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" +"Aquesta Escena no s'ha desat mai encara. Voleu desar-la abans d'executar-la?" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "Desa l'escena abans." + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "Desa els texts Traduïbles" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "Exporta Biblioteca de Models" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "Exporta el joc de Mosaics (Tiles)" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "Surt" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "Voleu Sortir de l'editor?" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "L'escena actual no s'ha desat. Vol obrir igualment?" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "No es pot recarregar una escena no desada." + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "Reverteix" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "No es pot desfer aquesta acció. Vol revertir igualament?" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "Execució Ràpida de l'Escena..." + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" +"Vol Obrir el Gestor de Projectes?\n" +"(Es perdran els canvis sense desar)" + +#: tools/editor/editor_node.cpp +msgid "Pick a Main Scene" +msgstr "Tria una Escena Principal" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "Uf..." + +#: 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 "" +"No s'ha pogut carregar l'escena: No es troba dins del camí del projecte. " +"Utilitzeu 'Importa' per obrir l'escena i deseu-la dins del camí del projecte." + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "No s'ha pogut carregar l'escena." + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "Escena '%s' té dependències no vàlides:" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "Desar Disposició (Layout)" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "Elimina Disposició (Layout)" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "Predeterminat" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "Canvia la pestanya d'escena" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "%d fitxer(s) més" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "%d fitxer(s) o directori(s) més" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "Escena" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "Vés a l'escena oberta anteriorment." + +#: tools/editor/editor_node.cpp +msgid "Next tab" +msgstr "Pestanya Següent" + +#: tools/editor/editor_node.cpp +msgid "Previous tab" +msgstr "Pestanya Anterior" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "Operacions amb fitxers d'escena." + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "Nova Escena" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "Nova Escena heretada..." + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "Obre Escena..." + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "Desa Escena" + +#: tools/editor/editor_node.cpp +msgid "Save all Scenes" +msgstr "Desa Totes les Escenes" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "Tanca l'Escena" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "Tanca i Vés a l'Escena anterior" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "Obre Recent" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "Filtrat Ràpid de Fitxers..." + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "Converteix a..." + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "Cadenes Traduïbles..." + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "Biblioteca de Models (MeshLibrary)..." + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "Joc de Mosaics (TileSet)..." + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_text_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "Refés" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "Executa Script" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "Configuració del Projecte" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "Reverteix Escena" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "Surt a la Llista de Projectes" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Mode Lliure de Distraccions" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "Importa actius al projecte." + +#: 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 "Importa" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "Eines vàries o d'escena." + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "Eines" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "Exporta el projecte a diverses plataformes." + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "Exporta" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "Reprodueix el projecte." + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "Reprodueix" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "Pausa l'escena" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "Pausa Escena" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "Atura l'escena." + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "Atura" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "Reprodueix l'escena editada." + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "Reprodueix Escena" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "Reprodueix escena personalitzada" + +#: tools/editor/editor_node.cpp +msgid "Play Custom Scene" +msgstr "Reprodueix Escena Personalitzada" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "Opcions de Depuració (Debug)" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "Desplega amb Depuració 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 "" +"En ser exportat o desplegat, l'executable resultant intenta connectar-se a " +"l'IP d'aquest equip per iniciar-ne la depuració." + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "Desplegament Reduït amb Sistema de Fitxers en Xarxa" + +#: 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 "" +"Amb aquesta opció activada, 'Exportar' o 'Desplegar' generen un executable " +"reduït.\n" +"L'Editor proveeix el sistema de fitxers del projecte a través de la xarxa.\n" +"En sistemes Android, 'Desplegar' utilitzarà el cable USB per millorar-ne el " +"rendiment. Aquesta opció ajuda a accelerar els cicles de prova i verificació " +"en jocs de gran mida." + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "Formes de Col·lisió Visibles" + +#: 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 "" +"Les formes de col·lisió i nodes de difusió de raigs (raycast) (per a 2D i " +"3D), son visibles durant l'execució del joc quan s'activa aquesta opció." + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "Navegació 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 "" +"Les malles i polígons de Navegació són visibles durant l'execució del joc " +"quan s'activa aquesta opció." + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "Sincronitza Canvis en Escenes" + +#: 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 "" +"En activar aquesta opció, els canvis fets en l'Editor es repliquen en el joc " +"en execució.\n" +"En usar-se remotament en un dispositiu, un sistema de fitxers en xarxa en " +"millora el rendiment." + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "Sincronitza Canvis en Scripts" + +#: 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 "" +"En activar aquesta opció, els scripts, en ser desats, es recarreguen en el " +"joc en execució.\n" +"En usar-se remotament en un dispositiu, un sistema de fitxers en xarxa en " +"millora el rendiment." + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "Configuració" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "Configuració de l'Editor" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "Disposició de l'Editor" + +#: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Mode Pantalla completa" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "Instal·la Plantilles d'Exportació" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "Quant a" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "Alerta en canviar un recurs extern." + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "Gira en repintar-se la finestra de l'editor!" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "Actualitza Sempre" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "Actualitza Canvis" + +#: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "Inspector" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "Crea un nou recurs en memòria i edita'l." + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "Carrega un recurs des del disc i edita'l." + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "Desa el recurs editat ara." + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "Desa Com..." + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "Vés a l'anterior objecte editat de l'historial." + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "Vés al següent objecte editat de l'historial." + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "Historial d'objectes editats recentment." + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "Propietats de l'objecte." + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "SistemaDeFitxers" + +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "Sortida" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import" +msgstr "ReImporta" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "Actualitza" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "Gràcies de la part de la Comunitat del Godot!" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "Gràcies!" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "Importa Plantilles des d'un Fitxer ZIP" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "Exporta Projecte" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "Exporta Biblioteca" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "Combina amb Existents" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "Contrasenya:" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "Obre i Executa un Script" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "Errors de Càrrega" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "Connectors Instal·lats:" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "Versió:" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "Autor:" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "Estat:" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "Atura Perfilació" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "Comença Perfilació" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "Mesura:" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "Duració del Fotograma (s)" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "Temps Mitjà (s)" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "% del Fotograma" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "% del Fotograma Fix" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "Temps:" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "Inclusiu" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "Propi" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "Fotograma núm.:" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "Espera que s'acabi l'anàlisi." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "S'ha de desar l'escena abans de reimportar-la." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "Desa i ReImporta" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "ReImporta Recursos Modificats" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "Escriu la lògica en el mètode _run()." + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "Ja hi ha un escena editada." + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "No s'ha pogut instanciar l'script:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "Podria mancar la paraula clau 'tool'?" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "No s'ha pogut executar l'script:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "Podria mancar el mètode '_run'?" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "Predeterminat (Idèntic a l'Editor)" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "Selecciona Node(s) per Importar" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "Camí de l'Escena:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "Importa des del Node:" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" +"No s'ha pogut escriure el fitxer file_type_cache.cch. No es desara el cau de " +"tipus de fitxers!" + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" +"Els fitxers d'origen i destinació són els mateixos. No s'ha produït cap " +"acció." + +#: tools/editor/filesystem_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "El camí d'origen i destinació es idèntic. No s'ha produït cap acció." + +#: tools/editor/filesystem_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "No es poden moure directoris en si mateixos." + +#: tools/editor/filesystem_dock.cpp +msgid "Can't operate on '..'" +msgstr "No es pot operar en '..'" + +#: tools/editor/filesystem_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "Tria un Nou Nom i Ubicació per a:" + +#: tools/editor/filesystem_dock.cpp +msgid "No files selected!" +msgstr "Cap fitxer seleccionat!" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance" +msgstr "Instància" + +#: tools/editor/filesystem_dock.cpp +msgid "Edit Dependencies.." +msgstr "Edita Dependències..." + +#: tools/editor/filesystem_dock.cpp +msgid "View Owners.." +msgstr "Mostra Propietaris..." + +#: tools/editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "Copia Camí" + +#: tools/editor/filesystem_dock.cpp +msgid "Rename or Move.." +msgstr "Renomena o Mou..." + +#: tools/editor/filesystem_dock.cpp +msgid "Move To.." +msgstr "Mou cap a..." + +#: tools/editor/filesystem_dock.cpp +msgid "Info" +msgstr "Informació" + +#: tools/editor/filesystem_dock.cpp +msgid "Show In File Manager" +msgstr "Mostra en el Gestor de Fitxers" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Import.." +msgstr "ReImporta..." + +#: tools/editor/filesystem_dock.cpp +msgid "Previous Directory" +msgstr "Directori Anterior" + +#: tools/editor/filesystem_dock.cpp +msgid "Next Directory" +msgstr "Directori Següent" + +#: tools/editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "ReAnalitza Sistema de Fitxers" + +#: tools/editor/filesystem_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "Canvia l'estat del directori a Preferit" + +#: tools/editor/filesystem_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "Instancia les escenes seleccionades com a filles del node seleccionat." + +#: tools/editor/filesystem_dock.cpp +msgid "Move" +msgstr "Mou" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "Afegeix al Grup" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "Treu del Grup" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "Cap màscara de bits per importar!" + +#: 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 "El camí de Destinació és buit." + +#: 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 "El camí de Destinació ha de ser un camí de recursos complet." + +#: 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 "El camí de Destinació ha d'existir." + +#: 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 "El camí per desar és buit!" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "Importa Màscares de Bit" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "Textures Font:" + +#: 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 "Camí de Destinació:" + +#: 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 "Accepta" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "Màscara de bits" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "Cap fitxer de lletra font!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "Cap recurs de Lletra!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"Invalid file extension.\n" +"Please use .fnt." +msgstr "" +"Extensió de fitxer no vàlida.\n" +"Utilitzeu .fnt." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "No es pot carregar/processar la lletra." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "No s'ha pogut desar la lletra." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "Lletra:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "Mida de la lletra:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "Recurs Objectiu:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" +"«Dóna amor que seràs feliç!». Això, il·lús veí i company geniüt, ja és un " +"lluït rètol d'onze kWh." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "Prova:" + +#: 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 "Opcions:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "Importa lletra" + +#: 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 "" +"Aquest fitxer ja és un fitxer de lletra de Godot. Proveïu un fitxer de tipus " +"BMFont." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "No s'ha pogut obrir com a fitxer BMFont." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "Lletra personalitzada no vàlida." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "Lletra" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "Cap malla per importar!" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "Importa una Malla" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "Malla/es :" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "Malla" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "Superfície %d" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "No s'ha trobat cap mostra d'Àudio per importar!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "Importa Mostra d'Àudio" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "Mostra/es d'Origen:" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "Mostra d'Àudio" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "Nou Clip" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "Opcions d'Animació" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy +msgid "Flags" +msgstr "Indicadors (flags)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "Fer Bake dels FPS:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "Optimitzador" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "Error Lineal Màxim" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "Error Angular Màxim" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "Angle Màxim" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "Clips" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "Inici/s" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "Final/s" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "Bucle" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "Filtres" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "El camí d'origen és buit." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "No s'ha pogut carregar l'script de post-importació." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "L'script de post-importació no és vàlid ." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "No s'ha pogut importar l'escena." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "Importa Escena 3D" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "Escena d'Origen:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "Igual que l'Escena de Destinació" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "Compartit" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "Directori per a Textures escollit:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "Script de Post-Processat:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "Tipus de Node Arrel Personalitzat:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "Auto" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "Manquen els següents Fitxers:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "Importa Igualment" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "Importa i Obre" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" +"No s'ha desat l'escena editada. Vol obrir l'escena importada igualment?" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "Importa Escena" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "Important Escena..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "Executant Script Personalitzat..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "No s'ha pogut carregar l'script de post-importació:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "L'script de post-importació no és vàlid (comprova el terminal):" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "Error en l'execució de l'script de post-importació:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "Importa Imatge:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "No es pot importar un fitxer dins de si mateix:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "No s'ha pogut localitzar el camí: %s (ja és local)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "Desant..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "Animació d'Escenes 3D" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "Sense Compressió" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "Compressió sense Pèrdua (PNG)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "Compressió amb Pèrdua (WebP)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "Compressió (VRAM)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "Format de Textura" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "Qualitat de Compressió de Textura (WebP):" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "Opcions de Textura" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "Cal especificar algun fitxer!" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "Es necessita com a mínim un fitxer per a l'Atles." + +#: 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 "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 "Show 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 +#, fuzzy +msgid "Close All" +msgstr "Tanca" + +#: 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 +msgid "Pick Color" +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 Origin" +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 "1 Vista" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "2 Vistes" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "2 Vistes (Alt)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "3 Vistes" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "3 Vistes (Alt)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "4 Vistes" + +#: 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 "Configuració de Desplaçament" + +#: 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 "Configuració de la Vista" + +#: 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 "Theme" +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 "Configuració d'Exportació de Projectes" + +#: 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 "No s'ha pogut desar la configuració." + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "Configuració desada correctament." + +#: 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 "Configuració del Projecte (engine.cfg)" + +#: 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 +#, fuzzy +msgid "New Script" +msgstr "Executa Script" + +#: 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 "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 "Configuració d'Execució d'Escenes" + +#: 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..0975e3c550 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" @@ -33,6 +33,12 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "Skript nemá instanci" @@ -61,113 +67,193 @@ 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 +#, fuzzy +msgid "Change Expression" +msgstr "Animace: změna přechodu" #: 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 "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 +#, fuzzy +msgid "Condition" +msgstr "Přechod" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Vrátit:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Volat" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -177,23 +263,23 @@ msgstr "" #: 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 +292,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,50 +347,125 @@ 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 "" +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 "Vlastní uzel nemá metodu _step(), takže nelze postupovat grafem." #: modules/visual_script/visual_script_nodes.cpp msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Neplatný název." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Neplatná velikost fontu." + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -422,7 +597,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 "" @@ -470,6 +645,13 @@ msgstr "" "NavigationMeshInstance musí být dítětem nebo vnoučetem uzlu Navigation. " "Poskytuje pouze data pro navigaci." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"Aby ParticleAttractor2D fungoval, musí vlastnost path ukazovat na platný " +"uzel Particles2D." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -524,7 +706,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 +781,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 +915,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 +927,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 +1000,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 +1090,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 +1118,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 +1214,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 +1226,128 @@ 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 "" - -#: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" +msgstr "Seznam metod '%s':" #: 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 +1355,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 +1387,47 @@ 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 "Je nutné zadat metodu v cílovém uzlu!" + +#: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." msgstr "" #: 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 +1435,148 @@ 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 "Vytvořit nový" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" 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 "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 +1584,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 +1629,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" @@ -1578,14 +1787,6 @@ msgstr "" 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 "" @@ -1635,10 +1836,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 "" @@ -1984,14 +2181,6 @@ 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 "" @@ -2077,6 +2266,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2235,6 +2428,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2259,6 +2456,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2298,6 +2499,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3127,10 +3332,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3671,6 +3872,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4409,6 +4614,11 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "Zavřít" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4516,6 +4726,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4892,6 +5106,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5157,6 +5375,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5968,6 +6190,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5984,10 +6210,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5999,6 +6221,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..3294ca2105 --- /dev/null +++ b/tools/translations/da.po @@ -0,0 +1,6760 @@ +# 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 "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: 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 +#, fuzzy +msgid "Change Expression" +msgstr "Anim Skift Overgang" + +#: 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 +#, fuzzy +msgid "Condition" +msgstr "Overgang" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Tilbage:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Kald" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +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 "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)." + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just pressed" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Ugyldigt index egenskabsnavn." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Ugyldig skriftstørrelse." + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +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 "" +"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/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "Egenskaben Path skal pege på en gyldig Particles2D node for at virke." + +#: 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 "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 "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: 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_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "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 +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 "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 "Distraction Free Mode" +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 "Toggle Fullscreen" +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 "Disable Update Spinner" +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 tools/editor/node_dock.cpp +msgid "Node" +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 "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 "Show 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 +#, fuzzy +msgid "Close All" +msgstr "Luk" + +#: 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 +msgid "Pick Color" +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 Origin" +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 "Theme" +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 "New Script" +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 "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..12351973d5 100644 --- a/tools/translations/de.po +++ b/tools/translations/de.po @@ -2,15 +2,18 @@ # 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. +# No need for a name <endoplasmatik@gmx.net>, 2016. # So Wieso <sowieso@dukun.de>, 2016. # Timo Schwarzer <account@timoschwarzer.com>, 2016. # viernullvier <hannes.breul+github@gmail.com>, 2016. @@ -19,7 +22,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-09-30 03:13+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 +31,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.9-dev\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -39,11 +42,18 @@ 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 "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" @@ -51,69 +61,75 @@ 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 Ressourcendatei basierend" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "Ungültiges Instanzverzeichnisformat (@path fehlt)" +msgstr "Ungültiges Instanz-Verzeichnisformat (@path fehlt)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" msgstr "" -"Ungültiges Instanzverzeichnisformat (Skript in @path kann nicht geladen " +"Ungültiges Instanz-Verzeichnisformat (Skript in @path kann nicht geladen " "werden)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "Ungültiges Instanzverzeichnisformat (ungültiges Skript in @path)" +msgstr "Ungültiges Instanz-Verzeichnisformat (ungültiges Skript in @path)" #: modules/gdscript/gd_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" -msgstr "Ungültiges Instanzverzeichnisformat (ungültige Unterklasse)" +msgstr "Ungültiges Instanz-Verzeichnisformat (ungültige Unterklasse)" #: modules/visual_script/visual_script.cpp 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 +137,151 @@ 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 "Change Expression" +msgstr "Typ ändern" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "Node" +msgstr "Node hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Alt-Taste gedrückt halten, um einen Getter zu setzen. Umschalt-Taste halten, " +"um eine allgemeine Signatur zu setzen." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Strg-Taste halten um einen Getter zu setzen. Umschalt-Taste halten um eine " +"allgemeine Signatur zu setzen." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "Alt-Taste halten um einfache Referenz zu Node hinzuzufügen." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "Strg-Taste halten um einfache Referenz zu Node hinzuzufügen." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "Alt-Taste halten um einen Variablen-Setter zu setzen." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "Strg-Taste halten um einen Variablen-Setter zu setzen." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "Preload-Node hinzufügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node(s) From Tree" -msgstr "Node aus Szene" +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 +#, fuzzy +msgid "Condition" +msgstr "Animation kopieren" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +#, fuzzy +msgid "Switch" +msgstr "Tonhöhe" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Rückgabe:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Aufruf" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Setzen" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Setzen" + +#: 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 +291,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 +300,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,96 +321,182 @@ 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 "Node-Typ finden" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "Nodes kopieren" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "Nodes trennen" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" +msgstr "Nodes einfügen" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Eingabetyp nicht wiederholbar: " #: 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 "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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"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." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Fehler beim Schreiben des Projekt-PCK!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Ungültiger Name." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Ungültige Schriftgröße." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ungültiger Pfad" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Eigene Schriftart-Quelle ist ungültig." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -337,7 +504,7 @@ 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 +512,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 +522,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 +537,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 +555,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 +568,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 +584,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 +616,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 +632,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 +641,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 +653,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 +671,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 +690,36 @@ 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/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "Die Pfad-Eigenschaft muss auf ein gültiges Particles2D-Node verweisen." #: 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 +743,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 +752,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 +827,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 +836,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 +857,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 +935,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 +1027,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" @@ -871,7 +1044,7 @@ msgstr "Auswahl duplizieren" #: tools/editor/animation_editor.cpp msgid "Duplicate Transposed" -msgstr "Transponiert duplizieren" +msgstr "Transponierte duplizieren" #: tools/editor/animation_editor.cpp msgid "Remove Selection" @@ -895,15 +1068,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 +1125,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 +1146,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 +1170,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 +1222,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 +1247,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 +1287,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,25 +1336,21 @@ 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':" msgstr "Methodenliste für '%s':" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Aufruf" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "Methodenliste:" @@ -1206,7 +1376,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 +1416,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 +1454,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:" @@ -1299,8 +1469,14 @@ msgid "Method in target Node must be specified!" msgstr "Methode in Ziel-Node muss angegeben werden!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: 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 +1503,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" @@ -1374,11 +1550,26 @@ msgstr "Signale" msgid "Create New" msgstr "Neu erstellen" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favoriten:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Kürzlich:" + #: 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 +1592,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 +1613,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 +1671,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 +1743,6 @@ msgid "Rename Autoload" msgstr "Autoload umbenennen" #: tools/editor/editor_autoload_settings.cpp -#, fuzzy msgid "Toggle AutoLoad Globals" msgstr "Autoload-Globals umschalten" @@ -1589,7 +1779,7 @@ msgstr "Singleton" #: tools/editor/editor_autoload_settings.cpp msgid "List:" -msgstr "" +msgstr "Liste:" #: tools/editor/editor_data.cpp msgid "Updating Scene" @@ -1625,7 +1815,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,25 +1830,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" - -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Favoriten:" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Kürzlich:" +msgstr "Favorit nach unten schieben" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" @@ -1666,7 +1847,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 +1880,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 +1936,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 +1964,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 +1990,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 +1999,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 +2007,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 +2015,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 +2027,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 +2035,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 +2103,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 +2111,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 +2135,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 +2147,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 +2172,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 +2185,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 +2208,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 +2218,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 +2234,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)" @@ -2077,21 +2254,12 @@ msgid "Go to previously opened scene." msgstr "Gehe zu vorher geöffneter Szene." #: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "Vollbildmodus" - -#: tools/editor/editor_node.cpp -msgid "Distraction Free Mode" -msgstr "Ablenkungsfreier Modus" - -#: tools/editor/editor_node.cpp 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 +2271,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 +2287,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 +2324,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 +2332,19 @@ 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 "Distraction Free Mode" +msgstr "Ablenkungsfreier Modus" #: 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 +2360,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 +2368,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" @@ -2204,7 +2376,7 @@ msgstr "Exportieren" #: tools/editor/editor_node.cpp msgid "Play the project." -msgstr "Projekt starten." +msgstr "Projekt abspielen." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -2213,7 +2385,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 +2393,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 +2402,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 +2413,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 +2430,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 +2478,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 +2489,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 +2503,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 +2514,20 @@ 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 +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Vollbildmodus" #: 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 +2535,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" @@ -2374,20 +2550,24 @@ msgid "Update Changes" msgstr "Änderungen aktualisieren" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" 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,31 +2575,35 @@ 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" msgstr "Dateisystem" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Node" + #: tools/editor/editor_node.cpp msgid "Output" 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 +2611,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 +2619,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 +2627,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 +2639,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 +2663,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 +2679,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 %" @@ -2515,7 +2699,7 @@ msgstr "Inklusive" #: tools/editor/editor_profiler.cpp msgid "Self" -msgstr "Self" +msgstr "Selbst" #: tools/editor/editor_profiler.cpp msgid "Frame #:" @@ -2523,7 +2707,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 +2715,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 +2747,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 +2755,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 +2809,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 +2825,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 +2837,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 +2906,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 +2919,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 +2939,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 +2974,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 +3003,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 +3020,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 +3032,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 +3040,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 +3048,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 +3089,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 +3097,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 +3105,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 +3121,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 +3150,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 +3179,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 +3195,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 +3203,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 +3215,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 +3231,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 +3243,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 +3259,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 +3295,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 +3307,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 +3315,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 +3339,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 +3358,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 +3375,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 +3388,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 +3404,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 +3412,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 +3424,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,11 +3432,7 @@ msgstr "Übersetzung" #: tools/editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "MultiNode Setzen" - -#: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Node" +msgstr "MultiNode setzen" #: tools/editor/node_dock.cpp msgid "Groups" @@ -3262,15 +3440,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 +3456,46 @@ 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 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 +3511,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 +3523,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 +3531,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 +3542,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 +3571,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 +3591,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 +3602,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 +3611,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,11 +3637,11 @@ 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" -msgstr "Mix" +msgstr "Mischen" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Auto Restart:" @@ -3491,15 +3666,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):" @@ -3515,11 +3690,11 @@ msgstr "Eingang hinzufügen" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Clear Auto-Advance" -msgstr "" +msgstr "Lösche Auto-Fortschritt" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "" +msgstr "Setze Auto-Fortschritt" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Delete Input" @@ -3539,39 +3714,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 +3754,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 +3762,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 +3770,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 +3786,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 +3794,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 #" @@ -3635,7 +3810,7 @@ msgstr "Nachbearbeiten von Textur #" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "Bake!" -msgstr "Bake!" +msgstr "Backen!" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "Reset the lightmap octree baking process (start over)." @@ -3653,7 +3828,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 +3837,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 +3853,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 +3872,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 +3886,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 +3913,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 +3930,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 +3948,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 +3961,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.." @@ -3810,12 +3980,17 @@ msgid "Clear Bones" msgstr "Knochen entfernen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Knochen erstellen" + +#: 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 +4003,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 +4027,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 +4074,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 +4082,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 +4095,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 +4103,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 +4121,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 +4137,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 +4161,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 +4185,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 +4232,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 +4258,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)." @@ -4101,9 +4273,8 @@ msgid "Parent has no solid faces to populate." msgstr "Elternelement hat keine soliden Faces zu besetzen." #: tools/editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "Couldn't map area." -msgstr "Gebiet konnte nicht abgebildet werden." +msgstr "Bereich konnte nicht abgebildet werden." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" @@ -4114,14 +4285,12 @@ msgid "Select a Target Surface:" msgstr "Ziel-Oberfläche auswählen:" #: tools/editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "Populate Surface" -msgstr "Oberfläche besetzen" +msgstr "Oberfläche füllen" #: tools/editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "Populate MultiMesh" -msgstr "MultiMesh besetzen" +msgstr "MultiMesh füllen" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" @@ -4160,9 +4329,8 @@ msgid "Random Scale:" msgstr "Zufällige Skalieren:" #: tools/editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "Populate" -msgstr "Besetzen" +msgstr "Füllen" #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Navigation Polygon" @@ -4237,9 +4405,8 @@ msgid "Emission Positions:" msgstr "Emissionsorte:" #: tools/editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Emission Fill:" -msgstr "Emissionsausschüttung" +msgstr "Emissionsfüllung:" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Surface" @@ -4553,9 +4720,13 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "Schließen" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4669,6 +4840,11 @@ msgstr "" "Eingebettete Skripte können nur bearbeitet werden wenn die entsprechende " "Szene geladen ist" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "Farbe" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "Schiebe hoch" @@ -5046,11 +5222,14 @@ msgstr "Animations-Schlüsselbild einfügen" #: tools/editor/plugins/spatial_editor_plugin.cpp #, fuzzy +msgid "Focus Origin" +msgstr "Zeige Ursprung" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" -msgstr "zur Auswahl springen" +msgstr "Auswahl fokussieren" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Selection With View" msgstr "Auswahl auf Ansicht ausrichten" @@ -5283,7 +5462,6 @@ msgid "Step:" msgstr "Schritt:" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Separation:" msgstr "Trennung:" @@ -5301,24 +5479,29 @@ 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 +#, fuzzy +msgid "Theme" +msgstr "Motiv speichern" #: 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 +5509,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 +5545,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 +5567,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 +5604,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 +5616,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 +5685,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 +5733,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 +5741,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 +5767,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 +5790,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 +5823,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 +5859,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 +5899,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 +5911,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 +5939,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 +5967,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 +5999,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 +6031,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 +6051,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 +6063,7 @@ msgstr "Verlassen" #: tools/editor/project_settings.cpp msgid "Key " -msgstr "" +msgstr "Taste " #: tools/editor/project_settings.cpp msgid "Joy Button" @@ -5886,31 +6071,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 +6103,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 +6119,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 +6143,23 @@ 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 msgid "Toggle Persisting" -msgstr "" +msgstr "Persistente an- und ausschalten" #: tools/editor/project_settings.cpp msgid "Error saving settings." @@ -5990,27 +6175,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 +6211,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 +6231,7 @@ msgstr "Gerät:" #: tools/editor/project_settings.cpp msgid "Index:" -msgstr "" +msgstr "Index:" #: tools/editor/project_settings.cpp msgid "Localization" @@ -6066,7 +6251,7 @@ msgstr "Hinzufügen.." #: tools/editor/project_settings.cpp msgid "Remaps" -msgstr "" +msgstr "Neu zuweisen" #: tools/editor/project_settings.cpp msgid "Resources:" @@ -6074,15 +6259,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 +6275,15 @@ msgstr "Erweiterungen" #: tools/editor/property_editor.cpp msgid "Preset.." -msgstr "" +msgstr "Voreinstellungen.." #: tools/editor/property_editor.cpp msgid "Ease In" -msgstr "" +msgstr "Einblenden" #: tools/editor/property_editor.cpp msgid "Ease Out" -msgstr "" +msgstr "Ausblenden" #: tools/editor/property_editor.cpp msgid "Zero" @@ -6106,19 +6291,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 +6311,77 @@ msgstr "Lade" #: tools/editor/property_editor.cpp msgid "Assign" -msgstr "" +msgstr "Zuweisen" + +#: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Nächstes Skript" #: 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 -msgid "Set" -msgstr "" - -#: 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 +msgid "Select Property" +msgstr "Eigenschaft auswählen" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "Methode auswählen" #: 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 +6393,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 +6417,189 @@ 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 msgid "This operation can't be done on the tree root." msgstr "" +"Diese Aktion kann nicht in 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 +6608,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 +6636,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 +6720,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 +6736,7 @@ msgstr "Fehler:" #: tools/editor/script_editor_debugger.cpp msgid "Source:" -msgstr "" +msgstr "Quelle:" #: tools/editor/script_editor_debugger.cpp msgid "Function:" @@ -6544,19 +6748,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 "Einzelbilder stapeln" #: tools/editor/script_editor_debugger.cpp msgid "Variable" @@ -6568,27 +6772,27 @@ 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 msgid "Remote Inspector" -msgstr "" +msgstr "Remote Inspektor" #: tools/editor/script_editor_debugger.cpp msgid "Live Scene Tree:" -msgstr "" +msgstr "Echtzeit Szenenbaum:" #: tools/editor/script_editor_debugger.cpp 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 +6800,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 +6824,74 @@ 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 msgid "Change Box Shape Extents" -msgstr "" +msgstr "Ändere Ausmaße 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 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..6c5e6b65c3 100644 --- a/tools/translations/de_CH.po +++ b/tools/translations/de_CH.po @@ -32,6 +32,12 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "" @@ -158,20 +164,91 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Expression" +msgstr "Typ ändern" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy 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 Getter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -237,9 +314,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,19 +376,93 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Fehler beim Schreiben des Projekts PCK!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -465,6 +630,11 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "Die Pfad-Variable muss auf einen gültigen Particles2D Node verweisen." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -516,7 +686,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 +1224,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 "" @@ -1104,10 +1276,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1226,6 +1394,12 @@ msgid "Method in target Node must be specified!" msgstr "Die Methode muss im Ziel Node definiert werden!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp #, fuzzy msgid "Connect To Node:" msgstr "Verbindung zu Node:" @@ -1302,11 +1476,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1565,14 +1754,6 @@ msgstr "" 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 "" @@ -1622,10 +1803,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 "" @@ -1971,14 +2148,6 @@ 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 "" @@ -2065,6 +2234,10 @@ msgid "Quit to Project List" msgstr "Zurück zur Projektliste" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "Assets zum Projekt importieren." @@ -2227,6 +2400,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2251,6 +2428,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2290,6 +2471,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Node" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3123,10 +3308,6 @@ msgid "MultiNode Set" msgstr "MultiNode Set" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Node" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3673,6 +3854,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4414,6 +4599,10 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4521,6 +4710,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4898,6 +5091,10 @@ msgid "Insert Animation Key" msgstr "Bild einfügen" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5163,6 +5360,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5975,6 +6176,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Script hinzufügen" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5991,10 +6197,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -6006,6 +6208,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..c02a679529 100644 --- a/tools/translations/es.po +++ b/tools/translations/es.po @@ -2,37 +2,51 @@ # 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 19:29+0000\n" +"Last-Translator: Swyter <swyterzone@gmail.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 "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" @@ -48,62 +62,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 +132,151 @@ 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 "Change Expression" +msgstr "Cambiar tipo" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "Agregar Nodo Hijo" +msgstr "Añadir nodo" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Mantén pulsado Meta para quitar un «Setter». Mantén pulsado Mayús para " +"quitar una firma genérica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Mantén pulsado Ctrl para quitar un «Getter». Mantén pulsado Mayús para " +"quitar una firma genérica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "Mantén pulsado Meta para quitar una referencia simple del nodo." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "Mantén pulsado Ctrl para quitar una referencia simple del nodo." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "Mantén pulsado Meta para quitar un «Setter» de variable." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "Mantén pulsado Ctrl para quitar un «Setter» de variable." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "Añadir nodo «Preload»" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node(s) From Tree" -msgstr "Nodo desde Escena" +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 +#, fuzzy +msgid "Condition" +msgstr "Copiar animación" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +#, fuzzy +msgid "Switch" +msgstr "Altura" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Devuelve:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Llamada" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Establecer" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Establecer" + +#: 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 +286,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,97 +315,186 @@ 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 Tyoe" -msgstr "Encontrar Siguiente" +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 "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 "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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"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)." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "¡Error al escribir el PCK de proyecto!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "El nombre no es correcto." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Tamaño de tipografía incorrecto." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ruta base incorrecta" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "El origen personalizado de tipografía no es correcto." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -384,8 +557,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 +569,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 +606,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 +672,22 @@ 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/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"La propiedad Path debe apuntar a un nodo Particles2D valido para funcionar." #: scene/3d/scenario_fx.cpp msgid "" @@ -521,8 +701,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 +718,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 "Notificación" #: 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 +773,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 +789,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 +818,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 +844,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 +893,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 +933,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 +943,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 +956,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 +1053,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 +1086,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 +1106,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 +1131,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 +1172,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):" @@ -1002,51 +1184,51 @@ msgstr "Paso (s):" #: tools/editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." -msgstr "Snap de cursor por pasos (en segundos)." +msgstr "Fijado 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 +1237,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 +1250,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 +1319,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 +1331,19 @@ 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':" - -#: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Llamar" +msgstr "Lista de métodos Para '%s':" #: 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 +1351,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 +1375,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 +1399,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 +1407,67 @@ 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 "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" #: 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 +1475,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 +1485,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 +1507,7 @@ msgstr "Diferido" #: tools/editor/connections_dialog.cpp msgid "Oneshot" -msgstr "Oneshot" +msgstr "Una vez" #: tools/editor/connections_dialog.cpp msgid "Connect" @@ -1327,19 +1515,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 +1540,51 @@ 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_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favoritos:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recientes:" #: 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 +1605,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 +1625,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 +1688,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 +1726,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 +1754,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 +1769,7 @@ msgstr "Nombre" #: tools/editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "Singleton" +msgstr "«Singleton»" #: tools/editor/editor_autoload_settings.cpp msgid "List:" @@ -1571,19 +1777,19 @@ 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.." -msgstr "Guardando cambios locales.." +msgstr "Guardando cambios locales…" #: tools/editor/editor_data.cpp msgid "Updating scene.." -msgstr "Actualizando escena.." +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,59 +1809,51 @@ 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" - -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Favoritos:" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Recientes:" +msgstr "Bajar favorito" #: 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 +1870,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 +1906,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 +1922,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 +1938,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 +1962,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 +1978,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 +2070,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 +2102,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 "Apertura rápida de escena…" #: tools/editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "Abrir Script Rapido.." +msgstr "Apertura rápida de script…" #: 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 +2159,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 +2175,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 "Ejecución rápida de escena…" #: 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 @@ -2051,14 +2248,6 @@ msgid "Go to previously opened scene." msgstr "Ir a la escena abierta previamente." #: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "Modo Pantalla Completa" - -#: tools/editor/editor_node.cpp -msgid "Distraction Free Mode" -msgstr "Modo Sin Distracciones" - -#: tools/editor/editor_node.cpp msgid "Next tab" msgstr "Pestaña siguiente" @@ -2072,55 +2261,55 @@ 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.." -msgstr "TileSet.." +msgstr "TileSet…" #: tools/editor/editor_node.cpp tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -2129,23 +2318,27 @@ 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 "Distraction Free Mode" +msgstr "Modo sin distracciones" #: 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 +2354,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 +2362,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 +2370,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 +2383,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 +2400,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 +2408,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 +2439,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 +2459,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 +2487,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 +2503,24 @@ 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 +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Modo pantalla completa" #: 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 +2536,15 @@ 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 "Disable Update Spinner" +msgstr "" #: tools/editor/editor_node.cpp msgid "Inspector" @@ -2363,11 +2564,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 +2584,11 @@ msgstr "Propiedades del objeto." #: tools/editor/editor_node.cpp msgid "FileSystem" -msgstr "FileSystem" +msgstr "SistDeArchivos" + +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Nodo" #: tools/editor/editor_node.cpp msgid "Output" @@ -2399,27 +2604,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 +2632,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 +2668,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 +2696,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 +2708,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 +2740,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,51 +2762,53 @@ 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 '..'" -msgstr "No se puede operar en '..'" +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,23 +2816,23 @@ 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.." -msgstr "Reimportando.." +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 +2849,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 +2893,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 +2902,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 +2915,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 +2943,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 +2970,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 +2986,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 +2995,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 +3016,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 +3028,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 +3040,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 +3052,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 +3068,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 +3093,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 +3101,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 +3117,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 +3133,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,27 +3185,27 @@ 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.." -msgstr "Guardando.." +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 +3213,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 +3241,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 +3293,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 +3313,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 +3337,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 +3349,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 +3369,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 +3382,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 +3390,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 +3418,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,11 +3430,7 @@ msgstr "Traducción" #: tools/editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "Setear MultiNodo" - -#: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Nodo" +msgstr "Establecer multinodo" #: tools/editor/node_dock.cpp msgid "Groups" @@ -3234,92 +3438,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 +3531,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 +3563,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 +3579,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 +3599,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 +3629,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 +3653,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 +3686,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 +3706,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,27 +3746,27 @@ 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.." -msgstr "Filtros.." +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 +3774,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,71 +3786,72 @@ 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" -msgstr "Configurar Snap" +msgstr "Ajustes de fijado" #: 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 +3863,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 +3871,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 +3896,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 +3918,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." @@ -3737,53 +3939,58 @@ msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto." #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "Usar Snap" +msgstr "Fijar a cuadrícula" #: 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" -msgstr "Usar Snap de Rotación" +msgstr "Fijar rotación" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "Usar Snap Relativo" +msgstr "Fijado relativo" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap.." -msgstr "Configurar Snap.." +msgstr "Configurar fijado…" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "Usar Pixel Snap" +msgstr "Adherir a píxeles" #: 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.." -msgstr "Esqueleto.." +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 +#, fuzzy +msgid "Show Bones" +msgstr "Crear 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,58 +3999,58 @@ 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):" -msgstr "Snap (Pixeles):" +msgstr "Fijar (Pixeles):" #: 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 "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 +4059,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 +4068,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,62 +4082,63 @@ 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.." -msgstr "Miniatura.." +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 +4148,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 +4262,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 +4282,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 +4290,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 +4350,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 +4379,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 +4391,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 +4423,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 +4446,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 +4534,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" @@ -4353,81 +4567,81 @@ msgstr "Limpiar UV" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Snap" -msgstr "Esnapear" +msgstr "Adherir a cuadrícula" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Enable Snap" -msgstr "Activar Snap" +msgstr "Adherir a cuadrícula" #: 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 +4674,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 +4700,56 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "Cerrar" #: 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 +4773,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 +4781,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 +4793,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 +4817,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 +4825,32 @@ 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 +#, fuzzy +msgid "Pick Color" +msgstr "Color" #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" @@ -4639,66 +4862,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 +5008,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 +5057,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 +5071,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 +5107,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 +5115,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 +5123,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 +5131,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 +5139,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 +5151,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 +5171,76 @@ 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 +#, fuzzy +msgid "Focus Origin" +msgstr "Ver origen" #: 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,163 +5248,163 @@ 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" -msgstr "Ajustes de Snap" +msgstr "Ajustes de fijado" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "Snap de Traslación:" +msgstr "Fijar desplazamiento:" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "Snap de Rotación (grados):" +msgstr "Fijar rotación (grados):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "Snap de Escala (%):" +msgstr "Fijar 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 "Transformar" #: 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 +5420,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,11 +5440,11 @@ 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:" -msgstr "Modo Snap:" +msgstr "Modo de fijado:" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "<None>" @@ -5222,19 +5452,19 @@ msgstr "<Ninguno>" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" -msgstr "Pixel Snap" +msgstr "Adherir a píxeles" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "Snap de Grilla" +msgstr "Adherir a cuadrícula" #: 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 +5476,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 +5488,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 @@ -5270,20 +5500,25 @@ msgid "Remove Item" msgstr "Remover Item" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Guardar tema" + +#: 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 +5530,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 +5554,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 +5576,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 +5605,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 +5617,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 +5669,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 +5682,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 +5706,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 +5742,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 +5758,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 +5795,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 +5807,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 +5831,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 +5839,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 +5851,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 +5867,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 +5875,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 +5891,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 +5899,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 +5907,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 +5923,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,15 +5931,15 @@ 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.." -msgstr "Exportar.." +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 +5947,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 +5975,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 +6011,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 +6019,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 +6057,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 +6077,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 +6109,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 +6153,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 +6177,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 +6225,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 +6241,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 +6257,7 @@ msgstr "Traducciones:" #: tools/editor/project_settings.cpp msgid "Add.." -msgstr "Agregar.." +msgstr "Añadir…" #: tools/editor/project_settings.cpp msgid "Remaps" @@ -6035,11 +6269,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,35 +6285,35 @@ 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.." -msgstr "Archivo.." +msgstr "Archivo…" #: tools/editor/property_editor.cpp msgid "Dir.." -msgstr "Dir.." +msgstr "Dir…" #: tools/editor/property_editor.cpp msgid "Load" @@ -6090,8 +6324,13 @@ msgid "Assign" msgstr "Asignar" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Script siguiente" + +#: 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 +6338,11 @@ 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" - -#: tools/editor/property_editor.cpp -msgid "Set" -msgstr "Setear" +msgstr "Activado" #: tools/editor/property_editor.cpp msgid "Properties:" @@ -6121,6 +6356,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 +6377,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 +6393,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 +6453,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 +6465,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 +6481,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 +6497,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 +6541,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 +6592,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 +6617,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 +6678,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 +6706,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 +6750,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 +6762,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 +6790,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 +6822,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 +6838,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 +6854,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 +6890,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..6c266e74a7 100644 --- a/tools/translations/es_AR.po +++ b/tools/translations/es_AR.po @@ -3,13 +3,15 @@ # This file is distributed under the same license as the Godot source code. # # Lisandro Lorea <lisandrolorea@gmail.com>, 2016. +# Roger BR <drai_kin@hotmail.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-09-04 12:31+0000\n" +"Last-Translator: Roger BR <drai_kin@hotmail.com>\n" "Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/" "godot-engine/godot/es_AR/>\n" "Language: es_AR\n" @@ -17,7 +19,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 @@ -35,6 +37,12 @@ msgid "step argument is zero!" msgstr "el argumento step es cero!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "No es un script con una instancia" @@ -70,40 +78,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 +124,151 @@ 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 "Change Expression" +msgstr "Cambiar Tipo" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "Agregar Nodo Hijo" +msgstr "Agregar Nodo" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Mantené pulsado Meta para depositar un Getter. Mantené pulsado Shift para " +"depositar una firma generica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Mantené pulsado Ctrl para depositar un Getter. Mantené pulsado Shift para " +"depositar una firma genérica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "Mantené pulsado Meta para depositar una referencia simple al nodo." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "Mantené pulsado Ctrl para depositar una referencia simple al nodo." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "Mantené pulsado Meta para depositar un Variable Setter." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "Mantené pulsado Ctrl para depositar un Variable Setter." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "Agregar Nodo Preload" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node(s) From Tree" -msgstr "Nodo desde Escena" +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 +#, fuzzy +msgid "Condition" +msgstr "Copiar Animación" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +#, fuzzy +msgid "Switch" +msgstr "Altura" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Retornar:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Llamar" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Setear" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Setear" + +#: 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 +278,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 +307,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 @@ -256,72 +328,161 @@ msgid "Toggle Breakpoint" 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 +msgid "Copy Nodes" +msgstr "Copiar Nodo" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "Cortar Nodos" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" +msgstr "Pegar Nodos" #: 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 "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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"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)." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Error al escribir el PCK de proyecto!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Nombre inválido." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Tamaño de tipografía inválido." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ruta base inválida" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Origen personalizado de tipografía inválido." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -509,6 +670,12 @@ msgstr "" "NavigationMeshInstance debe ser un hijo o nieto de un nodo Navigation. Solo " "provee datos de navegación." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"La propiedad Path debe apuntar a un nodo Particles2D valido para funcionar." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -563,7 +730,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 +1223,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 +1275,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:" @@ -1157,10 +1327,6 @@ msgid "Method List For '%s':" msgstr "Lista de Métodos Para '%s':" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Llamar" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "Lista de Métodos:" @@ -1264,7 +1430,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:" @@ -1279,6 +1445,12 @@ msgid "Method in target Node must be specified!" msgstr "El método en el Nodo objetivo debe ser especificado!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "Conectar a Nodo:" @@ -1354,11 +1526,26 @@ msgstr "Señales" msgid "Create New" msgstr "Crear Nuevo" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favoritos:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recientes:" + #: 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:" @@ -1629,14 +1816,6 @@ msgstr "Subir Favorito" msgid "Move Favorite Down" msgstr "Bajar Favorito" -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Favoritos:" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Recientes:" - #: tools/editor/editor_file_dialog.cpp msgid "Preview:" msgstr "Vista Previa:" @@ -1686,10 +1865,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:" @@ -2051,14 +2226,6 @@ msgid "Go to previously opened scene." msgstr "Ir a la escena abierta previamente." #: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "Modo Pantalla Completa" - -#: tools/editor/editor_node.cpp -msgid "Distraction Free Mode" -msgstr "Modo Sin Distracciones" - -#: tools/editor/editor_node.cpp msgid "Next tab" msgstr "Pestaña siguiente" @@ -2104,7 +2271,7 @@ 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.." @@ -2144,6 +2311,10 @@ msgid "Quit to Project List" msgstr "Salir a Listado de Proyecto" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Modo Sin Distracciones" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "Importar assets al proyecto." @@ -2235,7 +2406,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "Depoy Pequeño con Network FS" +msgstr "Deploy Pequeño con Network FS" #: tools/editor/editor_node.cpp msgid "" @@ -2322,6 +2493,11 @@ msgid "Editor Layout" msgstr "Layout del Editor" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Modo Pantalla Completa" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "Instalar Templates de Exportación" @@ -2346,6 +2522,10 @@ msgid "Update Changes" msgstr "Actualizar Cambios" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "Inspector" @@ -2385,6 +2565,10 @@ msgstr "Propiedades del objeto." msgid "FileSystem" msgstr "FileSystem" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Nodo" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "Salida" @@ -2431,7 +2615,7 @@ msgstr "Abrir y Correr un Script" #: tools/editor/editor_node.cpp msgid "Load Errors" -msgstr "Cargar Errores" +msgstr "Erroes de carga" #: tools/editor/editor_plugin_settings.cpp msgid "Installed Plugins:" @@ -3225,10 +3409,6 @@ msgid "MultiNode Set" msgstr "Setear MultiNodo" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Nodo" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "Grupos" @@ -3669,9 +3849,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 +3871,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 @@ -3778,6 +3955,11 @@ msgid "Clear Bones" msgstr "Reestablecer Huesos" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Crear Huesos" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "Crear Cadena IK" @@ -4513,9 +4695,13 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "Cerrar" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4629,6 +4815,11 @@ msgstr "" "Los scripts built-in solo pueden ser editados cuando la escena a la que " "pertenecen esta cargada" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "Color" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "Subir" @@ -5005,6 +5196,11 @@ msgid "Insert Animation Key" msgstr "Insertar Clave de Animación" #: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Focus Origin" +msgstr "Ver Origen" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "Foco en Selección" @@ -5270,6 +5466,11 @@ msgid "Remove Item" msgstr "Remover Item" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Guardar Tema" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "Agregar Items de Clases" @@ -5787,14 +5988,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 +6006,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 +6026,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" @@ -6090,6 +6290,11 @@ msgid "Assign" msgstr "Asignar" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Script siguiente" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "Error al cargar el archivo: No es un recurso!" @@ -6106,10 +6311,6 @@ msgid "On" msgstr "On" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "Setear" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "Propiedades:" @@ -6121,6 +6322,14 @@ msgstr "Global" msgid "Sections:" msgstr "Selecciones:" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "Seleccionar Propiedad" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "Seleccionar Método" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "No se pudo ejecutar la herramienta PVRTC:" @@ -6195,9 +6404,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 +6541,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 +6557,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 +6754,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 +6860,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/extract.py b/tools/translations/extract.py index 97bb7494a7..61b07b5799 100755 --- a/tools/translations/extract.py +++ b/tools/translations/extract.py @@ -107,6 +107,7 @@ f.write(main_po) f.close() if (os.name == "posix"): + print("Wrapping template at 79 characters for compatibility with Weblate.") os.system("msgmerge -w79 tools.pot tools.pot > tools.pot.wrap") shutil.move("tools.pot.wrap", "tools.pot") diff --git a/tools/translations/fa.po b/tools/translations/fa.po index b058fcb10e..290c4a6309 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,155 +23,246 @@ 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 "آرگومان step صفر است!" + +#: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" msgstr "" #: 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 +#, fuzzy +msgid "Change Expression" +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 "دارایی Getter را اضافه کن" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "دارایی Setter را اضافه کن" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Condition" +msgstr "انتقال" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "بازگشت:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "فراخوانی" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -179,23 +272,23 @@ msgstr "" #: 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,91 +301,185 @@ 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 "" +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 +#, fuzzy msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" +"مقدار بازگشتی نامعتبر از ()step_ ، باید integer (seq out) ، یا string " +"(error) باشد." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "نام نامعتبر." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "اندازهی قلم نامعتبر." + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -434,7 +621,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 "" @@ -482,6 +669,11 @@ msgstr "" "NavigationMeshInstance باید یک فرزند یا نوهی یک گره Navigation باشد. این " "تنها دادهی پیمایش را فراهم میکند." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "دارایی Path باید به یک گره Particles2D معتبر اشاره کند تا کار کند." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -526,9 +718,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 +728,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 +774,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 +890,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 +940,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 +1009,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 +1038,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 +1113,265 @@ 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 "" - -#: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" +msgstr "لیست متد برای 's%' :" #: 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 +1379,79 @@ 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 "متد در گره مقصد باید مشخص شده باشد!" + +#: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." 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 +1459,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 +1511,98 @@ 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 "جدید ایجاد کن" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" 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 +1610,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" @@ -1594,14 +1813,6 @@ msgstr "" 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 "" @@ -1616,28 +1827,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 +1862,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 +1904,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 +1928,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 +1948,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 +2034,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 +2071,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "باز کردن صحنه" #: tools/editor/editor_node.cpp msgid "Open Base Scene" @@ -1880,7 +2087,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 +2095,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 +2119,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 +2183,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,27 +2200,19 @@ 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." 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 "" +msgstr "زبانه بعدی" #: tools/editor/editor_node.cpp msgid "Previous tab" -msgstr "" +msgstr "زبانه قبلی" #: tools/editor/editor_node.cpp msgid "Operations with scene files." @@ -2021,7 +2220,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "صحنه جدید" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." @@ -2093,6 +2292,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2114,7 +2317,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 +2334,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 +2359,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,23 +2443,28 @@ 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" msgstr "" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "حالت تمام صفحه" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" #: tools/editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "معرفی" #: tools/editor/editor_node.cpp msgid "Alerts when an external resource has changed." @@ -2268,13 +2476,17 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Update Always" -msgstr "" +msgstr "به روز رسانی دامی" #: tools/editor/editor_node.cpp msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2292,7 +2504,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." @@ -2314,9 +2526,13 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +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 +2540,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 +2548,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 +2624,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 +2889,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:" @@ -3143,10 +3361,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3584,9 +3798,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" @@ -3687,6 +3900,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4425,6 +4642,11 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "بستن" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4532,6 +4754,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4908,6 +5134,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5173,6 +5403,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5539,7 +5773,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Samples" -msgstr "" +msgstr "نمونه ها" #: tools/editor/project_export.cpp msgid "Sample Conversion Mode: (.wav files):" @@ -5702,6 +5936,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" @@ -5984,6 +6220,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "صحنه جدید" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -6000,10 +6241,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -6015,6 +6252,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 +6467,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 +6781,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..94d43d12ba 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-09-03 09:11+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" @@ -23,7 +26,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 @@ -37,6 +40,12 @@ 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 "L'argument du pas est zéro!" + +#: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" msgstr "" #: modules/gdscript/gd_functions.cpp @@ -91,7 +100,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 +111,57 @@ msgid "Stack overflow with stack depth: " msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Functions:" -msgstr "Fonction :" +msgstr "Fonctions :" #: 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 +169,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 @@ -180,23 +179,96 @@ msgstr "Connecter un signal :" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Expression" +msgstr "Changer le type" + +#: modules/visual_script/visual_script_editor.cpp 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 Getter Property" +msgstr "" #: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +#, fuzzy +msgid "Condition" +msgstr "Copier l'animation" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Switch" +msgstr "Hauteur" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Retourne :" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Appel" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Définir" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Définir" + +#: 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 @@ -206,22 +278,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 +307,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 +329,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 +353,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,16 +366,15 @@ 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." -msgstr "" +msgstr "Nom de propriété invalide '%s' dans le nœud %s." #: modules/visual_script/visual_script_nodes.cpp #, fuzzy @@ -302,32 +382,109 @@ 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: " -msgstr "" +msgstr "VariableGet introuvable dans le script: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " +msgstr "VariableSet introuvable dans le script: " + +#: 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Erreur d'écriture du PCK du projet !" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Nom invalide." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Taille de police invalide." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Chemin de base invalide" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Source personnalisée de police invalide." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -521,6 +678,13 @@ msgstr "" "Un NavigationMeshInstance doit être enfant ou sous-enfant d'un nœud de type " "Navigation. Il fournit uniquement des données de navigation." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"La propriété Path doit pointer à un nœud de type Particles2D valide pour " +"fonctionner." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -575,7 +739,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" @@ -975,7 +1140,7 @@ msgstr "Animation Inserer une clé" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "Changer la longueur de l'animation" +msgstr "Modifier la longueur de l'animation" #: tools/editor/animation_editor.cpp msgid "Change Anim Loop" @@ -1110,18 +1275,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 :" @@ -1172,10 +1336,6 @@ msgid "Method List For '%s':" msgstr "Liste des méthodes pour « %s » :" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Appel" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "Liste des méthodes :" @@ -1279,7 +1439,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:" @@ -1294,6 +1454,12 @@ msgid "Method in target Node must be specified!" msgstr "La méthode du nœud cible doit être spécifiée !" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "Connecter au nœud :" @@ -1369,11 +1535,26 @@ msgstr "Signaux" msgid "Create New" msgstr "Créer un nouveau" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favoris :" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Récents :" + #: 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 +1715,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" @@ -1611,7 +1791,7 @@ msgstr "Choisir" #: tools/editor/editor_file_dialog.cpp msgid "Go Back" -msgstr "Revenir" +msgstr "Retour" #: tools/editor/editor_file_dialog.cpp msgid "Go Forward" @@ -1650,14 +1830,6 @@ msgstr "Déplacer le favori vers le haut" msgid "Move Favorite Down" msgstr "Déplacer le favori vers le bas" -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Favoris :" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Récents :" - #: tools/editor/editor_file_dialog.cpp msgid "Preview:" msgstr "Aperçu :" @@ -1707,10 +1879,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 +2187,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" @@ -2078,23 +2245,12 @@ msgid "Go to previously opened scene." msgstr "Aller à la scène ouverte précédemment." #: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "Mode plein écran" - -#: tools/editor/editor_node.cpp -#, fuzzy -msgid "Distraction Free Mode" -msgstr "Mode distraction libre" - -#: 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 +2273,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" @@ -2175,6 +2330,10 @@ msgid "Quit to Project List" msgstr "Quitter vers la liste des projets" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Mode sans distraction" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "Importer des ressources dans le projet." @@ -2258,12 +2417,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 +2465,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 +2478,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 +2486,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" @@ -2363,6 +2519,11 @@ msgid "Editor Layout" msgstr "Disposition de l'éditeur" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Mode plein écran" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "Installer les modèles d'exportation" @@ -2387,6 +2548,10 @@ msgid "Update Changes" msgstr "Repeindre quand modifié" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "Inspecteur" @@ -2426,6 +2591,10 @@ msgstr "Propriétés de l'objet." msgid "FileSystem" msgstr "Système de fichiers" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Nœud" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "Sortie" @@ -2491,29 +2660,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 @@ -3279,10 +3443,6 @@ msgid "MultiNode Set" msgstr "Réglage multi-nœuds" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Nœud" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "Groupes" @@ -3369,9 +3529,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 @@ -3840,6 +4000,11 @@ msgid "Clear Bones" msgstr "Effacer les os" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Créer les os" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "Créer une chaîne IK" @@ -4589,6 +4754,11 @@ msgid "Close Docs" msgstr "Cloner en dessous" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "Fermer" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4700,6 +4870,11 @@ msgstr "" "Les scripts intégrés ne peuvent être modifiés uniquement lorsque la scène à " "qui ils appartiennent est ouverte" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "Couleur" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "Déplacer vers le haut" @@ -5084,6 +5259,11 @@ msgstr "Coller l'animation" #: tools/editor/plugins/spatial_editor_plugin.cpp #, fuzzy +msgid "Focus Origin" +msgstr "Afficher l'origine" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "Focus Selection" msgstr "Mettre à l'échelle la sélection" @@ -5357,6 +5537,11 @@ msgid "Remove Item" msgstr "Supprimer l'item" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Enregistrer le thème" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "Ajouter des items de classe" @@ -6183,6 +6368,11 @@ msgid "Assign" msgstr "Assigner" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Créer un script" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "Erreur de chargement du fichier : ce n'est pas une ressource !" @@ -6199,10 +6389,6 @@ msgid "On" msgstr "Activé" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "Définir" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "Propriétés :" @@ -6214,6 +6400,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..3f2ef7861f 100644 --- a/tools/translations/id.po +++ b/tools/translations/id.po @@ -2,165 +2,263 @@ # 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 "Langkah argumen adalah nol!" + +#: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" msgstr "" #: 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 +#, fuzzy +msgid "Change Expression" +msgstr "Ubah Transisi Anim" #: 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 "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 +#, fuzzy +msgid "Condition" +msgstr "Transisi" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Kembali:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Panggil" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -170,23 +268,23 @@ msgstr "" #: 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,91 +297,184 @@ 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 "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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"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)." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Nama tidak sah." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Ukuran font tidak sah." + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -291,12 +482,17 @@ 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 +500,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 +516,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 +630,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 +649,227 @@ 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/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"Properti path harus menunjuk ke sebuah node Particles2D yang sah agar " +"bekerja." #: 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 +878,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 +906,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 +1016,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 +1135,271 @@ 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 "" - -#: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" +msgstr "Daftar Fungsi Untuk '%s':" #: 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 +1407,82 @@ 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 "Method dalam Node target harus spesifik!" + +#: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." msgstr "" #: 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 +1490,599 @@ 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_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favorit:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Saat ini:" #: 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 "" - -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "" +msgstr "Pindahkan Favorit Kebawah" #: 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 +2090,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 +2100,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 +2110,189 @@ 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 "" - -#: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "" - -#: tools/editor/editor_node.cpp -msgid "Distraction Free Mode" -msgstr "" +msgstr "Pergi ke scene yang dibuka sebelumnya." #: 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" @@ -2022,6 +2352,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Mode Tanpa Gangguan" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2180,6 +2514,11 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Mode Layar Penuh" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2204,6 +2543,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2243,6 +2586,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3072,10 +3419,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3615,6 +3958,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4353,6 +4700,11 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "Tutup" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4460,6 +4812,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4836,6 +5192,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5101,6 +5461,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5912,6 +6276,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Scene Baru" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5928,10 +6297,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5943,6 +6308,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 +6837,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/is.po b/tools/translations/is.po new file mode 100644 index 0000000000..2a2abb8df4 --- /dev/null +++ b/tools/translations/is.po @@ -0,0 +1,6667 @@ +# 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" +"Language: is\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: modules/gdscript/gd_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +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 "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +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 "Change Expression" +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 +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +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 "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just pressed" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +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/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +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 "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 "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +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_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 +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 "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 "Distraction Free Mode" +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 "Toggle Fullscreen" +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 "Disable Update Spinner" +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 tools/editor/node_dock.cpp +msgid "Node" +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 "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 "Show 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 +msgid "Close All" +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 +msgid "Pick Color" +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 Origin" +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 "Theme" +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 "New Script" +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 "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/it.po b/tools/translations/it.po index c1d2686b2e..1fa6a89605 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-09-10 22:09+0000\n" "Last-Translator: Dario Bonfanti <bonfi.96@hotmail.it>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" @@ -17,7 +17,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 @@ -36,6 +36,12 @@ msgid "step argument is zero!" msgstr "step argument è zero!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "Non è uno script con un istanza" @@ -69,40 +75,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 +120,151 @@ 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 "Change Expression" +msgstr "Cambia Tipo" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "Aggiungi Nodo Figlio" +msgstr "Aggiungi Nodo" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Mantieni premuto Meta per rilasciare un Getter. Mantieni premuto Shift per " +"rilasciare una firma generica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Mantieni premuto Control per rilasciare un Getter. Mantieni premuto Shift " +"per rilasciare una firma generica." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "Mantieni premuto Meta per rilasciare un riferimento semplice al nodo." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "Mantieni premuto Ctrl per rilasciare un riferimento semplice al nodo." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "Mantieni premuto Meta per rilasciare un Setter Variabile." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "Mantieni premuto Ctrl per rilasciare un Setter Variabile." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "Aggiungi Nodo Preload" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node(s) From Tree" -msgstr "Nodo Da Scena" +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 +#, fuzzy +msgid "Condition" +msgstr "Copia Animazione" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +#, fuzzy +msgid "Switch" +msgstr "Pitch" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Ritorna:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Chiama" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Set" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Set" + +#: 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 +274,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 +303,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 @@ -255,72 +324,161 @@ msgid "Toggle Breakpoint" 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 +msgid "Copy Nodes" +msgstr "Copia Nodi" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "Taglia Nodi" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" +msgstr "Incolla Nodi" #: 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 "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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"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)." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Errore di scrittura del PCK del progetto!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Nome Invalido." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Dimensione font Invalida." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Percorso di base invalido" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Sorgente font personalizzato invalido." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -519,6 +677,13 @@ msgstr "" "NavigationMeshInstance deve essere un figlio o nipote di un nodo Navigation. " "Fornisce solamente dati per la navigazione." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"La proprietà path deve puntare a un nodo Particles2D valido per poter " +"funzionare." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -573,7 +738,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 +1231,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 +1283,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:" @@ -1167,10 +1335,6 @@ msgid "Method List For '%s':" msgstr "Lista Metodi Per '%s':" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Chiama" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "Lista Metodi:" @@ -1274,7 +1438,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:" @@ -1289,6 +1453,12 @@ msgid "Method in target Node must be specified!" msgstr "Il Metodo nel nodo di target deve essere specificato!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "Connetti A Nodo:" @@ -1364,11 +1534,26 @@ msgstr "Segnali" msgid "Create New" msgstr "Crea Nuovo" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Preferiti:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recenti:" + #: 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:" @@ -1640,14 +1825,6 @@ msgstr "Sposta Preferito Su" msgid "Move Favorite Down" msgstr "Sposta Preferito Giù" -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Preferiti:" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Recenti:" - #: tools/editor/editor_file_dialog.cpp msgid "Preview:" msgstr "Anteprima:" @@ -1697,10 +1874,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:" @@ -2064,14 +2237,6 @@ msgid "Go to previously opened scene." msgstr "Vai alla scena precedentemente aperta." #: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "Modalità Fullscreen" - -#: tools/editor/editor_node.cpp -msgid "Distraction Free Mode" -msgstr "Modalità Senza Distrazioni" - -#: tools/editor/editor_node.cpp msgid "Next tab" msgstr "Scheda successiva" @@ -2157,6 +2322,10 @@ msgid "Quit to Project List" msgstr "Esci alla Lista Progetti" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Modalità Senza Distrazioni" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "Importa asset nel progetto." @@ -2334,6 +2503,11 @@ msgid "Editor Layout" msgstr "Layout dell'Editor" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Modalità Fullscreen" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "Installa Template di Esportazione" @@ -2358,6 +2532,10 @@ msgid "Update Changes" msgstr "Aggiorna Cambiamenti" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "Inspector" @@ -2397,6 +2575,10 @@ msgstr "Proprietà oggetto." msgid "FileSystem" msgstr "FileSystem" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Nodo" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "Output" @@ -3238,10 +3420,6 @@ msgid "MultiNode Set" msgstr "MultiNode Set" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Nodo" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "Gruppi" @@ -3680,9 +3858,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 +3880,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 @@ -3789,6 +3964,11 @@ msgid "Clear Bones" msgstr "Elimina Ossa" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Crea Ossa" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "Crea Catena IK" @@ -4525,9 +4705,13 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "Chiudi" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4641,6 +4825,11 @@ msgstr "" "Gli script built-in possono essere modificati solamente quando la scena a " "cui appartengono è caricata" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "Colore" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "Sposta Su" @@ -5017,6 +5206,11 @@ msgid "Insert Animation Key" msgstr "Inserisci Key Animazione" #: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Focus Origin" +msgstr "Visualizza Origine" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "Centra a Selezione" @@ -5282,6 +5476,11 @@ msgid "Remove Item" msgstr "Rimuovi Elemento" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Salva Tema" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "Aggiungi Elementi di Classe" @@ -5799,12 +5998,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 +6015,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 +6034,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" @@ -6102,6 +6298,11 @@ msgid "Assign" msgstr "Assegna" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Script successivo" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "Errore caricamento file: Non è una risorsa!" @@ -6118,10 +6319,6 @@ msgid "On" msgstr "On" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "Set" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "Proprietà:" @@ -6133,6 +6330,14 @@ msgstr "Globale" msgid "Sections:" msgstr "Sezioni:" +#: tools/editor/property_selector.cpp +msgid "Select Property" +msgstr "Seleziona Proprietà" + +#: tools/editor/property_selector.cpp +msgid "Select Method" +msgstr "Seleziona Metodo" + #: tools/editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" msgstr "Impossibile eseguire lo strumento di PVRTC:" @@ -6206,9 +6411,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 +6547,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 +6563,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 +6866,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..25003026c1 100644 --- a/tools/translations/ja.po +++ b/tools/translations/ja.po @@ -34,6 +34,12 @@ msgid "step argument is zero!" msgstr "ステップ引数はゼロです!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "インスタンスを使用していないスクリプトです" @@ -167,20 +173,91 @@ msgid "Editing Signal:" msgstr "信号を接続:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 #, fuzzy 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 -msgid "Add Getter Property" +#, fuzzy +msgid "Condition" +msgstr "遷移" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "戻り値:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "呼び出し" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -245,9 +322,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,19 +383,94 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "無効なフォント サイズです。" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "無効なフォント サイズです。" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -498,6 +663,13 @@ msgstr "" "NavigationMeshInstance は、ナビゲーションノードの子や孫である必要があります。" "これはナビゲーションデータのみ提供します。" +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"Path プロパティは、動作するように有効な Particles2D ノードを示す必要がありま" +"す。" + #: scene/3d/scenario_fx.cpp #, fuzzy msgid "" @@ -553,7 +725,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 +1269,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 "検索:" @@ -1147,10 +1321,6 @@ msgid "Method List For '%s':" msgstr "'%s' のメソッド一覧:" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "呼び出し" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "メソッド一覧:" @@ -1269,6 +1439,12 @@ msgid "Method in target Node must be specified!" msgstr "対象となるノードのメソッドを指定する必要があります!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "ノードに接続します。" @@ -1345,11 +1521,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1610,14 +1801,6 @@ msgstr "" 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 "" @@ -1667,10 +1850,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 "" @@ -2027,14 +2206,6 @@ 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 "" @@ -2121,6 +2292,10 @@ msgid "Quit to Project List" msgstr "終了してプロジェクトリストを開く" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2279,6 +2454,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2303,6 +2482,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2342,6 +2525,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3171,10 +3358,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3716,6 +3899,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4455,6 +4642,11 @@ msgid "Close Docs" msgstr "閉じる" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "閉じる" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4562,6 +4754,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4938,6 +5134,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5203,6 +5403,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -6014,6 +6218,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -6030,10 +6238,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -6045,6 +6249,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..a4d24d8b52 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-09-26 13:04+0000\n" "Last-Translator: 박한얼 <volzhs@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -17,7 +17,7 @@ msgstr "" "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" +"X-Generator: Weblate 2.9-dev\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -35,6 +35,12 @@ msgid "step argument is zero!" msgstr "스텝 인자가 제로입니다!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "스크립트의 인스턴스가 아님" @@ -95,14 +101,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,79 +121,140 @@ 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 "Change Expression" +msgstr "타입 변경" + +#: modules/visual_script/visual_script_editor.cpp 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 +msgid "Add Preload Node" +msgstr "Preload 노드 추가" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Add Node(s) From Tree" -msgstr "씬으로부터 노드 가져오기" +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 -msgid "Add Getter Property" +#, fuzzy +msgid "Condition" +msgstr "애니메이션 복사" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Switch" +msgstr "피치" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "리턴:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "호출" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "설정" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +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 @@ -199,18 +264,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 +293,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 @@ -255,9 +314,20 @@ msgid "Toggle Breakpoint" 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 +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: " @@ -272,32 +342,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,19 +374,97 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "프로젝트 PCK 작성중 에러!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "유효하지 않은 이름." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "유요하지 않은 폰트 사이즈." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "기본 경로가 유요하지 않음" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "사용자 지정 폰트 소스가 유효하지 않습니다." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -503,6 +647,11 @@ msgstr "" "NavigationMeshInstance은 Navigation 노드의 하위에 있어야 합니다. 이것은 네비" "게이션 데이타만을 제공합니다." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "Path 속성은 유효한 Particles2D 노드를 가리켜야 합니다." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -555,7 +704,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 +1247,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 "검색:" @@ -1148,10 +1299,6 @@ msgid "Method List For '%s':" msgstr "'%s' 함수 목록:" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "호출" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "함수 목록:" @@ -1270,6 +1417,12 @@ msgid "Method in target Node must be specified!" msgstr "대상 노드의 함수를 명시해야합니다!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "연결할 노드:" @@ -1345,11 +1498,26 @@ msgstr "시그널" msgid "Create New" msgstr "새로 만들기" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "즐겨찾기:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "대체할 대상 찾기:" @@ -1616,14 +1784,6 @@ msgstr "즐겨찾기 위로 이동" 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 "미리보기:" @@ -1673,10 +1833,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 "함수 설명:" @@ -2033,14 +2189,6 @@ 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 "다음 탭" @@ -2126,6 +2274,10 @@ msgid "Quit to Project List" msgstr "종료하고 프로젝트 목록으로 돌아가기" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "초집중 모드" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "프로젝트로 에셋 가져오기." @@ -2304,6 +2456,11 @@ msgid "Editor Layout" msgstr "에디터 레이아웃" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "전체화면 모드" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "내보내기 템플릿 설치" @@ -2328,6 +2485,10 @@ msgid "Update Changes" msgstr "변경사항만 갱신" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "인스펙터" @@ -2367,6 +2528,10 @@ msgstr "오브젝트 속성." msgid "FileSystem" msgstr "파일 시스템" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "노드" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "출력" @@ -3203,10 +3368,6 @@ msgid "MultiNode Set" msgstr "다중 노드 설정" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "노드" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "그룹" @@ -3644,9 +3805,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 +3825,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 @@ -3751,6 +3909,11 @@ msgid "Clear Bones" msgstr "Bones 없애기" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Bones 만들기" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "IK 체인 만들기" @@ -4485,9 +4648,13 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "닫기" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4599,6 +4766,11 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "내장 스크립트는 종속된 씬이 열린 상태에서만 편집이 가능합니다" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "색깔" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "위로 이동" @@ -4975,6 +5147,11 @@ msgid "Insert Animation Key" msgstr "애니메이션 키 삽입" #: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Focus Origin" +msgstr "원점 보기" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "선택 포커스" @@ -5240,6 +5417,11 @@ msgid "Remove Item" msgstr "아이템 삭제" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "테마 저장" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "클래스 아이템 추가" @@ -5753,12 +5935,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 +5970,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" @@ -6055,6 +6234,11 @@ msgid "Assign" msgstr "할당" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "다음 스크립트" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "파일 로드 에러: 리소스가 아닙니다!" @@ -6064,17 +6248,13 @@ 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" msgstr "사용" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "설정" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "속성:" @@ -6086,6 +6266,14 @@ msgstr "Global" 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 "PVRTC 도구를 실행할 수 없습니다:" @@ -6159,9 +6347,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 +6480,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 +6495,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..d8d1a2771b --- /dev/null +++ b/tools/translations/nb.po @@ -0,0 +1,6673 @@ +# 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 "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +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 "Change Expression" +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 +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +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 "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just pressed" +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +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/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +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 "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 "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +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_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 +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 "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 "Distraction Free Mode" +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 "Toggle Fullscreen" +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 "Disable Update Spinner" +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 tools/editor/node_dock.cpp +msgid "Node" +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 "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 "Show 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 +msgid "Close All" +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 +msgid "Pick Color" +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 Origin" +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 "Theme" +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 "New Script" +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 "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..78b1964fad 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,13 @@ 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 "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" #: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" @@ -51,7 +58,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 +90,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 +103,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,86 +119,148 @@ 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 "Change Expression" +msgstr "Zmień typ" + +#: modules/visual_script/visual_script_editor.cpp 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 Getter Property" +msgstr "" #: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +#, fuzzy +msgid "Condition" +msgstr "Skopiuj animacje" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Switch" +msgstr "Wysokość" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Zwraca:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Wywołanie" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Ustaw" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Ustaw" + +#: 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 @@ -201,9 +270,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 +279,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 +299,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 Type" +msgstr "Znajdź typ węzła" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Find Node Tyoe" -msgstr "Znajdź Następny" +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,49 +358,124 @@ 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 "Nie znaleziono VariableSet w skrypcie: " + +#: 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Błąd przy eksporcie projektu!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Niewłaściwa nazwa." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Niepoprawny rozmiar fonta." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Niepoprawna ścieżka bazowa" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Nie rozpoznano typu czcionki." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -370,7 +524,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 +547,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 +635,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 "" @@ -512,6 +665,12 @@ msgstr "" "NavigationMeshInstance musi być dzieckiem lub wnukiem węzła typu Navigation. " "Udostępnia on tylko dane nawigacyjne." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"Żeby zadziałało, pole Path musi wskazywać na istniejący węzeł Particles2D." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -557,7 +716,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 +725,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 +760,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 +791,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 +814,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 +920,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 +983,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 +1053,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 +1102,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 +1127,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 +1139,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 +1251,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 +1271,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 +1296,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.." @@ -1162,10 +1323,6 @@ msgid "Method List For '%s':" msgstr "Lista metod '%s':" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Wywołanie" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "Lista metod:" @@ -1269,7 +1426,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:" @@ -1284,6 +1441,12 @@ msgid "Method in target Node must be specified!" msgstr "Wybierz metodę w wybranym węźle!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "Podłączanie Do Węzła:" @@ -1316,7 +1479,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 +1504,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 +1521,28 @@ 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_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Ulubione:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Ostatnie:" #: 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 +1574,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 +1647,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 +1698,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 +1782,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,19 +1798,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ół" - -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Ulubione:" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Ostatnie:" +msgstr "Przesuń Ulubiony w dół" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" @@ -1642,7 +1810,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 +1847,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 +1895,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 +1918,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 +1985,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 +2152,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 +2183,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" @@ -2053,14 +2215,6 @@ msgid "Go to previously opened scene." msgstr "Idź do poprzednio otwartej sceny." #: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "Pełny ekran" - -#: tools/editor/editor_node.cpp -msgid "Distraction Free Mode" -msgstr "Tryb bez rozproszeń" - -#: tools/editor/editor_node.cpp msgid "Next tab" msgstr "Następna zakładka" @@ -2074,35 +2228,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 +2264,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 +2281,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" @@ -2146,6 +2300,10 @@ msgid "Quit to Project List" msgstr "Wyjdź do Listy Projektów" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Tryb bez rozproszeń" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "Importuj zasoby do projektu." @@ -2188,11 +2346,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 +2383,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 +2391,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 +2406,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 +2426,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Visible Navigation" -msgstr "Nawigacja Widoczna" +msgstr "Widoczna nawigacja" #: tools/editor/editor_node.cpp msgid "" @@ -2313,11 +2471,16 @@ 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 +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Pełny ekran" #: tools/editor/editor_node.cpp msgid "Install Export Templates" @@ -2344,12 +2507,16 @@ msgid "Update Changes" msgstr "Odśwież Zmiany" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" 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." @@ -2383,9 +2550,13 @@ msgstr "Właściwości obiektu." msgid "FileSystem" msgstr "System plików" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Węzeł" + #: 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 +2604,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 +2627,6 @@ msgid "Start Profiling" msgstr "Rozpocznij profilowanie" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Measure:" msgstr "Zmierzono:" @@ -2519,7 +2689,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 +2713,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 +2730,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 +2796,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 +2852,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 +2866,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 +2879,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 +2907,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 +2918,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 +2934,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 +2965,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 +2978,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 +2986,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 +2994,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 +3010,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 +3055,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 +3067,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 +3155,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 +3231,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 +3311,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 +3335,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 +3372,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 +3380,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:" @@ -3228,10 +3395,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Węzeł" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "Grupy" @@ -3241,24 +3404,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 +3434,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 +3451,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 +3467,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 +3479,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 +3507,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 +3527,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 +3539,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 +3601,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 +3638,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 +3710,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 +3832,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 +3855,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 +3879,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 +3896,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,15 +3930,20 @@ 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" msgstr "Wyczyść Kości" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Utwórz 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 +3960,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 +4007,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 +4056,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 +4338,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 +4370,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 +4435,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 +4463,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 +4541,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 +4582,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 +4607,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 +4615,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 +4623,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 +4649,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 +4665,24 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "Zamknij" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4525,7 +4694,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 +4722,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 +4730,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 +4758,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" @@ -4623,25 +4792,30 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "Kolor" + #: 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 +4835,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 +4857,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 +4950,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 +4978,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 +4990,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,6 +5170,10 @@ msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" +msgstr "Wstaw klucz animacji" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -5024,7 +5202,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 +5302,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 +5338,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 +5346,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 +5366,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 +5390,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 +5410,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 +5426,25 @@ 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 +#, fuzzy +msgid "Theme" +msgstr "Zapisz motyw" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" @@ -5273,7 +5456,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 +5464,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 +5484,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 +5514,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 +5522,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 +5599,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 +5628,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 +5640,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 +5676,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 +5696,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 +5729,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Images" -msgstr "" +msgstr "Obrazki" #: tools/editor/project_export.cpp msgid "Keep Original" @@ -5562,7 +5745,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 +5753,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 +5773,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 +5789,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Shrink By:" -msgstr "" +msgstr "Zmniejsz o:" #: tools/editor/project_export.cpp msgid "Preview Atlas" @@ -5618,7 +5801,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Images:" -msgstr "" +msgstr "Obrazki:" #: tools/editor/project_export.cpp msgid "Select None" @@ -5626,7 +5809,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Group" -msgstr "" +msgstr "Grupa" #: tools/editor/project_export.cpp msgid "Samples" @@ -5638,11 +5821,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 +5861,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 +5881,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 +5905,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 +5913,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 +5949,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 +5961,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 +5979,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 +5994,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 +6042,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 +6051,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 +6143,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 +6155,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 +6175,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 +6246,6 @@ msgid "File.." msgstr "Plik.." #: tools/editor/property_editor.cpp -#, fuzzy msgid "Dir.." msgstr "Katalog.." @@ -6078,6 +6258,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Następny skrypt" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "Błąd wczytania pliku: Brak zasobu!" @@ -6094,10 +6279,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "Ustaw" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "Właściwości:" @@ -6109,6 +6290,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 +6326,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 +6378,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 +6415,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 +6432,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 +6447,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 +6482,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 +6502,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 +6519,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 +6575,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 +6620,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 +6648,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 +6712,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 +6739,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 +6807,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..de8b9920a5 100644 --- a/tools/translations/pt_BR.po +++ b/tools/translations/pt_BR.po @@ -2,15 +2,17 @@ # 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. +# Mailson Silva Marins <mailsons335@gmail.com>, 2016. # 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-09-02 21:07+0000\n" +"Last-Translator: Mailson Silva Marins <mailsons335@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -18,12 +20,12 @@ 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 msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Argumento de tipo inválido para convert(), use constantes TYPE_*." +msgstr "Argumento de tipo inválido para converter(), use constantes TYPE_*." #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -35,6 +37,12 @@ msgid "step argument is zero!" msgstr "o argumento step é zero!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "Não é um script com uma instância" @@ -95,14 +103,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,63 +123,85 @@ 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 msgid "Rename Variable" -msgstr "Renomear Amostra" +msgstr "renomeie variável" #: 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 "Change Expression" +msgstr "Alterar Tipo" + +#: 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 "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,14 +210,55 @@ msgid "Add Node(s) From Tree" msgstr "Nó a Partir de Cena" #: 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 -msgid "Add Getter Property" +#, fuzzy +msgid "Condition" +msgstr "Copiar Animação" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Switch" +msgstr "Pitch" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Retornar:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Chamar" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Definir" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Definir" + +#: 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,18 +268,16 @@ msgid "Edit" msgstr "Editar" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Base Type:" -msgstr "Tipo de Dados:" +msgstr "Tipo de Base:" #: modules/visual_script/visual_script_editor.cpp tools/editor/editor_help.cpp 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 +297,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 +319,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 +373,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,19 +385,97 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Erro ao escrever o PCK do projeto!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Nome Inválido." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Tamanho de fonte inválido." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Caminho base inválido" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Origem personalizada da fonte inválida." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -511,6 +666,11 @@ msgstr "" "NavigationMeshInstance deve ser filho ou neto de um nó Navigation. Ele " "apenas fornece dados de navegação." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "A propriedade Caminho deve apontar a um nó Particles2D para funcionar." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -565,7 +725,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 +1269,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:" @@ -1159,10 +1321,6 @@ msgid "Method List For '%s':" msgstr "Lista de Métodos para \"%s\":" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Chamar" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "Lista de Métodos:" @@ -1281,6 +1439,12 @@ msgid "Method in target Node must be specified!" msgstr "O método no Nó destino precisa ser especificado!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "Conectar ao Nó:" @@ -1356,11 +1520,26 @@ msgstr "Sinais" msgid "Create New" msgstr "Criar Novo" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favoritos:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recente:" + #: 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:" @@ -1629,14 +1808,6 @@ msgstr "Mover Favorito Acima" msgid "Move Favorite Down" msgstr "Mover Favorito Abaixo" -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Favoritos:" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Recente:" - #: tools/editor/editor_file_dialog.cpp msgid "Preview:" msgstr "Previsualização:" @@ -1686,10 +1857,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:" @@ -2050,14 +2217,6 @@ msgid "Go to previously opened scene." msgstr "Ir para cena aberta anteriormente." #: tools/editor/editor_node.cpp -msgid "Fullscreen Mode" -msgstr "Modo Tela-Cheia" - -#: tools/editor/editor_node.cpp -msgid "Distraction Free Mode" -msgstr "Modo Sem Distrações" - -#: tools/editor/editor_node.cpp msgid "Next tab" msgstr "Próxima guia" @@ -2143,6 +2302,10 @@ msgid "Quit to Project List" msgstr "Sair para a Lista de Projetos" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Modo Sem Distrações" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "Importar assets ao projeto." @@ -2320,6 +2483,11 @@ msgid "Editor Layout" msgstr "Layout do Editor" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Modo Tela-Cheia" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "Instalar Models de Exportação" @@ -2344,6 +2512,10 @@ msgid "Update Changes" msgstr "Atualizar nas Mudanças" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "Inspetor" @@ -2383,6 +2555,10 @@ msgstr "Propriedades do objeto." msgid "FileSystem" msgstr "Arquivos" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Nó" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "Saída" @@ -3222,10 +3398,6 @@ msgid "MultiNode Set" msgstr "Múltiplos Nós definidos" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Nó" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "Grupos" @@ -3775,6 +3947,11 @@ msgid "Clear Bones" msgstr "Limpar Ossos" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Fazer Ossos" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "Fazer Cadeia de IK" @@ -4510,9 +4687,13 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "Fechar" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4626,6 +4807,11 @@ msgstr "" "Scripts embutidos só podem ser editados quando a cena a qual pertencem está " "carregada" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "Cor" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "Mover para Cima" @@ -5002,6 +5188,11 @@ msgid "Insert Animation Key" msgstr "Inserir Chanve de Animação" #: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Focus Origin" +msgstr "Ver Origem" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "Focar Seleção" @@ -5267,6 +5458,11 @@ msgid "Remove Item" msgstr "Remover Item" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Salvar Tema" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "Adicionar Itens de Classe" @@ -5822,7 +6018,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" @@ -6085,6 +6281,11 @@ msgid "Assign" msgstr "Atribuir" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Próximo Script" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "Erro ao carregar arquivo: Não é um recurso!" @@ -6101,10 +6302,6 @@ msgid "On" msgstr "Ativo" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "Definir" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "Propriedades:" @@ -6116,6 +6313,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 +6533,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 +6549,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..21727ce186 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,147 +26,233 @@ 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 "o argumento \"step\" é zero!" + +#: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" msgstr "" #: 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 "A editar Sinal:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" msgstr "" #: 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 "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 +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -176,23 +262,23 @@ msgstr "" #: 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 +291,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 "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 "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,19 +376,93 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Nome de índice propriedade inválido." + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -434,6 +607,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -482,7 +659,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 +1196,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 "" @@ -1069,10 +1248,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1191,6 +1366,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1266,11 +1447,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1529,14 +1725,6 @@ msgstr "" 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 "" @@ -1586,10 +1774,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 "" @@ -1935,14 +2119,6 @@ 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 "" @@ -2028,6 +2204,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2186,6 +2366,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2210,6 +2394,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2249,6 +2437,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3078,10 +3270,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3621,6 +3809,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4359,6 +4551,11 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "Fechar" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4466,6 +4663,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4842,6 +5043,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5107,6 +5312,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5918,6 +6127,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5934,10 +6147,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5949,6 +6158,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..e4782fec64 100644 --- a/tools/translations/ro.po +++ b/tools/translations/ro.po @@ -26,6 +26,12 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "" @@ -148,19 +154,88 @@ msgid "Editing Signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -223,7 +298,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,19 +358,92 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -428,6 +588,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -476,7 +640,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 +1177,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 "" @@ -1063,10 +1229,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1185,6 +1347,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1260,11 +1428,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1523,14 +1706,6 @@ msgstr "" 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 "" @@ -1580,10 +1755,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 "" @@ -1929,14 +2100,6 @@ 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 "" @@ -2022,6 +2185,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2180,6 +2347,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2204,6 +2375,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2243,6 +2418,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3072,10 +3251,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3615,6 +3790,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4353,6 +4532,10 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4460,6 +4643,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4836,6 +5023,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5101,6 +5292,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5912,6 +6107,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5928,10 +6127,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5943,6 +6138,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..b8288d07a4 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-09-14 21:55+0000\n" "Last-Translator: DimOkGamer <dimokgamer@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" @@ -20,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\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 @@ -37,6 +37,12 @@ msgid "step argument is zero!" msgstr "Аргумент шага равен нулю!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "Скрипт без экземпляра" @@ -70,40 +76,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 +121,151 @@ 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 "Change Expression" +msgstr "Изменить тип" + +#: modules/visual_script/visual_script_editor.cpp 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 "" +"Зажмите Meta, чтобы добавить Getter. Зажмите Shift, чтобы добавить " +"универсальную подпись." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" +"Зажмите Ctrl, чтобы добавить Getter. Зажмите Shift, чтобы добавить " +"универсальную подпись." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a simple reference to the node." +msgstr "Зажмите Meta, чтобы добавить простую ссылку на узел." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "Зажмите Ctrl, чтобы добавить простую ссылку на узел." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Meta to drop a Variable Setter." +msgstr "Зажмите Meta, чтобы добавить Variable Setter." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "Зажмите Ctrl, чтобы добавить Variable Setter." + +#: 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 "Узел со сцены" +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 +#, fuzzy +msgid "Condition" +msgstr "Копировать анимацию" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +#, fuzzy +msgid "Switch" +msgstr "Высота" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "Возвращение:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Вызов" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "Задан" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +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 +275,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 +304,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,72 +325,160 @@ msgid "Toggle Breakpoint" 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 +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 "" +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 "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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" +"Недопустимое значение, возвращаемое _step(), должно быть целое число(seq " +"out) или строка (error)." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "Ошибка записи PCK файла!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Недопустимое имя." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Недопустимый размер шрифта." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Недопустимый базовый путь" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Недопустимый шрифт пользовательского источника." + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -515,6 +672,13 @@ msgstr "" "NavigationMeshInstance должен быть дочерним или под-дочерним узлом " "Navigation. Он предоставляет только навигационные данные." +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "" +"Для корректной работы свойство Path должно указывать на действующий узел " +"Particles2D." + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -569,7 +733,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 +1226,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 +1278,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 "Поиск:" @@ -1164,10 +1330,6 @@ msgid "Method List For '%s':" msgstr "Список способ для '%s':" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "Вызов" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "Список методов:" @@ -1271,7 +1433,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:" @@ -1286,6 +1448,12 @@ msgid "Method in target Node must be specified!" msgstr "Метод должен быть указан в целевом Узле!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "Присоединить к узлу:" @@ -1361,11 +1529,26 @@ msgstr "Сигналы" msgid "Create New" msgstr "Создать новый" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Избранное:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "Поиск замены для:" @@ -1636,14 +1819,6 @@ msgstr "Переместить избранное вверх" 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 "Предпросмотр:" @@ -1693,10 +1868,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 "Описание методов:" @@ -2058,14 +2229,6 @@ 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 "Следующая вкладка" @@ -2151,6 +2314,10 @@ msgid "Quit to Project List" msgstr "Выйти в список проектов" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Свободный режим" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "Импортировать ассеты в проект." @@ -2328,6 +2495,11 @@ msgid "Editor Layout" msgstr "Макет редактора" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "Полноэкранный режим" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "Установить шаблоны экспорта" @@ -2352,6 +2524,10 @@ msgid "Update Changes" msgstr "Обновлять при изменениях" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "Инспектор" @@ -2391,6 +2567,10 @@ msgstr "Свойства объекта." msgid "FileSystem" msgstr "Файловая система" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "Узел" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "Вывод" @@ -3232,10 +3412,6 @@ msgid "MultiNode Set" msgstr "Мульти-узловый набор" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "Узел" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "Группы" @@ -3676,9 +3852,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 +3874,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 @@ -3785,6 +3958,11 @@ msgid "Clear Bones" msgstr "Очистить кости" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "Создать кости" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "Создать цепь ИК" @@ -4519,9 +4697,13 @@ 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 +#, fuzzy +msgid "Close All" +msgstr "Закрыть" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp @@ -4635,6 +4817,11 @@ msgstr "" "Встроенные скрипты могут быть изменены только, когда сцена, которой они " "принадлежат, загружена" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "Цвет" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "Переместить вверх" @@ -5011,6 +5198,11 @@ msgid "Insert Animation Key" msgstr "Вставить ключ анимации" #: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Focus Origin" +msgstr "Отображать начало координат" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "Показать выбранное" @@ -5276,6 +5468,11 @@ msgid "Remove Item" msgstr "Удалить элемент" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Сохранить тему" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "Добавить элемент класса" @@ -5791,12 +5988,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 +6004,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 +6024,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" @@ -6092,6 +6288,11 @@ msgid "Assign" msgstr "Назначить" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Следующий скрипт" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "Ошибка загрузки файла: Это не ресурс!" @@ -6108,10 +6309,6 @@ msgid "On" msgstr "Вкл" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "Задан" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "Свойства:" @@ -6123,6 +6320,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 "Невозможно запустить PVRTC инструмент:" @@ -6198,9 +6403,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" @@ -6264,7 +6468,7 @@ msgstr "Сохранить новую Сцену как.." #: tools/editor/scene_tree_dock.cpp msgid "Makes Sense!" -msgstr "Уууу круто!" +msgstr "Имеет смысл!" #: tools/editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" @@ -6335,9 +6539,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 +6555,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 +6858,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..0e21e5a94f 100644 --- a/tools/translations/sk.po +++ b/tools/translations/sk.po @@ -32,6 +32,12 @@ msgid "step argument is zero!" msgstr "argument \"step\"/krok je nulový!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "" @@ -159,19 +165,88 @@ msgid "Editing Signal:" msgstr "Signály:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -234,9 +309,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,19 +370,92 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -446,6 +607,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -494,7 +659,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 +1197,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 "" @@ -1082,10 +1249,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1204,6 +1367,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1279,11 +1448,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1542,14 +1726,6 @@ msgstr "" 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 "" @@ -1599,10 +1775,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 "" @@ -1948,14 +2120,6 @@ 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 "" @@ -2042,6 +2206,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2200,6 +2368,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2224,6 +2396,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2263,6 +2439,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3092,10 +3272,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3635,6 +3811,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4374,6 +4554,10 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4481,6 +4665,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4857,6 +5045,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Focus Selection" msgstr "Všetky vybrané" @@ -5125,6 +5317,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5936,6 +6132,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Popis:" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5952,10 +6153,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5967,6 +6164,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..41ebecad54 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,20 +21,26 @@ 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!" msgstr "stopnja argumenta je nič!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: 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 +48,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,109 +72,185 @@ 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 "Urejanje Signala:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" msgstr "" #: 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 "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 +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -178,23 +260,23 @@ msgstr "" #: 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,91 +289,180 @@ 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 "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 "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 "" +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 "Custom node nima _step() metode, grafa ni mogoče obdelati." #: modules/visual_script/visual_script_nodes.cpp msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"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)." #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Neveljaven indeks lastnosti imena." + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -307,6 +478,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 +487,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 +502,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 "" @@ -438,6 +619,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -486,7 +671,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 +1208,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 "" @@ -1073,10 +1260,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1195,6 +1378,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1270,11 +1459,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1533,14 +1737,6 @@ msgstr "" 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 "" @@ -1590,10 +1786,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 "" @@ -1939,14 +2131,6 @@ 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 "" @@ -2032,6 +2216,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2190,6 +2378,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2214,6 +2406,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2253,6 +2449,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3082,10 +3282,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3625,6 +3821,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4363,6 +4563,11 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "Zapri" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4470,6 +4675,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4846,6 +5055,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5111,6 +5324,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5922,6 +6139,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5938,10 +6159,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5953,6 +6170,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 +6698,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..5453c5d9e2 100644 --- a/tools/translations/tools.pot +++ b/tools/translations/tools.pot @@ -26,6 +26,12 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "" @@ -148,19 +154,88 @@ msgid "Editing Signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -223,7 +298,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,19 +358,92 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -428,6 +588,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -476,7 +640,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 +1177,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 "" @@ -1063,10 +1229,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1185,6 +1347,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1260,11 +1428,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1523,14 +1706,6 @@ msgstr "" 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 "" @@ -1580,10 +1755,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 "" @@ -1929,14 +2100,6 @@ 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 "" @@ -2022,6 +2185,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2180,6 +2347,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2204,6 +2375,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2243,6 +2418,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3072,10 +3251,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3615,6 +3790,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4353,6 +4532,10 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4460,6 +4643,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4836,6 +5023,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5101,6 +5292,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5912,6 +6107,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5928,10 +6127,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5943,6 +6138,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..823082ef17 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" @@ -32,16 +33,22 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +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 "" +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 +70,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 +97,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,81 +110,141 @@ 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 +msgid "Change Expression" +msgstr "" #: 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 "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 +#, fuzzy +msgid "Condition" +msgstr "Animasyon Yükle" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -189,11 +254,11 @@ msgstr "" #: 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 +290,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 +307,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,19 +372,95 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "Geçersiz isim." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Geçersiz yazı tipi boyutu." + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Geçersiz üst yol" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -452,6 +605,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -475,7 +632,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 +657,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 +746,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 +1186,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 +1194,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 +1206,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 @@ -1087,10 +1246,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1209,10 +1364,16 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." msgstr "" #: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "Düğüme bağlan:" + +#: 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 @@ -1284,11 +1445,26 @@ msgstr "" msgid "Create New" msgstr "Yeni oluştur" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "Favoriler:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Yakın zamanda:" + #: 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 +1534,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:" @@ -1554,14 +1729,6 @@ msgstr "" msgid "Move Favorite Down" msgstr "" -#: tools/editor/editor_file_dialog.cpp tools/editor/filesystem_dock.cpp -msgid "Favorites:" -msgstr "Favoriler:" - -#: tools/editor/editor_file_dialog.cpp -msgid "Recent:" -msgstr "Yakın zamanda:" - #: tools/editor/editor_file_dialog.cpp msgid "Preview:" msgstr "Ön izleme:" @@ -1611,10 +1778,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ı:" @@ -1961,14 +2124,6 @@ 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 "" @@ -2055,6 +2210,10 @@ msgid "Quit to Project List" msgstr "Proje Listesine Git" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2213,6 +2372,10 @@ msgid "Editor Layout" msgstr "Editör Düzeni" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2237,6 +2400,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2276,6 +2443,10 @@ msgstr "Nesne özellikleri." msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3106,10 +3277,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3127,34 +3294,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 +3333,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 +3357,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)" @@ -3651,6 +3818,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4390,6 +4561,11 @@ msgid "Close Docs" msgstr "Kapat" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "Kapat" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4497,6 +4673,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4873,6 +5053,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5138,6 +5322,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5950,6 +6138,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "Betiği Çalıştır" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5966,10 +6159,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5981,6 +6170,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 +6535,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 +6543,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..188d2bb4c2 100644 --- a/tools/translations/ur_PK.po +++ b/tools/translations/ur_PK.po @@ -33,6 +33,12 @@ msgid "step argument is zero!" msgstr "سٹیپ کے ارگمنٹس سفر ہیں!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr ".یہ انسٹینس کے بغیر سکرپٹ نہی ہوتی" @@ -158,19 +164,88 @@ msgid "Editing Signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -233,7 +308,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,19 +368,92 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -438,6 +598,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -486,7 +650,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 +1188,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 "" @@ -1074,10 +1240,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1196,6 +1358,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1271,11 +1439,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1537,14 +1720,6 @@ msgstr "پسندیدہ اوپر منتقل کریں" 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 "" @@ -1594,10 +1769,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 "" @@ -1944,14 +2115,6 @@ 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 "" @@ -2037,6 +2200,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2195,6 +2362,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2219,6 +2390,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2258,6 +2433,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3087,10 +3266,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3631,6 +3806,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4370,6 +4549,10 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4477,6 +4660,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4853,6 +5040,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Focus Selection" msgstr ".تمام کا انتخاب" @@ -5120,6 +5311,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5931,6 +6126,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "سب سکریپشن بنائیں" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5947,10 +6147,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5962,6 +6158,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..318d4186f3 100644 --- a/tools/translations/zh_CN.po +++ b/tools/translations/zh_CN.po @@ -3,15 +3,19 @@ # This file is distributed under the same license as the Godot source code. # # 纯洁的坏蛋 <tqj.zyy@gmail.com>, 2016. +# 孤月蓝风 <trlanfeng@foxmail.com>, 2016. +# Bruce Guo <guoboism@hotmail.com>, 2016. # Geequlim <geequlim@gmail.com>, 2016. # Luo Jun <vipsbpig@gmail.com>, 2016. +# oberon-tonya <360119124@qq.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-10-01 09:03+0000\n" +"Last-Translator: oberon-tonya <360119124@qq.com>\n" "Language-Team: Chinese (China) <https://hosted.weblate.org/projects/godot-" "engine/godot/zh_CN/>\n" "Language: zh_CN\n" @@ -19,7 +23,7 @@ msgstr "" "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" +"X-Generator: Weblate 2.9-dev\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -36,6 +40,12 @@ msgid "step argument is zero!" msgstr "step参数为0!" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "脚本没有实例化" @@ -45,7 +55,7 @@ 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)" @@ -68,30 +78,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 +110,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 @@ -172,23 +182,99 @@ msgstr "连接事件:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Expression" +msgstr "更改类型" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Add Node" msgstr "添加子节点" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature." +msgstr "按住Meta键放置一个访问器,按住Shift键放置一个通用签名" + +#: 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 +#, fuzzy +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "按住Ctrl键放置一个变量设定器。" + +#: 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 Getter Property" +msgstr "添加访问器属性" + +#: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" +msgstr "添加设置器" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Condition" +msgstr "拷贝动画" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Return" +msgstr "返回:" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "调用" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Get" +msgstr "设置" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" +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 @@ -198,21 +284,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 +340,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 +377,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,40 +386,117 @@ 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 "" +msgstr "脚本中未找到VariableSet: " + +#: modules/visual_script/visual_script_nodes.cpp +#, fuzzy +msgid "Custom node has no _step() method, can't process graph." +msgstr "自定义节点具备no_step()方法,不能生成图像" #: modules/visual_script/visual_script_nodes.cpp msgid "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." -msgstr "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "_step()的返回值无效,必须是整形(seq out),或字符串(error)。" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Error creating the signature object." +msgstr "写入项目PCK文件出错!" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "名称非法:" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "字体大小非法。" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "父路径非法" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "自定义字体文件非法。" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -487,6 +665,11 @@ msgid "" msgstr "" "NavigationMeshInstance类型节点必须作为Navigation节点的子孙才能提供导航数据。" +#: scene/3d/remote_transform.cpp +#, fuzzy +msgid "Path property must point to a valid Spatial node to work." +msgstr "path属性必须指向一个合法的Particles2D节点才能正常工作。" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -539,7 +722,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 "打开" @@ -709,19 +893,20 @@ msgid "" "functions. Making them visible for editing is fine though, but they will " "hide upon running." msgstr "" -"Popup对象在你调用popup()方法之前将保持隐藏,这里设置为可见并不代表执行场景时" -"它会出现。" +"Popup对象默认保持隐藏,除非你调用popup()方法。编辑时可以让它们保持可见,但运" +"行时它们会自动隐藏。" #: 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未设置render target。如果你刻意为之,直接在屏幕上显示其内容,使其" -"成为子控件的所以它可以获取大小。否则请设置render target,将其内部纹理分配给一" -"些节点显示。" +"这个Viewport未设置为render target。如果你刻意打算让其直接在屏幕上显示其内容," +"使其成为子控件的所以它可以有一个尺寸大小值。否则请设置为Render target,并将其" +"内部纹理分配给一些节点以显示。" #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -748,8 +933,9 @@ msgid "Disabled" msgstr "已禁用" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "All Selection" -msgstr "所有选项" +msgstr "所有选中项" #: tools/editor/animation_editor.cpp msgid "Move Add Key" @@ -1032,7 +1218,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 +1270,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 "搜索:" @@ -1135,10 +1322,6 @@ msgid "Method List For '%s':" msgstr "%s的方法列表" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "调用" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "方法列表:" @@ -1242,7 +1425,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:" @@ -1257,6 +1440,12 @@ msgid "Method in target Node must be specified!" msgstr "必须设置方法的对象节点!" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "连接到节点:" @@ -1334,11 +1523,26 @@ msgstr "信号" msgid "Create New" msgstr "新建" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "收藏:" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "搜索替换:" @@ -1597,14 +1801,6 @@ msgstr "向上移动收藏" 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 "预览" @@ -1654,10 +1850,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 "方法描述:" @@ -1752,7 +1944,7 @@ msgstr "正在分析" #: tools/editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "" +msgstr "创建缩略图" #: tools/editor/editor_node.cpp msgid "" @@ -1821,12 +2013,14 @@ msgid "Copy Resource" msgstr "拷贝资源" #: tools/editor/editor_node.cpp +#, fuzzy msgid "Make Built-In" -msgstr "" +msgstr "使之内置" #: tools/editor/editor_node.cpp +#, fuzzy msgid "Make Sub-Resources Unique" -msgstr "" +msgstr "使子资源唯一化" #: tools/editor/editor_node.cpp msgid "Open in Help" @@ -2010,14 +2204,6 @@ 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 "下一项" @@ -2103,6 +2289,11 @@ msgid "Quit to Project List" msgstr "退出到项目列表" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Distraction Free Mode" +msgstr "无干扰模式" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "导入资源" @@ -2119,8 +2310,9 @@ msgid "Import" msgstr "导入" #: tools/editor/editor_node.cpp +#, fuzzy msgid "Miscellaneous project or scene-wide tools." -msgstr "" +msgstr "其他工程或全场景工具" #: tools/editor/editor_node.cpp msgid "Tools" @@ -2270,6 +2462,11 @@ msgid "Editor Layout" msgstr "编辑器布局" #: tools/editor/editor_node.cpp +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "全屏模式" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "安装导出模板" @@ -2294,6 +2491,10 @@ msgid "Update Changes" msgstr "有更改时更新UI" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "属性面板" @@ -2333,6 +2534,10 @@ msgstr "对象属性。" msgid "FileSystem" msgstr "文件系统" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "节点" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "输出" @@ -2430,12 +2635,14 @@ msgid "Time:" msgstr "时间:" #: tools/editor/editor_profiler.cpp +#, fuzzy msgid "Inclusive" -msgstr "" +msgstr "包含" #: tools/editor/editor_profiler.cpp +#, fuzzy msgid "Self" -msgstr "" +msgstr "自身" #: tools/editor/editor_profiler.cpp msgid "Frame #:" @@ -2664,10 +2871,13 @@ msgid "No target font resource!" msgstr "请设置目标字体资源!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp +#, fuzzy msgid "" "Invalid file extension.\n" "Please use .fnt." msgstr "" +"文件扩展名不合法\n" +"请使用.fnt文件" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Can't load/process source font." @@ -2767,8 +2977,9 @@ msgid "Audio Sample" msgstr "音效" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "New Clip" -msgstr "" +msgstr "新片段" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Animation Options" @@ -2787,28 +2998,34 @@ msgid "Optimizer" msgstr "优化" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Max Linear Error" -msgstr "" +msgstr "最大线性误差" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Max Angular Error" -msgstr "" +msgstr "最大角度误差" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Max Angle" -msgstr "" +msgstr "最大角度" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Clips" -msgstr "" +msgstr "剪辑" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Start(s)" -msgstr "" +msgstr "起点" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "End(s)" -msgstr "" +msgstr "终点" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp @@ -2824,12 +3041,14 @@ msgid "Source path is empty." msgstr "源路径为空。" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Couldn't load post-import script." -msgstr "" +msgstr "无法载入后导入脚本" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Invalid/broken script for post-import." -msgstr "" +msgstr "后导入脚本被损坏或不合法" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error importing scene." @@ -2856,8 +3075,9 @@ msgid "Target Texture Folder:" msgstr "目标贴图目录:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Post-Process Script:" -msgstr "" +msgstr "后处理脚本:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Custom Root Node Type:" @@ -2897,16 +3117,19 @@ msgid "Running Custom Script.." msgstr "执行自定义脚本.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Couldn't load post-import script:" -msgstr "" +msgstr "无法载入后导入脚本:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Invalid/broken script for post-import (check console):" -msgstr "" +msgstr "后处理脚本被损坏或不合法(查看控制台):" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Error running post-import script:" -msgstr "" +msgstr "后处理脚本运行发生错误" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Image:" @@ -2918,7 +3141,7 @@ msgstr "不允许导入文件本身:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't localize path: %s (already local)" -msgstr "" +msgstr "无法本地化路径:%s (已经是本地路径)" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Saving.." @@ -2998,7 +3221,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)" @@ -3053,11 +3276,11 @@ msgstr "加载源图片" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Slicing" -msgstr "" +msgstr "切片中" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Inserting" -msgstr "" +msgstr "插入中" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Saving" @@ -3161,12 +3384,9 @@ msgid "Translation" msgstr "语言" #: tools/editor/multi_node_edit.cpp +#, fuzzy msgid "MultiNode Set" -msgstr "" - -#: tools/editor/node_dock.cpp -msgid "Node" -msgstr "节点" +msgstr "多节点组" #: tools/editor/node_dock.cpp msgid "Groups" @@ -3261,7 +3481,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 +3496,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." @@ -3341,7 +3562,7 @@ msgstr "混合时间:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "" +msgstr "接下来(自动排列):" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" @@ -3472,7 +3693,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 +3701,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 +3778,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 +3891,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 +3900,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.." @@ -3711,6 +3932,11 @@ msgid "Clear Bones" msgstr "清除骨骼" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Show Bones" +msgstr "添加骨骼" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "添加IK链" @@ -3769,7 +3995,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 +4225,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 +4233,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 +4245,7 @@ msgstr "" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "" +msgstr "目标曲面:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" @@ -4450,6 +4676,11 @@ msgid "Close Docs" msgstr "拷贝到下一行" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "关闭" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4559,6 +4790,11 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Pick Color" +msgstr "颜色" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "向上移动" @@ -4938,6 +5174,11 @@ msgid "Insert Animation Key" msgstr "插入动画帧" #: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Focus Origin" +msgstr "显示原点" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "选中选中项" @@ -5203,6 +5444,11 @@ msgid "Remove Item" msgstr "移除项目" #: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "保存主题" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "添加类项目" @@ -6021,6 +6267,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "下一个脚本" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "加载文件出错:不是资源文件!" @@ -6037,10 +6288,6 @@ msgid "On" msgstr "启用" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "设置" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "属性:" @@ -6052,6 +6299,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工具:" @@ -6568,12 +6825,14 @@ msgid "Change Capsule Shape Height" msgstr "更改胶囊高度" #: tools/editor/spatial_editor_gizmos.cpp +#, fuzzy msgid "Change Ray Shape Length" -msgstr "" +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..9f6d7786ac 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-09-05 13:21+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\n" #: modules/gdscript/gd_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -30,6 +33,12 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "" @@ -98,7 +107,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 +141,7 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "" +msgstr "新增訊號" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -158,11 +167,48 @@ msgid "Editing Signal:" msgstr "連接" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 +#, 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 @@ -170,7 +216,40 @@ msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -225,9 +304,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 +313,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,19 +374,94 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid unique name." +msgstr "無效名稱" + +#: platform/winrt/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "無效字型" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -440,6 +606,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -459,57 +629,55 @@ 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" -msgstr "" +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 +700,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,58 +728,59 @@ 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 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 "設備" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Button" -msgstr "" +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 @@ -678,7 +847,7 @@ msgstr "" #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Unknown font format." -msgstr "不明字形格式" +msgstr "字形格式不明" #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -692,15 +861,16 @@ msgstr "無效字型" #: tools/editor/animation_editor.cpp msgid "Disabled" -msgstr "" +msgstr "已停用" #: tools/editor/animation_editor.cpp msgid "All Selection" -msgstr "" +msgstr "所有選項" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Move Add Key" -msgstr "" +msgstr "移動" #: tools/editor/animation_editor.cpp msgid "Anim Change Transition" @@ -735,8 +905,9 @@ msgid "Move Anim Track Down" msgstr "" #: tools/editor/animation_editor.cpp +#, fuzzy msgid "Remove Anim Track" -msgstr "" +msgstr "移除動畫" #: tools/editor/animation_editor.cpp msgid "Set Transitions to:" @@ -776,9 +947,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 +1199,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 "" @@ -1045,7 +1216,7 @@ 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" @@ -1053,7 +1224,7 @@ msgstr "全部" #: tools/editor/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "地址:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Support.." @@ -1061,16 +1232,15 @@ 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 -#, fuzzy msgid "Testing" -msgstr "設定" +msgstr "測試" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -1081,10 +1251,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1122,11 +1288,11 @@ 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" @@ -1138,11 +1304,11 @@ 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" @@ -1162,7 +1328,7 @@ msgstr "替換為" #: tools/editor/code_editor.cpp msgid "Case Sensitive" -msgstr "" +msgstr "符合大小寫" #: tools/editor/code_editor.cpp msgid "Backwards" @@ -1179,30 +1345,37 @@ 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 +#, fuzzy 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 "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp #, fuzzy msgid "Connect To Node:" msgstr "連到" @@ -1255,9 +1428,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,15 +1446,31 @@ msgstr "中斷" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "訊號" #: tools/editor/create_dialog.cpp msgid "Create New" +msgstr "新增" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 +#, fuzzy 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 @@ -1402,11 +1590,12 @@ msgstr "刪除" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name." -msgstr "" +msgstr "無效名稱" #: tools/editor/editor_autoload_settings.cpp +#, fuzzy msgid "Valid characters:" -msgstr "" +msgstr "有效字符:" #: tools/editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing engine class name." @@ -1421,14 +1610,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." @@ -1459,8 +1646,9 @@ msgid "Remove Autoload" msgstr "" #: tools/editor/editor_autoload_settings.cpp +#, fuzzy msgid "Enable" -msgstr "" +msgstr "啟用" #: tools/editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" @@ -1475,7 +1663,7 @@ msgstr "" #: tools/editor/plugins/sample_library_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Name" -msgstr "" +msgstr "名稱" #: tools/editor/editor_autoload_settings.cpp msgid "Singleton" @@ -1495,7 +1683,7 @@ msgstr "" #: tools/editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "正在更新場景..." #: tools/editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1519,7 +1707,7 @@ msgstr "" #: tools/editor/editor_file_dialog.cpp msgid "Refresh" -msgstr "" +msgstr "重新整理" #: tools/editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" @@ -1534,9 +1722,8 @@ msgid "Toggle Mode" msgstr "" #: tools/editor/editor_file_dialog.cpp -#, fuzzy msgid "Focus Path" -msgstr "複製" +msgstr "" #: tools/editor/editor_file_dialog.cpp #, fuzzy @@ -1548,17 +1735,9 @@ msgstr "上移" 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 "預覽" +msgstr "預覽:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" @@ -1605,10 +1784,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 +1834,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Importing:" -msgstr "導入中" +msgstr "導入中:" #: tools/editor/editor_node.cpp msgid "Node From Scene" @@ -1675,7 +1850,7 @@ 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.." @@ -1702,8 +1877,9 @@ msgid "Analyzing" msgstr "分析中" #: tools/editor/editor_node.cpp +#, fuzzy msgid "Creating Thumbnail" -msgstr "" +msgstr "正在建立縮圖" #: tools/editor/editor_node.cpp msgid "" @@ -1711,8 +1887,9 @@ msgid "" msgstr "" #: tools/editor/editor_node.cpp +#, fuzzy msgid "Failed to load resource." -msgstr "" +msgstr "資源加載失敗" #: tools/editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1900,9 +2077,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" @@ -1956,14 +2132,6 @@ 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 #, fuzzy msgid "Next tab" msgstr "下一個" @@ -1993,9 +2161,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" @@ -2051,6 +2218,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2096,9 +2267,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 +2280,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 +2356,8 @@ msgid "" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "當改變時更新" +msgstr "同步更新腳本" #: tools/editor/editor_node.cpp msgid "" @@ -2214,6 +2380,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2238,6 +2408,10 @@ msgid "Update Changes" msgstr "當改變時更新" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "監視器" @@ -2277,6 +2451,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -2435,7 +2613,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 +2660,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.." @@ -3107,10 +3284,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3238,9 +3411,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 +3721,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 +3741,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" @@ -3653,6 +3823,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4341,9 +4515,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" @@ -4393,6 +4566,11 @@ msgid "Close Docs" msgstr "關閉場景" #: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Close All" +msgstr "關閉" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4500,6 +4678,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "上移" @@ -4876,6 +5058,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Focus Selection" msgstr "只限選中" @@ -5142,6 +5328,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5953,6 +6143,11 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +#, fuzzy +msgid "New Script" +msgstr "下一個腳本" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5969,10 +6164,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5984,6 +6175,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 +6587,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..af66795003 100644 --- a/tools/translations/zh_TW.po +++ b/tools/translations/zh_TW.po @@ -32,6 +32,12 @@ msgid "step argument is zero!" msgstr "" #: modules/gdscript/gd_functions.cpp +msgid "" +"Paths cannot start with '/', absolute paths must start with 'res://', " +"'user://', or 'local://'" +msgstr "" + +#: modules/gdscript/gd_functions.cpp msgid "Not a script with an instance" msgstr "" @@ -154,19 +160,88 @@ msgid "Editing Signal:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +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 -msgid "Add Getter Property" +msgid "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#: tools/editor/property_editor.cpp +msgid "Set" msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -229,7 +304,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,19 +364,92 @@ 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 "" -"Custom node has no _get_output_port_unsequenced(idx,wmem), but unsequenced " -"ports were specified." +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." msgstr "" #: modules/visual_script/visual_script_nodes.cpp -msgid "Custom node has no _step() method, can't process graph." +msgid "just pressed" msgstr "" #: modules/visual_script/visual_script_nodes.cpp +msgid "just released" +msgstr "" + +#: platform/winrt/export/export.cpp msgid "" -"Invalid return value from _step(), must be integer (seq out), or string " -"(error)." +"Couldn't read the certficate file. Are the path and password both correct?" +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the signature object." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Error creating the package signature." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "" +"No export templates found.\n" +"Download and install export templates." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom debug package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Custom release package not found." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid unique name." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/winrt/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "" #: scene/2d/animated_sprite.cpp @@ -440,6 +600,10 @@ msgid "" "It only provides navigation data." msgstr "" +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." @@ -488,7 +652,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 +1189,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 "" @@ -1075,10 +1241,6 @@ msgid "Method List For '%s':" msgstr "" #: tools/editor/call_dialog.cpp -msgid "Call" -msgstr "" - -#: tools/editor/call_dialog.cpp msgid "Method List:" msgstr "" @@ -1197,6 +1359,12 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to target " +"Node." +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Connect To Node:" msgstr "" @@ -1272,11 +1440,26 @@ msgstr "" msgid "Create New" msgstr "" +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Recent:" +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 "" @@ -1535,14 +1718,6 @@ msgstr "" 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 "" @@ -1592,10 +1767,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 "" @@ -1941,14 +2112,6 @@ 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 "" @@ -2034,6 +2197,10 @@ msgid "Quit to Project List" msgstr "" #: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Import assets to the project." msgstr "" @@ -2192,6 +2359,10 @@ msgid "Editor Layout" msgstr "" #: tools/editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Install Export Templates" msgstr "" @@ -2216,6 +2387,10 @@ msgid "Update Changes" msgstr "" #: tools/editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Inspector" msgstr "" @@ -2255,6 +2430,10 @@ msgstr "" msgid "FileSystem" msgstr "" +#: tools/editor/editor_node.cpp tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + #: tools/editor/editor_node.cpp msgid "Output" msgstr "" @@ -3084,10 +3263,6 @@ msgid "MultiNode Set" msgstr "" #: tools/editor/node_dock.cpp -msgid "Node" -msgstr "" - -#: tools/editor/node_dock.cpp msgid "Groups" msgstr "" @@ -3627,6 +3802,10 @@ msgid "Clear Bones" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" msgstr "" @@ -4365,6 +4544,10 @@ msgid "Close Docs" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/script_text_editor.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." @@ -4472,6 +4655,10 @@ msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +#: tools/editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + #: tools/editor/plugins/script_text_editor.cpp tools/editor/scene_tree_dock.cpp msgid "Move Up" msgstr "" @@ -4848,6 +5035,10 @@ msgid "Insert Animation Key" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" msgstr "" @@ -5113,6 +5304,10 @@ msgid "Remove Item" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" msgstr "" @@ -5924,6 +6119,10 @@ msgid "Assign" msgstr "" #: tools/editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: tools/editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "" @@ -5940,10 +6139,6 @@ msgid "On" msgstr "" #: tools/editor/property_editor.cpp -msgid "Set" -msgstr "" - -#: tools/editor/property_editor.cpp msgid "Properties:" msgstr "" @@ -5955,6 +6150,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 "" |