Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Scenecontrol Features #23

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

dylanrafael05
Copy link

Changelog

  • Added BooleanChannel to handle boolean values, comparisons, and if-else operations
    • Added support for boolean literal to BooleanChannel conversion
    • Added Channel._and, Channel._or, and Channel._not to perform boolean operations
    • Added Channel.equal, Channel.greaterThan, and Channel.lessThan in order to compare values, both numbers and strings
  • Added support for various new mathematical channels
    • Added Channel.timeScale, Channel.timeWarp, Channel.chain, Channel.timing, and Channel.abs
    • Added overloads for Channel.sine and Channel.cos which take in only one parameter
    • Added support for the % operator on channels
  • Added support for per-note control with channels
    • Modified GroupProperties in order to interface with NoteIndividualProperties and NoteProperties when necessary
    • Modified matrix transforms to use a TRS struct, which provides easy access to the TRS components of a matrix
      • TRS + TRS results in a new TRS which adds translation and rotation, and multiplies scale
      • TRS * TRS results in a new TRS which performs a matrix transform and extracts the resulting TRS values
      • TRS.Matrix gets the Matrix4x4 from a TRS, which is also implicit
  • Modified the way that arcs are transformed by scale individual in order to preserve their positioning throughout their easing rather than just at their starting position
  • Added NoteData to access per-instance data from a note
    • Note.timing() returns the start timing of a note
    • Note.delta() returns Channel.timing() - Note.timing()
    • Note.x/y/z() returns the position, without any modification by angles or scenecontrol, of a note's start at the current time
    • Note.floorpos() returns the floor position of a note
    • Note.isArc() returns if a note is an arc
    • Note.type() returns a string representative of the note's type
  • Completely reworked EmmySharp in order to produce a more comprehensible library, without making any breaking API changes
    • Added the ability to directly specify a type to use in generated emmylua code
    • Added the ability to specify an alias type to use in generated emmylua code (i.e, EmmyType("Easings") instead of repeated EmmyChoice(. . .))
  • Added Editor.ScenecontrolChecks which reports an error if a channel type is created in code but not handled by serialization or deserialization

Known Issues

  • Arc particles and shadows are incorrectly warped by scale individual now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant