Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changelog
BooleanChannel
to handle boolean values, comparisons, and if-else operationsBooleanChannel
conversionChannel._and
,Channel._or
, andChannel._not
to perform boolean operationsChannel.equal
,Channel.greaterThan
, andChannel.lessThan
in order to compare values, both numbers and stringsChannel.timeScale
,Channel.timeWarp
,Channel.chain
,Channel.timing
, andChannel.abs
Channel.sine
andChannel.cos
which take in only one parameter%
operator on channelsGroupProperties
in order to interface withNoteIndividualProperties
andNoteProperties
when necessaryTRS
struct, which provides easy access to the TRS components of a matrixTRS + TRS
results in a newTRS
which adds translation and rotation, and multiplies scaleTRS * TRS
results in a newTRS
which performs a matrix transform and extracts the resulting TRS valuesTRS.Matrix
gets theMatrix4x4
from aTRS
, which is also implicitNoteData
to access per-instance data from a noteNote.timing()
returns the start timing of a noteNote.delta()
returnsChannel.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 timeNote.floorpos()
returns the floor position of a noteNote.isArc()
returns if a note is an arcNote.type()
returns a string representative of the note's typeEmmySharp
in order to produce a more comprehensible library, without making any breaking API changesEmmyType("Easings")
instead of repeatedEmmyChoice(. . .)
)Editor.ScenecontrolChecks
which reports an error if a channel type is created in code but not handled by serialization or deserializationKnown Issues