-
Notifications
You must be signed in to change notification settings - Fork 6
Beatmap Objects
- Make sure you've read about difficulties before continuing.
| Raw JSON | ReMapper |
|---|---|
b |
beat |
ReMapper typically comes with 2 functions to create beatmap objects.
For example, let's look at creating a new ColorNote. The rm.colorNote function will be used to create it, and there's multiple ways we can use it.
First we pass the difficulty, and then we pass an object {} with all of the fields we want on the note.
rm.colorNote(map, {
beat: 3,
cutDirection: rm.NoteCut.DOWN
})- TIP: Press
Ctrl + Spaceto show all of the fields available in the object:

- TIP: Hover over a written property to get a description of what it does:

We pass the difficulty, and then we provide individual properties that are organized in order of relevance (e.g. beat, color, cut direction...).
rm.colorNote(map, 3, rm.NoteType.BLUE, rm.NoteCut.DOWN)- TIP: Press
Ctrl + Spacewhile inside the parenthesis of a function (where the parameters are being written) to display all of the parameters you can write. You can use the arrow keys to switch between the 2 options.

Let's say you have some note on the beatmap you'd like to duplicate. To do this, you can use the copy function on it. This will create a copy of the note and push it to the same difficulty automatically.
const object2 = object1.copy()If you want some object to no longer be on the difficulty anymore, you can call the remove function on it.
object.remove()This will mutate (change) the difficulty's arrays to no longer contain the object anymore.
You might have noticed properties that are usually in customData are directly on the class instead.
For example, customData.localRotation becomes just localRotation.
// RAW
object.customData.localRotation
// REMAPPER
object.localRotationYou should always prefer properties that are directly on the class.
On load, all the properties that will be directly on the class are taken off of the customData object. The remaining customData object is given to the class as unsafeCustomData.
// This is a simplified example of what happens on load
const inputJson = {
customData: {
localRotation: [0, 0, 0]
}
}
object.localRotation = inputJson.customData.localRotation
delete inputJson.customData.localRotation
object.unsafeCustomData = inputJson.customDataOn save, all the customData related properties (such as localRotation) are recombined with unsafeCustomData.
// This is a simplified example of what happens on save
const outputJson = {
customData: {
localRotation: object.localRotation,
...object.unsafeCustomData
}
}- Info
- Difficulty
- Beatmap Objects
- Gameplay Objects
- Walls
- Basic Notemods
- Note Iterators
- Basic Events
- V3 Events
- Custom Events
- Heck Tracks and Animation
- Easings
- Point Types
- Point Utilities
- Heck Animation Baking
- Heck Animation Settings
Non-Vivify Models
Vivify