Browse Source

Merge branch 'master' of github.com:urho3d/Urho3D into websockets-implementation

Arnis Lielturks 5 years ago
parent
commit
d0ce62d4fc

+ 1 - 1
.github/workflows/main.yml

@@ -59,7 +59,7 @@ jobs:
       BUILD_TYPE: ${{ matrix.build-type }}
       BUILD_TYPE: ${{ matrix.build-type }}
       LIB_TYPE: ${{ matrix.lib-type }}
       LIB_TYPE: ${{ matrix.lib-type }}
       ARCH: ${{ matrix.architecture }}
       ARCH: ${{ matrix.architecture }}
-      DBE_TAG: latest
+      DBE_TAG: master
     steps:
     steps:
       - name: Checkout
       - name: Checkout
         uses: actions/checkout@v2
         uses: actions/checkout@v2

+ 4 - 1
Source/Urho3D/AngelScript/Generated_Members_A.cpp

@@ -304,7 +304,7 @@ void ASRegisterGenerated_Members_A(asIScriptEngine* engine)
     // virtual unsigned Deserializer::GetChecksum() | File: ../IO/Deserializer.h
     // virtual unsigned Deserializer::GetChecksum() | File: ../IO/Deserializer.h
     engine->RegisterObjectMethod("AbstractFile", "uint GetChecksum()", asMETHODPR(AbstractFile, GetChecksum, (), unsigned), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "uint GetChecksum()", asMETHODPR(AbstractFile, GetChecksum, (), unsigned), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "uint get_checksum()", asMETHODPR(AbstractFile, GetChecksum, (), unsigned), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "uint get_checksum()", asMETHODPR(AbstractFile, GetChecksum, (), unsigned), asCALL_THISCALL);
-    // virtual const String& Deserializer::GetName() const | File: ../IO/Deserializer.h
+    // const String& AbstractFile::GetName() const override | File: ../IO/AbstractFile.h
     engine->RegisterObjectMethod("AbstractFile", "const String& GetName() const", asMETHODPR(AbstractFile, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "const String& GetName() const", asMETHODPR(AbstractFile, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "const String& get_name() const", asMETHODPR(AbstractFile, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "const String& get_name() const", asMETHODPR(AbstractFile, GetName, () const, const String&), asCALL_THISCALL);
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
@@ -402,6 +402,9 @@ void ASRegisterGenerated_Members_A(asIScriptEngine* engine)
     engine->RegisterObjectMethod("AbstractFile", "uint Seek(uint)", asMETHODPR(AbstractFile, Seek, (unsigned), unsigned), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "uint Seek(uint)", asMETHODPR(AbstractFile, Seek, (unsigned), unsigned), asCALL_THISCALL);
     // unsigned Deserializer::SeekRelative(int delta) | File: ../IO/Deserializer.h
     // unsigned Deserializer::SeekRelative(int delta) | File: ../IO/Deserializer.h
     engine->RegisterObjectMethod("AbstractFile", "uint SeekRelative(int)", asMETHODPR(AbstractFile, SeekRelative, (int), unsigned), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "uint SeekRelative(int)", asMETHODPR(AbstractFile, SeekRelative, (int), unsigned), asCALL_THISCALL);
+    // virtual void AbstractFile::SetName(const String& name) | File: ../IO/AbstractFile.h
+    engine->RegisterObjectMethod("AbstractFile", "void SetName(const String&in)", asMETHODPR(AbstractFile, SetName, (const String&), void), asCALL_THISCALL);
+    engine->RegisterObjectMethod("AbstractFile", "void set_name(const String&in)", asMETHODPR(AbstractFile, SetName, (const String&), void), asCALL_THISCALL);
     // unsigned Deserializer::Tell() const | File: ../IO/Deserializer.h
     // unsigned Deserializer::Tell() const | File: ../IO/Deserializer.h
     engine->RegisterObjectMethod("AbstractFile", "uint Tell() const", asMETHODPR(AbstractFile, Tell, () const, unsigned), asCALL_THISCALL);
     engine->RegisterObjectMethod("AbstractFile", "uint Tell() const", asMETHODPR(AbstractFile, Tell, () const, unsigned), asCALL_THISCALL);
     // virtual unsigned Serializer::Write(const void* data, unsigned size)=0 | File: ../IO/Serializer.h
     // virtual unsigned Serializer::Write(const void* data, unsigned size)=0 | File: ../IO/Serializer.h

+ 3 - 2
Source/Urho3D/AngelScript/Generated_Members_F.cpp

@@ -244,7 +244,7 @@ void ASRegisterGenerated_Members_F(asIScriptEngine* engine)
     // FileMode File::GetMode() const | File: ../IO/File.h
     // FileMode File::GetMode() const | File: ../IO/File.h
     engine->RegisterObjectMethod("File", "FileMode GetMode() const", asMETHODPR(File, GetMode, () const, FileMode), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "FileMode GetMode() const", asMETHODPR(File, GetMode, () const, FileMode), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "FileMode get_mode() const", asMETHODPR(File, GetMode, () const, FileMode), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "FileMode get_mode() const", asMETHODPR(File, GetMode, () const, FileMode), asCALL_THISCALL);
-    // const String& File::GetName() const override | File: ../IO/File.h
+    // const String& AbstractFile::GetName() const override | File: ../IO/AbstractFile.h
     engine->RegisterObjectMethod("File", "const String& GetName() const", asMETHODPR(File, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "const String& GetName() const", asMETHODPR(File, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "const String& get_name() const", asMETHODPR(File, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "const String& get_name() const", asMETHODPR(File, GetName, () const, const String&), asCALL_THISCALL);
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
@@ -398,8 +398,9 @@ void ASRegisterGenerated_Members_F(asIScriptEngine* engine)
     // void Object::SetGlobalVar(StringHash key, const Variant& value) | File: ../Core/Object.h
     // void Object::SetGlobalVar(StringHash key, const Variant& value) | File: ../Core/Object.h
     engine->RegisterObjectMethod("File", "void SetGlobalVar(StringHash, const Variant&in)", asMETHODPR(File, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "void SetGlobalVar(StringHash, const Variant&in)", asMETHODPR(File, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "void set_globalVar(StringHash, const Variant&in)", asMETHODPR(File, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "void set_globalVar(StringHash, const Variant&in)", asMETHODPR(File, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
-    // void File::SetName(const String& name) | File: ../IO/File.h
+    // virtual void AbstractFile::SetName(const String& name) | File: ../IO/AbstractFile.h
     engine->RegisterObjectMethod("File", "void SetName(const String&in)", asMETHODPR(File, SetName, (const String&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("File", "void SetName(const String&in)", asMETHODPR(File, SetName, (const String&), void), asCALL_THISCALL);
+    engine->RegisterObjectMethod("File", "void set_name(const String&in)", asMETHODPR(File, SetName, (const String&), void), asCALL_THISCALL);
     // void Object::SubscribeToEvent(StringHash eventType, EventHandler* handler) | File: ../Core/Object.h
     // void Object::SubscribeToEvent(StringHash eventType, EventHandler* handler) | File: ../Core/Object.h
     // Error: type "EventHandler*" can not automatically bind
     // Error: type "EventHandler*" can not automatically bind
     // void Object::SubscribeToEvent(Object* sender, StringHash eventType, EventHandler* handler) | File: ../Core/Object.h
     // void Object::SubscribeToEvent(Object* sender, StringHash eventType, EventHandler* handler) | File: ../Core/Object.h

+ 9 - 6
Source/Urho3D/AngelScript/Generated_Members_N.cpp

@@ -39,10 +39,10 @@ static NamedPipe* NamedPipe_NamedPipe_Context()
     return new NamedPipe(GetScriptContext());
     return new NamedPipe(GetScriptContext());
 }
 }
 
 
-// NamedPipe::NamedPipe(Context* context, const String& pipeName, bool isServer) | File: ../IO/NamedPipe.h
-static NamedPipe* NamedPipe_NamedPipe_Context_String_bool(const String &pipeName, bool isServer)
+// NamedPipe::NamedPipe(Context* context, const String& name, bool isServer) | File: ../IO/NamedPipe.h
+static NamedPipe* NamedPipe_NamedPipe_Context_String_bool(const String &name, bool isServer)
 {
 {
-    return new NamedPipe(GetScriptContext(), pipeName, isServer);
+    return new NamedPipe(GetScriptContext(), name, isServer);
 }
 }
 
 
 // StringVector Deserializer::ReadStringVector() | File: ../IO/Deserializer.h
 // StringVector Deserializer::ReadStringVector() | File: ../IO/Deserializer.h
@@ -297,7 +297,7 @@ void ASRegisterGenerated_Members_N(asIScriptEngine* engine)
     // const VariantMap& Object::GetGlobalVars() const | File: ../Core/Object.h
     // const VariantMap& Object::GetGlobalVars() const | File: ../Core/Object.h
     engine->RegisterObjectMethod("NamedPipe", "const VariantMap& GetGlobalVars() const", asMETHODPR(NamedPipe, GetGlobalVars, () const, const VariantMap&), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "const VariantMap& GetGlobalVars() const", asMETHODPR(NamedPipe, GetGlobalVars, () const, const VariantMap&), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "const VariantMap& get_globalVars() const", asMETHODPR(NamedPipe, GetGlobalVars, () const, const VariantMap&), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "const VariantMap& get_globalVars() const", asMETHODPR(NamedPipe, GetGlobalVars, () const, const VariantMap&), asCALL_THISCALL);
-    // const String& NamedPipe::GetName() const override | File: ../IO/NamedPipe.h
+    // const String& AbstractFile::GetName() const override | File: ../IO/AbstractFile.h
     engine->RegisterObjectMethod("NamedPipe", "const String& GetName() const", asMETHODPR(NamedPipe, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "const String& GetName() const", asMETHODPR(NamedPipe, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "const String& get_name() const", asMETHODPR(NamedPipe, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "const String& get_name() const", asMETHODPR(NamedPipe, GetName, () const, const String&), asCALL_THISCALL);
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
@@ -343,11 +343,11 @@ void ASRegisterGenerated_Members_N(asIScriptEngine* engine)
     engine->RegisterObjectMethod("NamedPipe", "bool get_server() const", asMETHODPR(NamedPipe, IsServer, () const, bool), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "bool get_server() const", asMETHODPR(NamedPipe, IsServer, () const, bool), asCALL_THISCALL);
     // explicit NamedPipe::NamedPipe(Context* context) | File: ../IO/NamedPipe.h
     // explicit NamedPipe::NamedPipe(Context* context) | File: ../IO/NamedPipe.h
     engine->RegisterObjectBehaviour("NamedPipe", asBEHAVE_FACTORY, "NamedPipe@+ f()", asFUNCTION(NamedPipe_NamedPipe_Context), asCALL_CDECL);
     engine->RegisterObjectBehaviour("NamedPipe", asBEHAVE_FACTORY, "NamedPipe@+ f()", asFUNCTION(NamedPipe_NamedPipe_Context), asCALL_CDECL);
-    // NamedPipe::NamedPipe(Context* context, const String& pipeName, bool isServer) | File: ../IO/NamedPipe.h
+    // NamedPipe::NamedPipe(Context* context, const String& name, bool isServer) | File: ../IO/NamedPipe.h
     engine->RegisterObjectBehaviour("NamedPipe", asBEHAVE_FACTORY, "NamedPipe@+ f(const String&in, bool)", asFUNCTION(NamedPipe_NamedPipe_Context_String_bool), asCALL_CDECL);
     engine->RegisterObjectBehaviour("NamedPipe", asBEHAVE_FACTORY, "NamedPipe@+ f(const String&in, bool)", asFUNCTION(NamedPipe_NamedPipe_Context_String_bool), asCALL_CDECL);
     // virtual void Object::OnEvent(Object* sender, StringHash eventType, VariantMap& eventData) | File: ../Core/Object.h
     // virtual void Object::OnEvent(Object* sender, StringHash eventType, VariantMap& eventData) | File: ../Core/Object.h
     engine->RegisterObjectMethod("NamedPipe", "void OnEvent(Object@+, StringHash, VariantMap&)", asMETHODPR(NamedPipe, OnEvent, (Object*, StringHash, VariantMap&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "void OnEvent(Object@+, StringHash, VariantMap&)", asMETHODPR(NamedPipe, OnEvent, (Object*, StringHash, VariantMap&), void), asCALL_THISCALL);
-    // bool NamedPipe::Open(const String& pipeName, bool isServer) | File: ../IO/NamedPipe.h
+    // bool NamedPipe::Open(const String& name, bool isServer) | File: ../IO/NamedPipe.h
     engine->RegisterObjectMethod("NamedPipe", "bool Open(const String&in, bool)", asMETHODPR(NamedPipe, Open, (const String&, bool), bool), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "bool Open(const String&in, bool)", asMETHODPR(NamedPipe, Open, (const String&, bool), bool), asCALL_THISCALL);
     // unsigned NamedPipe::Read(void* dest, unsigned size) override | File: ../IO/NamedPipe.h
     // unsigned NamedPipe::Read(void* dest, unsigned size) override | File: ../IO/NamedPipe.h
     // Error: type "void*" can not automatically bind
     // Error: type "void*" can not automatically bind
@@ -453,6 +453,9 @@ void ASRegisterGenerated_Members_N(asIScriptEngine* engine)
     // void Object::SetGlobalVar(StringHash key, const Variant& value) | File: ../Core/Object.h
     // void Object::SetGlobalVar(StringHash key, const Variant& value) | File: ../Core/Object.h
     engine->RegisterObjectMethod("NamedPipe", "void SetGlobalVar(StringHash, const Variant&in)", asMETHODPR(NamedPipe, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "void SetGlobalVar(StringHash, const Variant&in)", asMETHODPR(NamedPipe, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "void set_globalVar(StringHash, const Variant&in)", asMETHODPR(NamedPipe, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("NamedPipe", "void set_globalVar(StringHash, const Variant&in)", asMETHODPR(NamedPipe, SetGlobalVar, (StringHash, const Variant&), void), asCALL_THISCALL);
+    // void NamedPipe::SetName(const String& name) override | File: ../IO/NamedPipe.h
+    engine->RegisterObjectMethod("NamedPipe", "void SetName(const String&in)", asMETHODPR(NamedPipe, SetName, (const String&), void), asCALL_THISCALL);
+    engine->RegisterObjectMethod("NamedPipe", "void set_name(const String&in)", asMETHODPR(NamedPipe, SetName, (const String&), void), asCALL_THISCALL);
     // void Object::SubscribeToEvent(StringHash eventType, EventHandler* handler) | File: ../Core/Object.h
     // void Object::SubscribeToEvent(StringHash eventType, EventHandler* handler) | File: ../Core/Object.h
     // Error: type "EventHandler*" can not automatically bind
     // Error: type "EventHandler*" can not automatically bind
     // void Object::SubscribeToEvent(Object* sender, StringHash eventType, EventHandler* handler) | File: ../Core/Object.h
     // void Object::SubscribeToEvent(Object* sender, StringHash eventType, EventHandler* handler) | File: ../Core/Object.h

+ 4 - 1
Source/Urho3D/AngelScript/Generated_Members_V.cpp

@@ -1578,7 +1578,7 @@ void ASRegisterGenerated_Members_V(asIScriptEngine* engine)
     // Error: type "const unsigned char*" can not automatically bind
     // Error: type "const unsigned char*" can not automatically bind
     // unsigned char* VectorBuffer::GetModifiableData() | File: ../IO/VectorBuffer.h
     // unsigned char* VectorBuffer::GetModifiableData() | File: ../IO/VectorBuffer.h
     // Error: type "unsigned char*" can not automatically bind
     // Error: type "unsigned char*" can not automatically bind
-    // virtual const String& Deserializer::GetName() const | File: ../IO/Deserializer.h
+    // const String& AbstractFile::GetName() const override | File: ../IO/AbstractFile.h
     engine->RegisterObjectMethod("VectorBuffer", "const String& GetName() const", asMETHODPR(VectorBuffer, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("VectorBuffer", "const String& GetName() const", asMETHODPR(VectorBuffer, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("VectorBuffer", "const String& get_name() const", asMETHODPR(VectorBuffer, GetName, () const, const String&), asCALL_THISCALL);
     engine->RegisterObjectMethod("VectorBuffer", "const String& get_name() const", asMETHODPR(VectorBuffer, GetName, () const, const String&), asCALL_THISCALL);
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
     // unsigned Deserializer::GetPosition() const | File: ../IO/Deserializer.h
@@ -1684,6 +1684,9 @@ void ASRegisterGenerated_Members_V(asIScriptEngine* engine)
     // Error: type "void*" can not automatically bind
     // Error: type "void*" can not automatically bind
     // void VectorBuffer::SetData(Deserializer& source, unsigned size) | File: ../IO/VectorBuffer.h
     // void VectorBuffer::SetData(Deserializer& source, unsigned size) | File: ../IO/VectorBuffer.h
     engine->RegisterObjectMethod("VectorBuffer", "void SetData(Deserializer&, uint)", asMETHODPR(VectorBuffer, SetData, (Deserializer&, unsigned), void), asCALL_THISCALL);
     engine->RegisterObjectMethod("VectorBuffer", "void SetData(Deserializer&, uint)", asMETHODPR(VectorBuffer, SetData, (Deserializer&, unsigned), void), asCALL_THISCALL);
+    // virtual void AbstractFile::SetName(const String& name) | File: ../IO/AbstractFile.h
+    engine->RegisterObjectMethod("VectorBuffer", "void SetName(const String&in)", asMETHODPR(VectorBuffer, SetName, (const String&), void), asCALL_THISCALL);
+    engine->RegisterObjectMethod("VectorBuffer", "void set_name(const String&in)", asMETHODPR(VectorBuffer, SetName, (const String&), void), asCALL_THISCALL);
     // unsigned Deserializer::Tell() const | File: ../IO/Deserializer.h
     // unsigned Deserializer::Tell() const | File: ../IO/Deserializer.h
     engine->RegisterObjectMethod("VectorBuffer", "uint Tell() const", asMETHODPR(VectorBuffer, Tell, () const, unsigned), asCALL_THISCALL);
     engine->RegisterObjectMethod("VectorBuffer", "uint Tell() const", asMETHODPR(VectorBuffer, Tell, () const, unsigned), asCALL_THISCALL);
     // explicit VectorBuffer::VectorBuffer(const PODVector<unsigned char>& data) | File: ../IO/VectorBuffer.h
     // explicit VectorBuffer::VectorBuffer(const PODVector<unsigned char>& data) | File: ../IO/VectorBuffer.h

+ 66 - 163
Source/Urho3D/CMakeLists.txt

@@ -155,183 +155,86 @@ string (REPLACE ";" "/[^;]+;" EXCLUDE_PATTERNS "${EXCLUDED_SOURCE_DIRS};")
 define_source_files (EXCLUDE_PATTERNS ${EXCLUDE_PATTERNS} GLOB_CPP_PATTERNS *.cpp ${GLOB_OBJC_PATTERN} RECURSE GROUP)
 define_source_files (EXCLUDE_PATTERNS ${EXCLUDE_PATTERNS} GLOB_CPP_PATTERNS *.cpp ${GLOB_OBJC_PATTERN} RECURSE GROUP)
 
 
 if (URHO3D_GENERATEBINDINGS)
 if (URHO3D_GENERATEBINDINGS)
-    set (SOURCE_FILES_WITHOUT_GENERATED "${SOURCE_FILES}")
-    list(REMOVE_ITEM SOURCE_FILES_WITHOUT_GENERATED "AngelScript/Generated_Enums.cpp"
-                                                    "AngelScript/Generated_Classes.cpp"
-                                                    "AngelScript/Generated_Members_HighPriority.cpp"
-                                                    "AngelScript/Generated_Members_A.cpp"
-                                                    "AngelScript/Generated_Members_B.cpp"
-                                                    "AngelScript/Generated_Members_Constraint.cpp"
-                                                    "AngelScript/Generated_Members_Ca_Cm.cpp"
-                                                    "AngelScript/Generated_Members_Cn_Cz.cpp"
-                                                    "AngelScript/Generated_Members_D.cpp"
-                                                    "AngelScript/Generated_Members_E.cpp"
-                                                    "AngelScript/Generated_Members_F.cpp"
-                                                    "AngelScript/Generated_Members_G.cpp"
-                                                    "AngelScript/Generated_Members_H.cpp"
-                                                    "AngelScript/Generated_Members_I.cpp"
-                                                    "AngelScript/Generated_Members_J.cpp"
-                                                    "AngelScript/Generated_Members_K.cpp"
-                                                    "AngelScript/Generated_Members_L.cpp"
-                                                    "AngelScript/Generated_Members_M.cpp"
-                                                    "AngelScript/Generated_Members_N.cpp"
-                                                    "AngelScript/Generated_Members_O.cpp"
-                                                    "AngelScript/Generated_Members_P.cpp"
-                                                    "AngelScript/Generated_Members_Q.cpp"
-                                                    "AngelScript/Generated_Members_R.cpp"
-                                                    "AngelScript/Generated_Members_Sa_Sm.cpp"
-                                                    "AngelScript/Generated_Members_Sn_Sz.cpp"
-                                                    "AngelScript/Generated_Members_Ta_Tm.cpp"
-                                                    "AngelScript/Generated_Members_Tn_Tz.cpp"
-                                                    "AngelScript/Generated_Members_U.cpp"
-                                                    "AngelScript/Generated_Members_V.cpp"
-                                                    "AngelScript/Generated_Members_W.cpp"
-                                                    "AngelScript/Generated_Members_X.cpp"
-                                                    "AngelScript/Generated_Members_Y.cpp"
-                                                    "AngelScript/Generated_Members_X.cpp"
-                                                    "AngelScript/Generated_Members_Other.cpp"
-                                                    "AngelScript/Generated_GlobalVariables.cpp"
-                                                    "AngelScript/Generated_GlobalFunctions.cpp"
-                                                    "AngelScript/Generated_Templates.h")
-
-    find_package (Doxygen REQUIRED)
-    
+
+    find_package (Doxygen 1.8.17 REQUIRED)
     if (NOT DOXYGEN_FOUND)
     if (NOT DOXYGEN_FOUND)
-        message (FATAL_ERROR Doxygen required to generate bindings)
+        message (FATAL_ERROR "Doxygen >= 1.8.17 required to generate bindings")
     endif ()
     endif ()
-    
+
     # Generating Doxyfile
     # Generating Doxyfile
-    configure_file (${CMAKE_SOURCE_DIR}/Source/Tools/BindingGenerator/Doxyfile.in ${CMAKE_BINARY_DIR}/Source/Tools/BindingGenerator/generated/Doxyfile)
+    set (DOXYFILE_PATH "${CMAKE_BINARY_DIR}/Source/Tools/BindingGenerator/generated/Doxyfile")
+    configure_file ("${CMAKE_SOURCE_DIR}/Source/Tools/BindingGenerator/Doxyfile.in" "${DOXYFILE_PATH}")
+
+    set (XML_AST_DIR "${CMAKE_BINARY_DIR}/Source/Tools/BindingGenerator/generated/xml")
+    set (BINDING_GENERATOR_PATH "${CMAKE_BINARY_DIR}/bin/tool/BindingGenerator")
+
+    set (AS_GENERATED_FILES "AngelScript/Generated_Enums.cpp"
+                            "AngelScript/Generated_Classes.cpp"
+                            "AngelScript/Generated_Members_HighPriority.cpp"
+                            "AngelScript/Generated_Members_A.cpp"
+                            "AngelScript/Generated_Members_B.cpp"
+                            "AngelScript/Generated_Members_Constraint.cpp"
+                            "AngelScript/Generated_Members_Ca_Cm.cpp"
+                            "AngelScript/Generated_Members_Cn_Cz.cpp"
+                            "AngelScript/Generated_Members_D.cpp"
+                            "AngelScript/Generated_Members_E.cpp"
+                            "AngelScript/Generated_Members_F.cpp"
+                            "AngelScript/Generated_Members_G.cpp"
+                            "AngelScript/Generated_Members_H.cpp"
+                            "AngelScript/Generated_Members_I.cpp"
+                            "AngelScript/Generated_Members_J.cpp"
+                            "AngelScript/Generated_Members_K.cpp"
+                            "AngelScript/Generated_Members_L.cpp"
+                            "AngelScript/Generated_Members_M.cpp"
+                            "AngelScript/Generated_Members_N.cpp"
+                            "AngelScript/Generated_Members_O.cpp"
+                            "AngelScript/Generated_Members_P.cpp"
+                            "AngelScript/Generated_Members_Q.cpp"
+                            "AngelScript/Generated_Members_R.cpp"
+                            "AngelScript/Generated_Members_Sa_Sm.cpp"
+                            "AngelScript/Generated_Members_Sn_Sz.cpp"
+                            "AngelScript/Generated_Members_Ta_Tm.cpp"
+                            "AngelScript/Generated_Members_Tn_Tz.cpp"
+                            "AngelScript/Generated_Members_U.cpp"
+                            "AngelScript/Generated_Members_V.cpp"
+                            "AngelScript/Generated_Members_W.cpp"
+                            "AngelScript/Generated_Members_X.cpp"
+                            "AngelScript/Generated_Members_Y.cpp"
+                            "AngelScript/Generated_Members_Z.cpp"
+                            "AngelScript/Generated_Members_Other.cpp"
+                            "AngelScript/Generated_GlobalVariables.cpp"
+                            "AngelScript/Generated_GlobalFunctions.cpp"
+                            "AngelScript/Generated_Templates.h")
+
+    set (AS_GENERATED_FILES_FULL_PATHS "${AS_GENERATED_FILES}")
+    # Add "${CMAKE_SOURCE_DIR}/Source/Urho3D/" to every item in list
+    list(TRANSFORM AS_GENERATED_FILES_FULL_PATHS PREPEND "${CMAKE_SOURCE_DIR}/Source/Urho3D/")
+
+    # If generated files already exists they will be in list SOURCE_FILES already.
+    # We need list without generated files to solve circular dependency
+    set (SOURCE_FILES_WITHOUT_GENERATED "${SOURCE_FILES}")
+    list (REMOVE_ITEM SOURCE_FILES_WITHOUT_GENERATED ${AS_GENERATED_FILES})
 
 
-    
-    set (XML_AST_DIR ${CMAKE_BINARY_DIR}/Source/Tools/BindingGenerator/generated/xml)
-    
     # Generate xmls and run BindingGenerator
     # Generate xmls and run BindingGenerator
-    add_custom_command (OUTPUT ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Enums.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Classes.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_HighPriority.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_A.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_B.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Constraint.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Ca_Cm.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Cn_Cz.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_D.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_E.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_F.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_G.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_H.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_I.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_J.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_K.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_L.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_M.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_N.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_O.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_P.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Q.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_R.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Sa_Sm.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Sn_Sz.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Ta_Tm.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Tn_Tz.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_U.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_V.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_W.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_X.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Y.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Z.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Other.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_GlobalVariables.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_GlobalFunctions.cpp
-                               ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Templates.h
+    add_custom_command (OUTPUT ${AS_GENERATED_FILES_FULL_PATHS}
                                #${CMAKE_SOURCE_DIR}/Source/Urho3D/Lua/Generated.cpp
                                #${CMAKE_SOURCE_DIR}/Source/Urho3D/Lua/Generated.cpp
                                #${CMAKE_SOURCE_DIR}/Source/Urho3D/JavaScript/Generated.cpp
                                #${CMAKE_SOURCE_DIR}/Source/Urho3D/JavaScript/Generated.cpp
                                #${CMAKE_SOURCE_DIR}/Source/Urho3D/CSharp/Generated.cpp
                                #${CMAKE_SOURCE_DIR}/Source/Urho3D/CSharp/Generated.cpp
                                #fake_output_to_force_run_every_time
                                #fake_output_to_force_run_every_time
                         COMMAND ${CMAKE_COMMAND} -E echo "Generating XMLs with AST to ${XML_AST_DIR}"
                         COMMAND ${CMAKE_COMMAND} -E echo "Generating XMLs with AST to ${XML_AST_DIR}"
-                        COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/Source/Tools/BindingGenerator/generated/Doxyfile"
-                        COMMAND ${CMAKE_COMMAND} -E echo "Running ${CMAKE_BINARY_DIR}/bin/tool/BindingGenerator ${XML_AST_DIR} ${CMAKE_SOURCE_DIR}"
-                        COMMAND ${CMAKE_BINARY_DIR}/bin/tool/BindingGenerator "${XML_AST_DIR}" "${CMAKE_SOURCE_DIR}"
-                        DEPENDS BindingGenerator ${CMAKE_BINARY_DIR}/Source/Tools/BindingGenerator/generated/Doxyfile "${SOURCE_FILES_WITHOUT_GENERATED}"
+                        COMMAND ${DOXYGEN_EXECUTABLE} "${DOXYFILE_PATH}"
+                        COMMAND ${CMAKE_COMMAND} -E echo "Running ${BINDING_GENERATOR_PATH} ${XML_AST_DIR} ${CMAKE_SOURCE_DIR}"
+                        COMMAND "${BINDING_GENERATOR_PATH}" "${XML_AST_DIR}" "${CMAKE_SOURCE_DIR}"
+                        DEPENDS BindingGenerator "${DOXYFILE_PATH}" "${SOURCE_FILES_WITHOUT_GENERATED}"
                         COMMENT "Generating bindings to script languages")
                         COMMENT "Generating bindings to script languages")
 
 
     if (URHO3D_ANGELSCRIPT)
     if (URHO3D_ANGELSCRIPT)
-        list (APPEND SOURCE_FILES ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Enums.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Classes.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_HighPriority.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_A.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_B.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Constraint.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Ca_Cm.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Cn_Cz.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_D.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_E.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_F.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_G.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_H.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_I.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_J.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_K.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_L.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_M.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_N.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_O.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_P.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Q.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_R.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Sa_Sm.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Sn_Sz.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Ta_Tm.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Tn_Tz.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_U.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_V.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_W.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_X.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Y.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Z.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Other.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_GlobalVariables.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_GlobalFunctions.cpp
-                                  ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Templates.h)
-                                  
-        source_group ("Source Files\\AngelScript" FILES ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Enums.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Classes.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_HighPriority.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_A.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_B.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Constraint.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Ca_Cm.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Cn_Cz.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_D.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_E.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_F.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_G.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_H.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_I.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_J.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_K.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_L.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_M.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_N.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_O.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_P.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Q.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_R.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Sa_Sm.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Sn_Sz.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Ta_Tm.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Tn_Tz.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_U.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_V.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_W.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_X.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Y.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Z.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Members_Other.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_GlobalVariables.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_GlobalFunctions.cpp
-                                                        ${CMAKE_SOURCE_DIR}/Source/Urho3D/AngelScript/Generated_Templates.h)
+        # Make sure we have generated files in SOURCE_FILES
+        set (SOURCE_FILES "${SOURCE_FILES_WITHOUT_GENERATED}")
+        list (APPEND SOURCE_FILES ${AS_GENERATED_FILES})
+        source_group ("Source Files\\AngelScript" FILES ${AS_GENERATED_FILES})
     endif()
     endif()
+
 endif ()
 endif ()
 
 
 # Define generated source files
 # Define generated source files

+ 9 - 0
Source/Urho3D/IO/AbstractFile.h

@@ -39,6 +39,15 @@ public:
     explicit AbstractFile(unsigned int size) : Deserializer(size) { }
     explicit AbstractFile(unsigned int size) : Deserializer(size) { }
     /// Destruct.
     /// Destruct.
     ~AbstractFile() override = default;
     ~AbstractFile() override = default;
+    /// Change the file name. Used by the resource system.
+    /// @property
+    virtual void SetName(const String& name) { name_ = name; }
+    /// Return the file name.
+    const String& GetName() const override { return name_; }
+
+protected:
+    /// File name.
+    String name_;
 };
 };
 
 
 }
 }

+ 3 - 8
Source/Urho3D/IO/File.cpp

@@ -144,7 +144,7 @@ bool File::Open(PackageFile* package, const String& fileName)
         return false;
         return false;
     }
     }
 
 
-    fileName_ = fileName;
+    name_ = fileName;
     offset_ = entry->offset_;
     offset_ = entry->offset_;
     checksum_ = entry->checksum_;
     checksum_ = entry->checksum_;
     size_ = entry->size_;
     size_ = entry->size_;
@@ -411,11 +411,6 @@ void File::Flush()
         fflush((FILE*)handle_);
         fflush((FILE*)handle_);
 }
 }
 
 
-void File::SetName(const String& name)
-{
-    fileName_ = name;
-}
-
 bool File::IsOpen() const
 bool File::IsOpen() const
 {
 {
 #ifdef __ANDROID__
 #ifdef __ANDROID__
@@ -463,7 +458,7 @@ bool File::OpenInternal(const String& fileName, FileMode mode, bool fromPackage)
         }
         }
         else
         else
         {
         {
-            fileName_ = fileName;
+            name_ = fileName;
             mode_ = mode;
             mode_ = mode;
             position_ = 0;
             position_ = 0;
             if (!fromPackage)
             if (!fromPackage)
@@ -515,7 +510,7 @@ bool File::OpenInternal(const String& fileName, FileMode mode, bool fromPackage)
         offset_ = 0;
         offset_ = 0;
     }
     }
 
 
-    fileName_ = fileName;
+    name_ = fileName;
     mode_ = mode;
     mode_ = mode;
     position_ = 0;
     position_ = 0;
     checksum_ = 0;
     checksum_ = 0;

+ 0 - 7
Source/Urho3D/IO/File.h

@@ -80,9 +80,6 @@ public:
     /// Write bytes to the file. Return number of bytes actually written.
     /// Write bytes to the file. Return number of bytes actually written.
     unsigned Write(const void* data, unsigned size) override;
     unsigned Write(const void* data, unsigned size) override;
 
 
-    /// Return the file name.
-    const String& GetName() const override { return fileName_; }
-
     /// Return a checksum of the file contents using the SDBM hash algorithm.
     /// Return a checksum of the file contents using the SDBM hash algorithm.
     unsigned GetChecksum() override;
     unsigned GetChecksum() override;
 
 
@@ -94,8 +91,6 @@ public:
     void Close();
     void Close();
     /// Flush any buffered output to the file.
     /// Flush any buffered output to the file.
     void Flush();
     void Flush();
-    /// Change the file name. Used by the resource system.
-    void SetName(const String& name);
 
 
     /// Return the open mode.
     /// Return the open mode.
     /// @property
     /// @property
@@ -120,8 +115,6 @@ private:
     /// Seek in file internally using either C standard IO functions or SDL RWops for Android asset files.
     /// Seek in file internally using either C standard IO functions or SDL RWops for Android asset files.
     void SeekInternal(unsigned newPosition);
     void SeekInternal(unsigned newPosition);
 
 
-    /// File name.
-    String fileName_;
     /// Open mode.
     /// Open mode.
     FileMode mode_;
     FileMode mode_;
     /// File handle.
     /// File handle.

+ 37 - 31
Source/Urho3D/IO/NamedPipe.cpp

@@ -54,7 +54,7 @@ NamedPipe::NamedPipe(Context* context) :
 {
 {
 }
 }
 
 
-NamedPipe::NamedPipe(Context* context, const String& pipeName, bool isServer) :
+NamedPipe::NamedPipe(Context* context, const String& name, bool isServer) :
     Object(context),
     Object(context),
     isServer_(false),
     isServer_(false),
 #ifdef _WIN32
 #ifdef _WIN32
@@ -64,7 +64,7 @@ NamedPipe::NamedPipe(Context* context, const String& pipeName, bool isServer) :
     writeHandle_(-1)
     writeHandle_(-1)
 #endif
 #endif
 {
 {
-    Open(pipeName, isServer);
+    Open(name, isServer);
 }
 }
 
 
 NamedPipe::~NamedPipe()
 NamedPipe::~NamedPipe()
@@ -81,7 +81,7 @@ unsigned NamedPipe::Seek(unsigned position)
 
 
 static const char* pipePath = "\\\\.\\pipe\\";
 static const char* pipePath = "\\\\.\\pipe\\";
 
 
-bool NamedPipe::Open(const String& pipeName, bool isServer)
+bool NamedPipe::Open(const String& name, bool isServer)
 {
 {
     URHO3D_PROFILE(OpenNamedPipe);
     URHO3D_PROFILE(OpenNamedPipe);
 
 
@@ -91,7 +91,7 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
 
 
     if (isServer)
     if (isServer)
     {
     {
-        handle_ = CreateNamedPipeW(WString(pipePath + pipeName).CString(),
+        handle_ = CreateNamedPipeW(WString(pipePath + name).CString(),
             PIPE_ACCESS_DUPLEX,
             PIPE_ACCESS_DUPLEX,
             PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_NOWAIT,
             PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_NOWAIT,
             1,
             1,
@@ -103,13 +103,13 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
 
 
         if (handle_ == INVALID_HANDLE_VALUE)
         if (handle_ == INVALID_HANDLE_VALUE)
         {
         {
-            URHO3D_LOGERROR("Failed to create named pipe " + pipeName);
+            URHO3D_LOGERROR("Failed to create named pipe " + name);
             return false;
             return false;
         }
         }
         else
         else
         {
         {
-            URHO3D_LOGDEBUG("Created named pipe " + pipeName);
-            pipeName_ = pipeName;
+            URHO3D_LOGDEBUG("Created named pipe " + name);
+            name_ = name;
             isServer_ = true;
             isServer_ = true;
             return true;
             return true;
         }
         }
@@ -117,7 +117,7 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
     else
     else
     {
     {
         handle_ = CreateFileW(
         handle_ = CreateFileW(
-            WString(pipePath + pipeName).CString(),
+            WString(pipePath + name).CString(),
             GENERIC_READ | GENERIC_WRITE,
             GENERIC_READ | GENERIC_WRITE,
             0,
             0,
             nullptr,
             nullptr,
@@ -128,13 +128,13 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
 
 
         if (handle_ == INVALID_HANDLE_VALUE)
         if (handle_ == INVALID_HANDLE_VALUE)
         {
         {
-            URHO3D_LOGERROR("Failed to connect to named pipe " + pipeName);
+            URHO3D_LOGERROR("Failed to connect to named pipe " + name);
             return false;
             return false;
         }
         }
         else
         else
         {
         {
-            URHO3D_LOGDEBUG("Connected to named pipe " + pipeName);
-            pipeName_ = pipeName;
+            URHO3D_LOGDEBUG("Connected to named pipe " + name);
+            name_ = name;
             return true;
             return true;
         }
         }
     }
     }
@@ -178,9 +178,9 @@ void NamedPipe::Close()
 
 
         CloseHandle(handle_);
         CloseHandle(handle_);
         handle_ = INVALID_HANDLE_VALUE;
         handle_ = INVALID_HANDLE_VALUE;
-        pipeName_.Clear();
+        name_.Clear();
 
 
-        URHO3D_LOGDEBUG("Closed named pipe " + pipeName_);
+        URHO3D_LOGDEBUG("Closed named pipe " + name_);
     }
     }
 }
 }
 
 
@@ -207,7 +207,7 @@ static const char* pipePath = "/tmp/";
 
 
 #define SAFE_CLOSE(handle) if ((handle) != -1) { close(handle); (handle) = -1; }
 #define SAFE_CLOSE(handle) if ((handle) != -1) { close(handle); (handle) = -1; }
 
 
-bool NamedPipe::Open(const String& pipeName, bool isServer)
+bool NamedPipe::Open(const String& name, bool isServer)
 {
 {
 #ifdef __EMSCRIPTEN__
 #ifdef __EMSCRIPTEN__
     URHO3D_LOGERROR("Opening a named pipe not supported on Web platform");
     URHO3D_LOGERROR("Opening a named pipe not supported on Web platform");
@@ -219,8 +219,8 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
 
 
     isServer_ = false;
     isServer_ = false;
 
 
-    String serverReadName = pipePath + pipeName + "SR";
-    String clientReadName = pipePath + pipeName + "CR";
+    String serverReadName = pipePath + name + "SR";
+    String clientReadName = pipePath + name + "CR";
 
 
     // Make sure SIGPIPE is ignored and will not lead to process termination
     // Make sure SIGPIPE is ignored and will not lead to process termination
     signal(SIGPIPE, SIG_IGN);
     signal(SIGPIPE, SIG_IGN);
@@ -235,7 +235,7 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
 
 
         if (readHandle_ == -1 && writeHandle_ == -1)
         if (readHandle_ == -1 && writeHandle_ == -1)
         {
         {
-            URHO3D_LOGERROR("Failed to create named pipe " + pipeName);
+            URHO3D_LOGERROR("Failed to create named pipe " + name);
             SAFE_CLOSE(readHandle_);
             SAFE_CLOSE(readHandle_);
             SAFE_CLOSE(writeHandle_);
             SAFE_CLOSE(writeHandle_);
             unlink(serverReadName.CString());
             unlink(serverReadName.CString());
@@ -244,8 +244,8 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
         }
         }
         else
         else
         {
         {
-            URHO3D_LOGDEBUG("Created named pipe " + pipeName);
-            pipeName_ = pipeName;
+            URHO3D_LOGDEBUG("Created named pipe " + name);
+            name_ = name;
             isServer_ = true;
             isServer_ = true;
             return true;
             return true;
         }
         }
@@ -256,15 +256,15 @@ bool NamedPipe::Open(const String& pipeName, bool isServer)
         writeHandle_ = open(serverReadName.CString(), O_WRONLY | O_NDELAY);
         writeHandle_ = open(serverReadName.CString(), O_WRONLY | O_NDELAY);
         if (readHandle_ == -1 && writeHandle_ == -1)
         if (readHandle_ == -1 && writeHandle_ == -1)
         {
         {
-            URHO3D_LOGERROR("Failed to connect to named pipe " + pipeName);
+            URHO3D_LOGERROR("Failed to connect to named pipe " + name);
             SAFE_CLOSE(readHandle_);
             SAFE_CLOSE(readHandle_);
             SAFE_CLOSE(writeHandle_);
             SAFE_CLOSE(writeHandle_);
             return false;
             return false;
         }
         }
         else
         else
         {
         {
-            URHO3D_LOGDEBUG("Connected to named pipe " + pipeName);
-            pipeName_ = pipeName;
+            URHO3D_LOGDEBUG("Connected to named pipe " + name);
+            name_ = name;
             return true;
             return true;
         }
         }
     }
     }
@@ -277,9 +277,9 @@ unsigned NamedPipe::Read(void* dest, unsigned size)
     if (readHandle_ == -1 && writeHandle_ != -1)
     if (readHandle_ == -1 && writeHandle_ != -1)
     {
     {
         if (isServer_)
         if (isServer_)
-            readHandle_ = open((pipePath + pipeName_ + "SR").CString(), O_RDONLY | O_NDELAY);
+            readHandle_ = open((pipePath + name_ + "SR").CString(), O_RDONLY | O_NDELAY);
         else
         else
-            readHandle_ = open((pipePath + pipeName_ + "CR").CString(), O_RDONLY | O_NDELAY);
+            readHandle_ = open((pipePath + name_ + "CR").CString(), O_RDONLY | O_NDELAY);
     }
     }
 
 
     if (readHandle_ != -1)
     if (readHandle_ != -1)
@@ -297,9 +297,9 @@ unsigned NamedPipe::Write(const void* data, unsigned size)
     if (writeHandle_ == -1 && readHandle_ != -1)
     if (writeHandle_ == -1 && readHandle_ != -1)
     {
     {
         if (isServer_)
         if (isServer_)
-            writeHandle_ = open((pipePath + pipeName_ + "CR").CString(), O_WRONLY | O_NDELAY);
+            writeHandle_ = open((pipePath + name_ + "CR").CString(), O_WRONLY | O_NDELAY);
         else
         else
-            writeHandle_ = open((pipePath + pipeName_ + "SR").CString(), O_WRONLY | O_NDELAY);
+            writeHandle_ = open((pipePath + name_ + "SR").CString(), O_WRONLY | O_NDELAY);
     }
     }
 
 
     // Loop until all bytes written in case of partial write
     // Loop until all bytes written in case of partial write
@@ -330,14 +330,14 @@ void NamedPipe::Close()
 
 
         if (isServer_)
         if (isServer_)
         {
         {
-            String serverReadName = pipePath + pipeName_ + "SR";
-            String clientReadName = pipePath + pipeName_ + "CR";
+            String serverReadName = pipePath + name_ + "SR";
+            String clientReadName = pipePath + name_ + "CR";
             unlink(serverReadName.CString());
             unlink(serverReadName.CString());
             unlink(clientReadName.CString());
             unlink(clientReadName.CString());
             isServer_ = false;
             isServer_ = false;
         }
         }
 
 
-        pipeName_.Clear();
+        name_.Clear();
     }
     }
 }
 }
 
 
@@ -355,9 +355,9 @@ bool NamedPipe::IsEof() const
     if (readHandle_ == -1 && writeHandle_ != -1)
     if (readHandle_ == -1 && writeHandle_ != -1)
     {
     {
         if (isServer_)
         if (isServer_)
-            readHandle_ = open((pipePath + pipeName_ + "SR").CString(), O_RDONLY | O_NDELAY);
+            readHandle_ = open((pipePath + name_ + "SR").CString(), O_RDONLY | O_NDELAY);
         else
         else
-            readHandle_ = open((pipePath + pipeName_ + "CR").CString(), O_RDONLY | O_NDELAY);
+            readHandle_ = open((pipePath + name_ + "CR").CString(), O_RDONLY | O_NDELAY);
     }
     }
 
 
     if (readHandle_ != -1)
     if (readHandle_ != -1)
@@ -376,4 +376,10 @@ bool NamedPipe::IsEof() const
 }
 }
 #endif
 #endif
 
 
+void NamedPipe::SetName(const String &name)
+{
+    URHO3D_LOGERROR("Cannot change name of the NamedPipe!");
+    assert(0);
+}
+
 }
 }

+ 4 - 6
Source/Urho3D/IO/NamedPipe.h

@@ -42,7 +42,7 @@ public:
     /// Construct.
     /// Construct.
     explicit NamedPipe(Context* context);
     explicit NamedPipe(Context* context);
     /// Construct and open in either server or client mode.
     /// Construct and open in either server or client mode.
-    NamedPipe(Context* context, const String& pipeName, bool isServer);
+    NamedPipe(Context* context, const String& name, bool isServer);
     /// Destruct and close.
     /// Destruct and close.
     ~NamedPipe() override;
     ~NamedPipe() override;
 
 
@@ -54,11 +54,11 @@ public:
     unsigned Write(const void* data, unsigned size) override;
     unsigned Write(const void* data, unsigned size) override;
     /// Return whether pipe has no data available.
     /// Return whether pipe has no data available.
     bool IsEof() const override;
     bool IsEof() const override;
-    /// Return the pipe name.
-    const String& GetName() const override { return pipeName_; }
+    /// Not supported.
+    void SetName(const String& name) override;
 
 
     /// Open the pipe in either server or client mode. If already open, the existing pipe is closed. For a client end to open successfully the server end must already to be open. Return true if successful.
     /// Open the pipe in either server or client mode. If already open, the existing pipe is closed. For a client end to open successfully the server end must already to be open. Return true if successful.
-    bool Open(const String& pipeName, bool isServer);
+    bool Open(const String& name, bool isServer);
     /// Close the pipe. Note that once a client has disconnected, the server needs to close and reopen the pipe so that another client can connect. At least on Windows this is not possible to detect automatically, so the communication protocol should include a "bye" message to handle this situation.
     /// Close the pipe. Note that once a client has disconnected, the server needs to close and reopen the pipe so that another client can connect. At least on Windows this is not possible to detect automatically, so the communication protocol should include a "bye" message to handle this situation.
     void Close();
     void Close();
 
 
@@ -70,8 +70,6 @@ public:
     bool IsServer() const { return isServer_; }
     bool IsServer() const { return isServer_; }
 
 
 private:
 private:
-    /// Pipe name.
-    String pipeName_;
     /// Server mode flag.
     /// Server mode flag.
     bool isServer_;
     bool isServer_;
     /// Pipe handle.
     /// Pipe handle.

+ 0 - 3
Source/Urho3D/UI/UI.cpp

@@ -1321,9 +1321,6 @@ void UI::GetCursorPositionAndVisible(IntVector2& pos, bool& visible)
         if (!visible && cursor_)
         if (!visible && cursor_)
             pos = cursor_->GetPosition();
             pos = cursor_->GetPosition();
     }
     }
-
-    pos.x_ = (int)(pos.x_ / uiScale_);
-    pos.y_ = (int)(pos.y_ / uiScale_);
 }
 }
 
 
 void UI::SetCursorShape(CursorShape shape)
 void UI::SetCursorShape(CursorShape shape)

+ 1 - 1
gradle.properties

@@ -27,7 +27,7 @@
 # http://www.gradle.org/docs/current/userguide/build_environment.html
 # http://www.gradle.org/docs/current/userguide/build_environment.html
 # Specifies the JVM arguments used for the daemon process.
 # Specifies the JVM arguments used for the daemon process.
 # The setting is particularly useful for tweaking memory settings.
 # The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx3G
+org.gradle.jvmargs=-Xmx4G
 # When configured, Gradle will run in incubating parallel mode.
 # When configured, Gradle will run in incubating parallel mode.
 # This option should only be used with decoupled projects. More details, visit
 # This option should only be used with decoupled projects. More details, visit
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

+ 3 - 2
rakefile

@@ -26,7 +26,7 @@ desc 'Invoke CMake to configure and generate a build tree'
 task :cmake => [:init] do
 task :cmake => [:init] do
   if ENV['CI']
   if ENV['CI']
     system 'cmake --version' or abort 'Failed to find CMake'
     system 'cmake --version' or abort 'Failed to find CMake'
-    if ENV['USE_CCACHE'] && /\[cache clear\]/ =~ `git log --format=%B -n1`
+    if ENV['USE_CCACHE'] && /\[cache clear\]/ =~ `git log --format=%B -n1 2>/dev/null`
       system 'bash', '-c', 'rm -rf ~/.{ccache,gradle}' or abort 'Failed to clear the build cache'
       system 'bash', '-c', 'rm -rf ~/.{ccache,gradle}' or abort 'Failed to clear the build cache'
     end
     end
   end
   end
@@ -404,7 +404,8 @@ def app_build_gradle_kts(name)
   template = File.readlines('android/launcher-app/build.gradle.kts')
   template = File.readlines('android/launcher-app/build.gradle.kts')
   sdk_version = first_match(/compileSdkVersion\((\d+)\)/, template)
   sdk_version = first_match(/compileSdkVersion\((\d+)\)/, template)
   min_sdk_version = first_match(/minSdkVersion\((\d+)\)/, template)
   min_sdk_version = first_match(/minSdkVersion\((\d+)\)/, template)
-  aar_version = first_match(/AAR version: (.+)/, `#{ENV['OS'] ? 'gradlew.bat' : './gradlew'} aarVersion 2>#{ENV['OS'] ? 'null' : '/dev/null'}`)
+  aar_version = ENV['CI'] && ENV['PLATFORM'] != 'android' ? 'unknown' : # Skip using gradle all together when on CI, unless for Android build
+                    first_match(/AAR version: (.+)/, `#{ENV['OS'] ? 'gradlew.bat' : './gradlew'} aarVersion 2>#{ENV['OS'] ? 'null' : '/dev/null'}`)
   type = ENV.fetch('URHO3D_LIB_TYPE', 'STATIC').downcase
   type = ENV.fetch('URHO3D_LIB_TYPE', 'STATIC').downcase
   <<-EOF
   <<-EOF
 plugins {
 plugins {