Exit Full View

Kyd / todo.txt

Kyd todo.txt
============

Next
====

Splinters
    Given an existing Appearance and set of splinter shapes, create new Appearances where they overlap.
    The splinter shapes should be greyscale.
    It is scaled, so that it covers the region of the original
    The splinter shape's pin becomes the final splinter's pin (should be the center of gravity).
    We calculate this pin relative to the original's pin so we can initialise its position.
    Some methods to auto-generate splinter shapes, e.g. pieces of pie.

A transient setting on EditorSettings enableZOrder
    Only set to true if any stage implements UsesZOrder.
    Set after a game is loaded as well as GameTab.update()

Role should have defaultText if its defaultAppearance is a Font.

Font info not recalled in Font tab. Is it saved/stored?

NinePatch
    Option to REPEAT.
    The non-corner parts copied into separate Textures

NinePatch.includeCenter : Boolean

Bugs
====

Font is saved in .act file for actors with a role, but is not used???
    If the font is the same as the Role's appearance path, then don't save it.

Pick's paths are not being resolved (using Game's renamed map).
    Cannot place a bounce-square/triangle.

class.qualified name not supported in Javascript. Oops.
    F11 (build project) highlights many errors which I've not seen when only compiling the JVM version.

Actor.localToWorld etc. only true for top-level actors.
    Rename to localToParent?
    Also create localToWorld.

Later (Required to build my first proper game)
=====

Run the demo in a browser.

Role?.sizeConstraint :
    None
    Stanard
    FixedAspectRatio

Select actors "below" when holding down ctrl.

File->Open ...

Javascript
==========

KydTypeRegistry.
    We need to auto-generate kotlin source code, and add it to the game's
        /src/jsMain/kotlin/kyd/registerTypes.kt
    At the same time, check that each Customisable.customProperties() are the same as those from reflection.


Much Later (Not required before creating my first game)
==========

PathFields which use Game as their relativeTo should NOT allow relative paths. That would be very confusing.

Font-alternates
    Alternative textures, but using the same glyph data.
    e.g. outlines, drop shadows...
    Label should draw each in turn, each with their own tint.

NewAttrributeDialog of RoleTab - Add AttributeMeaning when STRING.

Role/Appearance could have "control points", which can be dragged within the edtitor.
    e.g. to adjust a "position" or "direction" vector (or a length).
    A more extreme idea : Add extra GUI elements? e.g. a slider.
    Name them for access via game-code.

New Game
    Create gradle wrapper (if it doesn't already exist) - will need a path to gradle
    Create default .gitignore (if it doesn't already exist)
    Initialise git


Nice to Have (Finishing touches / fancy features)
============

Physics engine
    https://github.com/KPhysics/KPhysics

Pick :
    Show graphic, Show Name (switches)
    Custom Graphic size (instead of using the default in EditorSettings).

IntegerScaling : Node
    Places its contents (the ActView) in the center, ensuring its aspect ratio is the same as Game.nominalSize,
    and if there is EXTRA space, then the scaling factor will be an integer.
    This is prevents pixel-art looking blurry.
        Set interpolation to ??? while drawing the children.

When creating a new Game, it should automatically include a DropGroup named "Group 1"?. 

Drag/Drop from ResourceDock to ActEditor

Create a Getting Started guide

Check poses - all should have at least 1 pixel surrounding it which is fully transparent.

MenuButton to quickly change the accent color.
    Color Palette Button??

fun Matrix.inverse() : Matrix
    https://www.cuemath.com/algebra/inverse-of-3x3-matrix/

Allow customTransformation on Actor and StageView
    When set, position, scale etc. are ignored?
    Or applied in addition to those.
        But in which order?
            e.g. we may want to skew an actor (similar to scale), but was may also want it to
                scale/rotate relative to a given world-point (unrelated to the actor's position).
        So maybe we need two???