Changes:
Javascript "GUI Object", counterparts to C++ objects, are now [[ https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Proxy | Proxy Objects ]]. Reasoning:
- We don't have any actual JS object, so our "JS GUI Objects" are really just proxying calls to the C++ objects. It makes semantic sense.
- SM devs recommend it (see public/Proxy.h comment on overloading JSClassOps or Proxy objects)
- On that note, DOM objects are implemented as Proxies in Firefox, and our GUI objects are basically that.
- They would have also needed some migrating for SM52 which this removes the need for- Our current system no longer exists in SM60, breaking #5859
See D1781 for a slightly longer argument.
Function-parameters are no longer defined per-object or on the "global" prototype. They are stored in the ScriptInterface, and returned where appropriate.
Why this change?
It lets us define function on some subtypes only, removing the need for workarounds introduced in D2136 and likely to-be-introduced in D1781 (virtual functions on IGUIObject).
----
Side-effects:
- This de-activates RTTI everywhere, except for AtlasUI.
----
This follows experiments on D1781This lets us remove the D2136 hack and fix D1781 properly, and incidentally D2136which will be done in later diffs.