Jumpvalley 0.5.0
An app and library that can be used to test and run 3D platformer levels. Currently being made with Godot.
Loading...
Searching...
No Matches
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12345]
 CJumpvalley.Animation.AnimatedNodeThis class provides some components to bind to a Godot node, mainly to assist with writing animation code for the node
 CJumpvalley.Gui.BackgroundPanelHandler for the BackgroundPanel, a panel (or some other Godot Control) that acts as a background for a currently visible menu
 CJumpvalley.Audio.AudioStreamReaderLoads a file that's either imported as a resource (at one point or another) or somewhere on the filesystem
 CJumpvalley.Players.Movement.BodyRotatorThis class is responsible for turning a 3D body's yaw angle in the direction that it's moving.
Such direction is approached gradually, unless it's specified that the direction should be set instantly.
Thanks to Godot 4.0 .NET thirdperson controllerby vaporvee for helping me figure out how to smoothly turn a 3D body in terms of a third-person controller
 CJumpvalley.Players.Movement.BodyStateChangedArgsEvent arguments for BaseMover.BodyStateChanged. In this class's documentation, "character" refers to the CharacterBody3D whose movement is being handled by its BaseMover
 CJumpvalley.Levels.DifficultyRepresents a difficulty, a set of values that judge how difficult a level is
 CJumpvalley.Levels.DifficultyPresetsThis class contains some difficulty sets that can be used to label the difficulty of a level.

Currently, the difficulty sets here have one of these characteristics:

  • It's directly from a game or community
  • It's from a game or community, but it's been modified.
 CJumpvalley.Levels.DifficultySetClass that groups multiple difficulties together. Useful when you want to have all the difficulties within a game in one place and be able to perform some calculations based off of them
 CSystem.EventArgs
 CJumpvalley.Music.SongChangedArgsEvent arguments for Playlist.SongChanged and MusicPlayer.SongChanged
 CIDisposable
 CJumpvalley.Animation.AnimatedNodeGroupClass that groups multiple AnimatedNodes together so that they can communicate with each other.

This class can also help make it so only one AnimatedNode within the group can be shown at a time
 CJumpvalley.Levels.Interactives.InteractiveThe base class for all Interactive types in Jumpvalley
 CJumpvalley.Levels.Interactives.InteractiveNodeA subclass of Interactive that operates over a Godot node. It makes using a Godot node's properties and metadata easier. See the relevant wiki sectionfor details
 CJumpvalley.Levels.Interactives.Mechanics.CheckpointSetInteractive that handles checkpoints for a level
 CJumpvalley.Levels.Interactives.Mechanics.OverallBoundingBoxObjectInteractive that calculates its root node's overall bounding box.

Calculation is done via the GetOverallBoundingBox method
 CJumpvalley.Levels.Interactives.Mechanics.SpinnerA basic spinner. A spinner is a rotating platform. The root node of this interactive should be a StaticBody3D.

Make sure to specify its constant angular velocity in the constant_angular_velocity or constant_angular_velocity_degrees metadata entries instead of the StaticBody3D's built in ConstantAngularVelocity property. This is so the spinner doesn't move objects when it isn't running. The spinner won't turn if you don't specify the angular velocity in one of the metadata entries
 CJumpvalley.Levels.Interactives.Mechanics.Teleporters.TeleporterInteractive that sends a Node3D to a defined destination
 CJumpvalley.Levels.Interactives.Mechanics.Teleporters.StartEndTeleporterType of teleporter that teleports a node to Teleporter.Destination when the node touches specified parts called start nodes.

Start nodes should be Area3Ds.
 CJumpvalley.Levels.LevelThis class represents a level that's playable in Jumpvalley.
Each level contains four primary components: interactives, music, static objects, and start point. More details can be found on Jumpvalley's wiki article on Level Layout
 CJumpvalley.Players.PlayerThis class represents a player who is playing Jumpvalley or some other app that derives from it. This class inherits from the Interactive class since it contains some functionality that assists with initializing, starting, stopping, and disposing the app components functioning on behalf of the player.

This class contains some of the basic components that allow the app to function for the player, such as:

  • Their music player
  • The Controller instance that allows them to control their character
  • The Camera instance that allows them to control their camera
  • Their primary GUI node
 CJumpvalley.Levels.Interactives.Mechanics.SpinnerA basic spinner. A spinner is a rotating platform. The root node of this interactive should be a StaticBody3D.

Make sure to specify its constant angular velocity in the constant_angular_velocity or constant_angular_velocity_degrees metadata entries instead of the StaticBody3D's built in ConstantAngularVelocity property. This is so the spinner doesn't move objects when it isn't running. The spinner won't turn if you don't specify the angular velocity in one of the metadata entries
 CJumpvalley.Levels.LevelThis class represents a level that's playable in Jumpvalley.
Each level contains four primary components: interactives, music, static objects, and start point. More details can be found on Jumpvalley's wiki article on Level Layout
 CJumpvalley.Levels.LevelPackageThis class represents a level package, a filesystem folder that contains the components of a level.
Each level package includes:

  • The level's info file
  • The Godot package (PCK file) that contains the level's contents
 CJumpvalley.Music.MusicGroupHandles a Playlist that's in the form of nodes in a scene tree.
Each MusicGroup node must have a node as a direct child named "Music" that lists the directory (folder) paths of songs in its metadata.

There are two ways to specify songs that should be played:

songs array in metadata
The metadata (as mentioned above) has an array named songs that specifies the songs to play. The array's C# type should be Godot.Collections.Array.

Incremental songN metadata entries
This method is used when no songs array is present in the metadata. Multiple metadata entries should be specified in this format:
Entry name: songN where N represents the numerical index of the song package directory starting from 1. Songs are played in numerical order.
Entry value: The absolute path to the song's directory. (The value's type must be string.)
 CJumpvalley.Music.MusicZoneRepresents a single music zone.
Music zones each have their own playlist. Such playlists typically only contain one song, but it's possible for the playlists to have multiple songs.
To specify the geometry that makes up the music zone, the music zone has to have a node named "ZoneParts" as a direct child. This "ZoneParts" node should contain MeshInstance3Ds using box meshes (preferred for performance reasons) or CSGBox3Ds. These boxes make up the music zone's geometry
 CJumpvalley.Music.MusicPlayerPlays music that is split into playlists (see Playlist)
This class applies a fade transition when the user wants to switch between playlists.
Each instance of a MusicPlayer can only play one song at a time at most
 CJumpvalley.Music.MusicZonePlayerMusicPlayer that handles the playback of Playlists with music zones in mind.
Music zone logic is handled like how it is in Juke's Towers of Hell. This means that whenever a player enters a music zone, the zone's playlist gets played.
In order for music to play when the player is outside a music zone, a primary playlist must be set. This playlist will get played when outside of the music zones.

It's important to note that MusicZonePlayer will only update CurrentPlaylist once per process frame for stability reasons (as long as the calling of MusicZonePlayer's _Process() function hasn't been disabled)
 CJumpvalley.Music.MusicZonePlayerMusicPlayer that handles the playback of Playlists with music zones in mind.
Music zone logic is handled like how it is in Juke's Towers of Hell. This means that whenever a player enters a music zone, the zone's playlist gets played.
In order for music to play when the player is outside a music zone, a primary playlist must be set. This playlist will get played when outside of the music zones.

It's important to note that MusicZonePlayer will only update CurrentPlaylist once per process frame for stability reasons (as long as the calling of MusicZonePlayer's _Process() function hasn't been disabled)
 CJumpvalley.Music.PlaylistRepresents a musical playlist that can hold multiple Songs
 CJumpvalley.Music.MusicGroupHandles a Playlist that's in the form of nodes in a scene tree.
Each MusicGroup node must have a node as a direct child named "Music" that lists the directory (folder) paths of songs in its metadata.

There are two ways to specify songs that should be played:

songs array in metadata
The metadata (as mentioned above) has an array named songs that specifies the songs to play. The array's C# type should be Godot.Collections.Array.

Incremental songN metadata entries
This method is used when no songs array is present in the metadata. Multiple metadata entries should be specified in this format:
Entry name: songN where N represents the numerical index of the song package directory starting from 1. Songs are played in numerical order.
Entry value: The absolute path to the song's directory. (The value's type must be string.)
 CSystem.IDisposable
 CJumpvalley.Music.SongRepresents a single song associated with a file, along with some metadata
 CJumpvalley.Players.Camera.BaseCameraThe base class that handles a 3d camera focusing on a 3d object. It includes support for camera panning and zoom controls
 CJumpvalley.Players.Movement.BaseMoverThis is the base class that provides a player's character the ability to move in different directions, jump, and climb. It serves mainly as a controller interface for developers to build on.
The design of this takes lots of inspiration from Roblox's PlayerModule
 CJumpvalley.Players.Movement.ClimberAllows a character to climb objects. Specifically, these objects are PhysicsBody3Ds A PhysicsBody3D can be climbed if it has a boolean metadata entry named "is_climbable" that's set to true
 CJumpvalley.Players.PlayerThis class represents a player who is playing Jumpvalley or some other app that derives from it. This class inherits from the Interactive class since it contains some functionality that assists with initializing, starting, stopping, and disposing the app components functioning on behalf of the player.

This class contains some of the basic components that allow the app to function for the player, such as:

  • Their music player
  • The Controller instance that allows them to control their character
  • The Camera instance that allows them to control their camera
  • Their primary GUI node
 CJumpvalley.Raycasting.RaycastSweepSweeps over a region of 3D space using a series of equally-spaced-out raycasts.

The center raycast, being located in the middle (or close to it), is assigned to the greatest integer that's less than or equal to the median index. "index" here refers to the numerical index that a raycast is located in within a raycast sweep from left to right
 CJumpvalley.Tweening.IntervalTweenClass that runs a tween by incrementing steps at a specified time interval.
Note that while the time interval should mostly be fixed, there will be slight differences in the actual time between each step.
To account for this, the Stopwatch class is used to run the tween based on a timestamp. Therefore, the aforementioned differences shouldn't add up and cause the tween to finish noticeably later than expected for longer tweens
 CJumpvalley.Tweening.MethodTweenProvides a way of tweening via Godot using method overrides.
The advantage of using this over a normal Godot Tween is that the Tween doesn't have to be in the scene tree in order to operate.
Another difference is that unlike a normal Godot Tween, this tween doesn't start automatically after being instantiated. Developers must call Resume() manually in order to get the tween running.
Syntax is inspired by JavaFX's animation package
 CJumpvalley.Tweening.IntervalTweenClass that runs a tween by incrementing steps at a specified time interval.
Note that while the time interval should mostly be fixed, there will be slight differences in the actual time between each step.
To account for this, the Stopwatch class is used to run the tween based on a timestamp. Therefore, the aforementioned differences shouldn't add up and cause the tween to finish noticeably later than expected for longer tweens
 CJumpvalley.Tweening.SceneTreeTweenMethodTween that can bind to the Process step of a Godot scene tree.
Every process step, the tween will also get stepped until the playback of the tween is finished or stopped
 CJumpvalley.IO.InfoFileReads an Info file, a blob of text that's primarily for defining metadata for a specific object, such as an audio file or a level. The blob of text typically comes from a plain-text file named "info.txt".

The contents of such types of files should be formatted like this:
property name: property value
where each property is specified on its own line.
For the property name, spaces should be replaced with underscores. The property name and property value should be split with a ": ", including the space and not including the quotes.

This text formatting is inspired by the way that the content of .osu files are formatted in Osu (the rhythm game)
 CJumpvalley.Levels.LevelInfoFileReads an info file for a Jumpvalley level
 CJumpvalley.Music.SongInfoFileReads the associated "info.txt" file for a song.
The contents of such types of files should be formatted like this:
property name: property value
where each property is specified on its own line.
Currently, the properties read for an song's info.txt file are:

  • name: The name of the song
  • artists: The artists that made the song
  • album: The album the song belongs to
  • audio_path: The file path to the audio file, including its file name and extension

This text formatting is inspired by the way that the content of .osu files are formatted in Osu (the rhythm game)

 CJumpvalley.Levels.Interactives.InteractiveToolkitProvides some variables and methods that may assist with the development of interactives
 CJumpvalley.IO.JsonInfoFileClass intended to help with using the data from info files written in JavaScript Object Notation (JSON).

Info files are files that contain metadata about an object (e.g. one that's on a filesystem).

The conventional file name for JSON info files is info.json
 CJumpvalley.Levels.LevelInfoClass containing some info about a level
 CJumpvalley.Music.SongInfoClass that holds some metadata about a song file
 CNode
 CJumpvalley.Levels.Interactives.InteractiveThe base class for all Interactive types in Jumpvalley
 CJumpvalley.Levels.LevelRunnerClass responsible for running and stopping levels. This is intended to be a base class where subclasses handle running levels in their own way
 CJumpvalley.Levels.DirectoryLevelRunnerSubclass of LevelRunner that handles running levels located within a directory
 CJumpvalley.Music.MusicPlayerPlays music that is split into playlists (see Playlist)
This class applies a fade transition when the user wants to switch between playlists.
Each instance of a MusicPlayer can only play one song at a time at most
 CJumpvalley.Music.PlaylistRepresents a musical playlist that can hold multiple Songs
 CJumpvalley.Players.Camera.BaseCameraThe base class that handles a 3d camera focusing on a 3d object. It includes support for camera panning and zoom controls
 CJumpvalley.Players.Movement.BaseMoverThis is the base class that provides a player's character the ability to move in different directions, jump, and climb. It serves mainly as a controller interface for developers to build on.
The design of this takes lots of inspiration from Roblox's PlayerModule
 CJumpvalley.Players.Movement.ClimberAllows a character to climb objects. Specifically, these objects are PhysicsBody3Ds A PhysicsBody3D can be climbed if it has a boolean metadata entry named "is_climbable" that's set to true
 CJumpvalley.Tweening.TweenGroup< TKey >A class capable of overseeing multiple tweens as a "group".
It offers support for storing tweens in a key-value map (also called a Dictionary<TKey, TValue>) and doing various operations with all of the tweens in the map at once.
In addition, it can be used to make Godot tweens work with objects that aren't in the scene tree, particularly, through the use of Tween.TweenMethod
Please note: In order for this to work, an instance of TweenGroup<TKey> must be parented to a Godot node of some sort (preferably one that will be in the scene tree until the application exits). This is due to the Godot limitation that Tweens must be in the scene tree in order to be processed
 CNode3D
 CJumpvalley.Raycasting.RaycastSweepSweeps over a region of 3D space using a series of equally-spaced-out raycasts.

The center raycast, being located in the middle (or close to it), is assigned to the greatest integer that's less than or equal to the median index. "index" here refers to the numerical index that a raycast is located in within a raycast sweep from left to right
 CJumpvalley.Levels.Interactives.NodeMetadataChangedArgsEvent arguments for InteractiveNode.NodeMetadataChanged
 CJumpvalley.IO.PathUtilProvides some values and methods for performing operations related to file paths
 CJumpvalley.Raycasting.RaycastSweepResultClass that contains data about the result of a raycast sweep operation (where collisions with a RaycastSweep's raycasts are checked)
 CJumpvalley.Music.SongPackageRepresents a folder (such as one on the filesystem) that contains a song and its info metadata
 CStopwatch
 CJumpvalley.Timing.OffsetStopwatchThis class extends the Stopwatch (in the standard C# library) so that an initial value for elapsed time can be specified. This initial value acts as an offset for the Stopwatch's real elapsed time