NorbiPeti
9609187cff
Removed GameState methods from block APIs Created a BlockUtility class to get the block the player is looking at Changed the return type of PlaceBlock, returning the ID of the newly placed block or null
61 lines
2.2 KiB
C#
61 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using Unity.Mathematics;
|
|
|
|
namespace GamecraftModdingAPI.Blocks
|
|
{
|
|
/// <summary>
|
|
/// Common block movement operations.
|
|
/// The functionality of this class only works in build mode.
|
|
/// </summary>
|
|
public static class Movement
|
|
{
|
|
private static MovementEngine movementEngine = new MovementEngine();
|
|
|
|
/// <summary>
|
|
/// 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>
|
|
/// <param name="id">The block's id</param>
|
|
/// <param name="vector">The movement amount (x,y,z)</param>
|
|
/// <returns>Whether the operation was successful</returns>
|
|
public static bool MoveBlock(uint id, float3 vector)
|
|
{
|
|
if (movementEngine.IsInGame && GamecraftModdingAPI.Utility.GameState.IsBuildMode())
|
|
{
|
|
movementEngine.MoveBlock(id, vector);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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>
|
|
/// <param name="id">The starting block's id</param>
|
|
/// <param name="vector">The movement amount (x,y,z)</param>
|
|
/// <returns>Whether the operation was successful</returns>
|
|
public static bool MoveConnectedBlocks(uint id, float3 vector)
|
|
{
|
|
if (movementEngine.IsInGame && GamecraftModdingAPI.Utility.GameState.IsBuildMode())
|
|
{
|
|
movementEngine.MoveConnectedBlocks(id, vector);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static void Init()
|
|
{
|
|
GamecraftModdingAPI.Utility.GameEngineManager.AddGameEngine(movementEngine);
|
|
}
|
|
}
|
|
}
|