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
59 lines
2.1 KiB
C#
59 lines
2.1 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 rotation operations.
|
|
/// The functionality in this class is not completely implemented and will only work in build mode.
|
|
/// </summary>
|
|
public static class Rotation
|
|
{
|
|
private static RotationEngine rotationEngine = new RotationEngine();
|
|
|
|
/// <summary>
|
|
/// 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>
|
|
/// <param name="id">The block's id</param>
|
|
/// <param name="vector">The rotation amount around the x,y,z-axis</param>
|
|
/// <returns>Whether the operation was successful</returns>
|
|
public static bool RotateBlock(uint id, float3 vector)
|
|
{
|
|
if (rotationEngine.IsInGame && GamecraftModdingAPI.Utility.GameState.IsBuildMode())
|
|
{
|
|
rotationEngine.RotateBlock(id, vector);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Rotate all connected blocks by a specific amount in degrees.
|
|
/// This does not do anything because it has not been implemented.
|
|
/// </summary>
|
|
/// <param name="id">The starting block's id</param>
|
|
/// <param name="vector">The rotation around the x,y,z-axis</param>
|
|
/// <returns>Whether the operation was successful</returns>
|
|
public static bool RotateConnectedBlocks(uint id, float3 vector)
|
|
{
|
|
if (rotationEngine.IsInGame && GamecraftModdingAPI.Utility.GameState.IsBuildMode())
|
|
{
|
|
rotationEngine.RotateConnectedBlocks(id, vector);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static void Init()
|
|
{
|
|
GamecraftModdingAPI.Utility.GameEngineManager.AddGameEngine(rotationEngine);
|
|
}
|
|
}
|
|
}
|