joelday / papyrus-lang

📜Advanced language tools for the Papyrus scripting language.
Other
105 stars 17 forks source link

A Scaleform debug panel for user interface diagnostics. #52

Open Scrivener07 opened 5 years ago

Scrivener07 commented 5 years ago

Describe

This is a feature request for a Scaleform debug panel. Scaleform by Autodesk is a middleware based on Adobe Flash used to render user interfaces in video games. Scaleform is a custom Flash player with accompanying source libraries optimized for game development. Scaleform and Adobe Flash have a similar object model to JavaFx or WPF if you are familiar.

Runtime information for Scaleform is highly valuable. This information is useful for UI development & Papyrus <-> AS3 interoperation. I dont know exactly what Im looking at in the F4SE source code but there seems to be a large amount of Scaleform systems decoded. Below I will pitch all my pie-in-the-sky ideas in the details section below. Eat the meat, spit out the bones.

Details

  1. Display a table/tree of loaded Scaleform menus and their current state.
    • What menus are currently registered with Scaleform?
    • What is this menus name?
    • Is this menu opened or closed?
    • Whats is this menus Z-depth?
    • What is the users Screen resolution? See also AS3 - Stage (aka this.stage.width by this.stage.height)
  2. Display a table/tree of loaded scaleform AS3 classes for each menu.
    • Does this menu have a root "Document Class"?
    • Do any DisplayObjects have classes attached? (Very similar to attaching scripts to CK Forms)
    • What members does this class contain? (functions, events, anything public)
    • What are the values of variables and properties on this class?
  3. Display a table/tree of loaded scaleform movie DisplayObjects for each menu.
    • What is this display object's instance name?
    • What is this display object's library name? (Like EditorID)
    • Is this display object visible or have an alpha (opacity) value?
    • What is this display object's x/y stage position?
    • What is this display object's width, height, and scale on the stage?
    • Does this display object have a parent DisplayObject?
    • Does this display object have any child DisplayObjects?
    • What is the runtime "instance member variable path" of this display object?

Scrivener AS3 Library

F4SE Source

rjstone commented 4 years ago

Status on the debug plugin side:

aers Today at 8:55 PM Uh I dont think xse includes debug hooks for scaleform but a large number of scaleform headers are decoded so it wouldn't be too difficult to read stuff from memory if wanted

So this really needs a PR for the debug plugin that should have a link posted to it here.