Improve documentation

This commit is contained in:
NGnius 2020-02-25 18:05:13 -05:00
parent feab9e38c9
commit 7519bc37ae
8 changed files with 39 additions and 11 deletions

View file

@ -9,14 +9,17 @@ using Unity.Mathematics;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
/// <summary> /// <summary>
/// Common block movement operations /// Common block movement operations.
/// The functionality of this class only works in build mode.
/// </summary> /// </summary>
public static class Movement public static class Movement
{ {
private static MovementEngine movementEngine = new MovementEngine(); private static MovementEngine movementEngine = new MovementEngine();
/// <summary> /// <summary>
/// Move a single block by a specific (x,y,z) amount /// Move a single block by a specific (x,y,z) amount (offset).
/// The moved block will remain connected to the blocks it was touching before it was moved.
/// The block's placement grid and collision box are also moved.
/// </summary> /// </summary>
/// <param name="id">The block's id</param> /// <param name="id">The block's id</param>
/// <param name="vector">The movement amount (x,y,z)</param> /// <param name="vector">The movement amount (x,y,z)</param>
@ -32,7 +35,10 @@ namespace GamecraftModdingAPI.Blocks
} }
/// <summary> /// <summary>
/// Move all connected blocks by a specific (x,y,z) amount /// Move all connected blocks by a specific (x,y,z) amount (offset).
/// The moved blocks will remain connected to the block they're touching.
/// All of the block's placement grids and collision boxes are also moved.
/// This is equivalent to calling MoveBlock() for every connected block.
/// </summary> /// </summary>
/// <param name="id">The starting block's id</param> /// <param name="id">The starting block's id</param>
/// <param name="vector">The movement amount (x,y,z)</param> /// <param name="vector">The movement amount (x,y,z)</param>

View file

@ -7,15 +7,17 @@ using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
/// <summary> /// <summary>
/// Common block placement operations /// Common block placement operations.
/// The functionality in this class is for build mode.
/// </summary> /// </summary>
public static class Placement public static class Placement
{ {
private static PlacementEngine placementEngine = new PlacementEngine(); private static PlacementEngine placementEngine = new PlacementEngine();
/// <summary> /// <summary>
/// Place a block at the given position. If scaled, position means the center of the block. The default block size is 0.2 in terms of position. /// Place a new block at the given position. If scaled, position means the center of the block. The default block size is 0.2 in terms of position.
/// Place blocks next to each other to connect them. /// Place blocks next to each other to connect them.
/// The placed block will be a complete block with a placement grid and collision which will be saved along with the game.
/// </summary> /// </summary>
/// <param name="block">The block's type</param> /// <param name="block">The block's type</param>
/// <param name="color">The block's color</param> /// <param name="color">The block's color</param>

View file

@ -9,14 +9,17 @@ using Unity.Mathematics;
namespace GamecraftModdingAPI.Blocks namespace GamecraftModdingAPI.Blocks
{ {
/// <summary> /// <summary>
/// Common block movement operations /// Common block rotation operations.
/// The functionality in this class is not completely implemented and will only work in build mode.
/// </summary> /// </summary>
public static class Rotation public static class Rotation
{ {
private static RotationEngine rotationEngine = new RotationEngine(); private static RotationEngine rotationEngine = new RotationEngine();
/// <summary> /// <summary>
/// Rotate a single block by a specific amount in degrees /// Rotate a single block by a specific amount in degrees.
/// This not destroy inter-block connections, so neighbouring blocks will remain attached despite appearances.
/// The cube placement grid and collision are also rotated.
/// </summary> /// </summary>
/// <param name="id">The block's id</param> /// <param name="id">The block's id</param>
/// <param name="vector">The rotation amount around the x,y,z-axis</param> /// <param name="vector">The rotation amount around the x,y,z-axis</param>
@ -32,7 +35,8 @@ namespace GamecraftModdingAPI.Blocks
} }
/// <summary> /// <summary>
/// Rotate all connected blocks by a specific amount in degrees /// Rotate all connected blocks by a specific amount in degrees.
/// This does not do anything because it has not been implemented.
/// </summary> /// </summary>
/// <param name="id">The starting block's id</param> /// <param name="id">The starting block's id</param>
/// <param name="vector">The rotation around the x,y,z-axis</param> /// <param name="vector">The rotation around the x,y,z-axis</param>

View file

@ -75,6 +75,7 @@ namespace GamecraftModdingAPI.Blocks
public float3 RotateConnectedBlocks(uint blockID, Vector3 vector) public float3 RotateConnectedBlocks(uint blockID, Vector3 vector)
{ {
// TODO: Implement and figure out the math
throw new NotImplementedException(); throw new NotImplementedException();
} }

View file

@ -12,6 +12,7 @@ namespace GamecraftModdingAPI.Blocks
{ {
/// <summary> /// <summary>
/// [EXPERIMENTAL] Common block signal operations /// [EXPERIMENTAL] Common block signal operations
/// The functionality in this class only works when in a game.
/// </summary> /// </summary>
public static class Signals public static class Signals
{ {
@ -48,7 +49,7 @@ namespace GamecraftModdingAPI.Blocks
} }
/// <summary> /// <summary>
/// Set a signal's value. /// Set the signal's value.
/// </summary> /// </summary>
/// <param name="signalID">The channel cluster's id.</param> /// <param name="signalID">The channel cluster's id.</param>
/// <param name="signal">The signal value (-1 to 1; not enforced).</param> /// <param name="signal">The signal value (-1 to 1; not enforced).</param>

View file

@ -10,7 +10,8 @@ using Svelto.Tasks.Enumerators;
namespace GamecraftModdingAPI.Tasks namespace GamecraftModdingAPI.Tasks
{ {
/// <summary> /// <summary>
/// An asynchronous task to be performed once /// An asynchronous task to be performed once.
/// Once constructed, this can be run by scheduling it with Scheduler.Schedule()
/// </summary> /// </summary>
public class Once : ISchedulable public class Once : ISchedulable
{ {

View file

@ -10,7 +10,8 @@ using Svelto.Tasks.Enumerators;
namespace GamecraftModdingAPI.Tasks namespace GamecraftModdingAPI.Tasks
{ {
/// <summary> /// <summary>
/// An asynchronous repeating task /// An asynchronous repeating task.
/// Once constructed, this can be run by scheduling it with Scheduler.Schedule()
/// </summary> /// </summary>
public class Repeatable : ISchedulable public class Repeatable : ISchedulable
{ {

View file

@ -9,6 +9,11 @@ using Svelto.Tasks.ExtraLean;
namespace GamecraftModdingAPI.Tasks namespace GamecraftModdingAPI.Tasks
{ {
/// <summary>
/// Asynchronous task scheduling for ISchedulables.
/// Asynchronous tasks will not freeze the main program, which makes them ideal for slow or blocking operations which don't need to be completed post-haste.
/// The functionality of this class works in any state.
/// </summary>
public static class Scheduler public static class Scheduler
{ {
public static Svelto.Tasks.Lean.Unity.UpdateMonoRunner leanRunnerUI public static Svelto.Tasks.Lean.Unity.UpdateMonoRunner leanRunnerUI
@ -31,6 +36,13 @@ namespace GamecraftModdingAPI.Tasks
public static readonly Svelto.Tasks.Lean.Unity.UpdateMonoRunner leanRunner = new Svelto.Tasks.Lean.Unity.UpdateMonoRunner("GamecraftModdingAPILean"); public static readonly Svelto.Tasks.Lean.Unity.UpdateMonoRunner leanRunner = new Svelto.Tasks.Lean.Unity.UpdateMonoRunner("GamecraftModdingAPILean");
/// <summary>
/// Schedule a task to run asynchronously.
/// This uses custom task runners (by default) to not interfere with the game.
/// </summary>
/// <param name="toRun">The task to run</param>
/// <param name="extraLean">Schedule toRun on an extra lean runner?</param>
/// <param name="ui">Schedule toRun on Gamecraft's built-in UI task runner?</param>
public static void Schedule(ISchedulable toRun, bool extraLean = false, bool ui = false) public static void Schedule(ISchedulable toRun, bool extraLean = false, bool ui = false)
{ {
if (extraLean) if (extraLean)