/Chroma

Core Chroma Plugin

Primary LanguageC#MIT LicenseMIT

Chroma

Colors!

If you use any of these features, you MUST add "Chroma" as a suggestion or requirement for your map for them to function, you can go Here to see how adding suggestions/requirements to the info.dat works

NOTE: All RGBA values are on a 0-1 scale (Not a 0-255 scale).

All of these cool features are done through CustomJSONData, from either the "_customData" field or "_customEvents".

Example of _customData:

"_notes":[
    {
        "_time":8.0,
        "_lineIndex":2,
        "_lineLayer":0,
        "_type":1,
        "_cutDirection":1,
        "_customData":{
            "foo":3,
            "bar":"Hello, BSMG!"
        }
    },

Environment Enhancement

  • Environment
    • Set "PrintEnvironmentEnhancementDebug" to true in the Chroma.json config file to print environment enhancement information to your console.
    • "_customData" -> "_environment"
      • "_id": (string) The ID to use when looking up the GameObject.
      • "_lookupMethod": (string) How to use the ID to search. (Regex, Exact, Contains)
      • "_duplicate": (int) How many instances of this GameObject to create. Note: this changes the scope and all the following properties will affect the duplicated objects instead.
      • "_active": (bool) When false, disables the GameObject.
      • "_scale": [x, y, z] (float) Sets scale of GameObject.
      • "_position": [x, y, z] (float) Sets position of GameObject.
      • "_localPosition": [x, y, z] (float) Sets localPosition of GameObject.
      • "_rotation": [x, y, z] (float) Sets rotation of GameObject.
      • "_localRotation": [x, y, z] (float) Sets localRotation of GameObject.
      • "_track": (string) For use with Noodle Extensions.

Color Data

  • RGB
    • "_events" -> "_customData"
      • Will only apply to the single light it's attached to.
      • "_lightID": (int) Causes event to only affect specified ID. Can be an array.
      • "_color": [r, g, b, a] (float) Array of RGB values (Alpha is optional and will default to 1 if not specified).
      • "_propID": (int) Deprecated, use _lightID. Causes event to only affect specified propagation group.
  • Gradient
    • Hate placing a thousand color blocks for a gradient? So do I. This will handle all of that for you.
    • "_events" -> "_customData"
      • "_lightGradient":
        • "_duration": (float) How long should it take to get from start color to end color (in beats).
        • "_startColor": [r, g, b, a] (float) Initial color at beginning of gradient.
        • "_endColor": [r, g, b, a] (float) Final color of gradient.
        • "_easing": (string) Gradient will ease according to this field. Use these names as the string.
  • Obstacle Color
    • "_obstacles" -> "_customData"
      • Will only apply to the single wall it's attached to.
      • "_color": (float) [r, g, b, a] (float) Array of RGB values (Alpha is optional and will default to 1 if not specified).
  • Bomb Color
    • "_notes" -> "_customData"
      • Can only be applied to notes of type 3.
      • Will only apply to the single bomb it's attached to.
      • "_color": [r, g, b, a] (float) Array of RGB values (Alpha is optional and will default to 1 if not specified).
  • Note Color
    • When a note with a custom color is cut, the saber will turn its color to that custom color.
    • "_notes" -> "_customData"
      • Will only apply to the single note it's attached to
      • "_color": [r, g, b, a] (float) Array of RGB values (Alpha is optional and will default to 1 if not specified).

Data Events

  • Precise Laser Event
    • "_events" -> "_customData"
      • Can only be applied to laser speed events
      • "_lockPosition": (bool) Set to true and the event it is attached to will not reset laser positions.
      • "_speed": (float) Identical to just setting value, but allows for decimals. "_preciseSpeed" will alias to this. Will overwrite value (Because the game will randomize laser position on anything other than value 0, a small trick you can do is set value to 1 and _preciseSpeed to 0, creating 0 speed lasers with a randomized position).
      • "_direction": (int) Set the spin direction (0 left lasers spin CCW, 1 left lasers spin CW).
  • Precise Rotation Event
    • "_events" -> "_customData"
      • Can only be applied to ring rotation events.
      • "_nameFilter": (string) Causes event to only affect rings with a listed name (e.g. SmallTrackLaneRings, BigTrackLaneRings).
      • "_reset": (bool) Will reset the rings when set to true (Overwrites values below).
      • "_rotation": (float) Dictates how far the first ring will spin.
      • "_step": (float) Dictates how much rotation is added between each ring.
      • "_prop": (float) Dictates the rate at which rings behind the first one have physics applied to them. High value makes all rings move simultaneously, low value gives them significant delay.
      • "_speed": (float) Dictates the speed multiplier of the rings.
      • "_direction": (int) Direction to spin the rings (1 spins clockwise, 0 spins counter-clockwise).
      • "_counterSpin": (bool) Causes the smaller ring to spin in the opposite direction.
      • "_stepMult": (float) Deprecated. Step is multiplied by this value.
      • "_propMult": (float) Deprecated. Prop is multiplied by this value.
      • "_speedMult": (float) Deprecated. Speed is multiplied by this value.
  • Precise Zoom Event
    • "_events" -> "_customData"
      • Can only be applied to ring zoom events.
      • "_step": (float) Dictates how much position offset is added between each ring.
  • Hide Note Spawn Effect
    • "_notes" -> "_customData"
      • "_disableSpawnEffect": (bool) Set to true and the note spawn effect will be hidden.

Animation

See Noodle Extensions documentation

Info.dat Data

  • Environment Removal
    • DEPRECATED use _environment.
    • This goes within the per-level _customData, NOT the top level _customData.
    • "_customData"
      • "_environmentRemoval": [List of objects you want to remove goes here, with commas between] Recommended to use UnityIPADebugger to find the name of the objects. e.g. RocketCar for cars in RocketEnvironment, Logo for Green Day logo.