The editor debugger used to only take the first client connection,
leaving potential new connections hanging until TCP timeout.
This caused a lock after some time when running multiple game/editor
instances, as the client will fill the write buffer, and then lock until
timeout (as the editor server would never read from that socket).
The editor now drops new connections immediately if it is already
connected to a client.
Unlike the old custom method, the `String::humanize_size()`
method works well with file sizes above 2 GB.
This also tweaks the suffixes for spacing consistency and
uses the correct acronym for exabytes (EB).
This closes#29610.
- Use dark colors when using a light theme for better visibility
- Enable antialiasing (only effective when using the GLES3 renderer)
- Make graph lines thinner but opaque
- Scale graph line widths on hiDPI displays
-Made relationship lines appear based on theme settings, not previous hack
-Fix drawing of relationship lines (was broken)
-Fix double initialization of theme settings
This also increases the plugin description TextEdit's height,
so that 3 lines can be viewed instead of just 2 (leaving a few pixels
for the scroll bar).
This allows more consistency in the manner we include core headers,
where previously there would be a mix of absolute, relative and
include path-dependent includes.
This commit makes operator[] on Vector const and adds a write proxy to it. From
now on writes to Vectors need to happen through the .write proxy. So for
instance:
Vector<int> vec;
vec.push_back(10);
std::cout << vec[0] << std::endl;
vec.write[0] = 20;
Failing to use the .write proxy will cause a compilation error.
In addition COWable datatypes can now embed a CowData pointer to their data.
This means that String, CharString, and VMap no longer use or derive from
Vector.
_ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug
builds. This is a lot faster for Vector in the editor and while running tests.
The reason why this difference used to exist is because force-inlined methods
used to give a bad debugging experience. After extensive testing with modern
compilers this is no longer the case.