Add block type and color properties
This commit is contained in:
parent
ff57a16565
commit
6f8241554d
16 changed files with 75 additions and 113 deletions
|
@ -1,10 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
|
using Svelto.ECS;
|
||||||
|
using RobocraftX.Common;
|
||||||
|
using Unity.Mathematics;
|
||||||
|
|
||||||
using GamecraftModdingAPI.Blocks;
|
using GamecraftModdingAPI.Blocks;
|
||||||
using GamecraftModdingAPI.Utility;
|
using GamecraftModdingAPI.Utility;
|
||||||
using RobocraftX.Common;
|
|
||||||
using Svelto.ECS;
|
|
||||||
using Unity.Mathematics;
|
|
||||||
|
|
||||||
namespace GamecraftModdingAPI
|
namespace GamecraftModdingAPI
|
||||||
{
|
{
|
||||||
|
@ -80,11 +81,6 @@ namespace GamecraftModdingAPI
|
||||||
set => MovementEngine.MoveBlock(Id.entityID, value);
|
set => MovementEngine.MoveBlock(Id.entityID, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns an array of blocks that are connected to this one.
|
|
||||||
/// </summary>
|
|
||||||
public Block[] ConnectedCubes => BlockEngine.GetConnectedBlocks(Id.entityID);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The block's current rotation in degrees.
|
/// The block's current rotation in degrees.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -94,13 +90,57 @@ namespace GamecraftModdingAPI
|
||||||
set => RotationEngine.RotateBlock(Id.entityID, value);
|
set => RotationEngine.RotateBlock(Id.entityID, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The block's type (ID). Changing from or to a functional part may crash the game.
|
||||||
|
/// </summary>
|
||||||
|
public BlockIDs Type
|
||||||
|
{
|
||||||
|
get => (BlockIDs) BlockEngine.GetBlockInfo<DBEntityStruct>(Id).DBID;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
BlockEngine.GetBlockInfo<DBEntityStruct>(Id).DBID = (uint) value;
|
||||||
|
uint prefabId = PrefabsID.GetPrefabId((uint) value, 0);
|
||||||
|
BlockEngine.GetBlockInfo<GFXPrefabEntityStructGPUI>(Id).prefabID = prefabId;
|
||||||
|
BlockEngine.GetBlockInfo<PhysicsPrefabEntityStruct>(Id) = new PhysicsPrefabEntityStruct(prefabId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockColors Color
|
||||||
|
{
|
||||||
|
get => (BlockColors) (BlockEngine.GetBlockInfo<ColourParameterEntityStruct>(Id).indexInPalette % 10);
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ref var color = ref BlockEngine.GetBlockInfo<ColourParameterEntityStruct>(Id);
|
||||||
|
color.indexInPalette = (byte) (color.indexInPalette / 10 * 10 + value);
|
||||||
|
color.needsUpdate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte ColorDarkness
|
||||||
|
{
|
||||||
|
get => (byte) (BlockEngine.GetBlockInfo<ColourParameterEntityStruct>(Id).indexInPalette / 10);
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ref var color = ref BlockEngine.GetBlockInfo<ColourParameterEntityStruct>(Id);
|
||||||
|
color.indexInPalette = (byte) (10 * (byte) value + color.indexInPalette % 10);
|
||||||
|
color.needsUpdate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns an array of blocks that are connected to this one.
|
||||||
|
/// </summary>
|
||||||
|
public Block[] GetConnectedCubes() => BlockEngine.GetConnectedBlocks(Id.entityID);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Removes this block.
|
/// Removes this block.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>True if the block exists and could be removed.</returns>
|
/// <returns>True if the block exists and could be removed.</returns>
|
||||||
public bool Remove()
|
public bool Remove() => RemovalEngine.RemoveBlock(Id);
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return RemovalEngine.RemoveBlock(Id);
|
return $"{nameof(Id)}: {Id}, {nameof(Position)}: {Position}, {nameof(Rotation)}: {Rotation}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using GamecraftModdingAPI.Engines;
|
|
||||||
using RobocraftX.Blocks;
|
using RobocraftX.Blocks;
|
||||||
using RobocraftX.Common;
|
using RobocraftX.Common;
|
||||||
using Svelto.DataStructures;
|
using Svelto.DataStructures;
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
using Svelto.ECS.EntityStructs;
|
|
||||||
using Unity.Mathematics;
|
using GamecraftModdingAPI.Engines;
|
||||||
|
|
||||||
namespace GamecraftModdingAPI.Blocks
|
namespace GamecraftModdingAPI.Blocks
|
||||||
{
|
{
|
||||||
|
@ -35,5 +35,10 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
ret[i] = new Block(cubesToProcess[i]);
|
ret[i] = new Block(cubesToProcess[i]);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ref T GetBlockInfo<T>(EGID blockID) where T : struct, IEntityComponent
|
||||||
|
{
|
||||||
|
return ref entitiesDB.QueryEntity<T>(blockID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,11 +1,4 @@
|
||||||
using System;
|
using Svelto.ECS;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
using Svelto.ECS;
|
|
||||||
using RobocraftX.Common;
|
using RobocraftX.Common;
|
||||||
|
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
|
|
@ -1,24 +1,9 @@
|
||||||
using System;
|
using RobocraftX.Common;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using RobocraftX;
|
|
||||||
using RobocraftX.Blocks;
|
|
||||||
using RobocraftX.Blocks.Ghost;
|
|
||||||
using RobocraftX.Common;
|
|
||||||
using RobocraftX.Multiplayer;
|
|
||||||
using RobocraftX.SimulationModeState;
|
|
||||||
using RobocraftX.UECS;
|
using RobocraftX.UECS;
|
||||||
using Unity.Entities;
|
|
||||||
using Svelto.Context;
|
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
using Svelto.ECS.EntityStructs;
|
using Svelto.ECS.EntityStructs;
|
||||||
using Unity.Transforms;
|
using Unity.Transforms;
|
||||||
using Unity.Mathematics;
|
using Unity.Mathematics;
|
||||||
using UnityEngine;
|
|
||||||
using Svelto.DataStructures;
|
|
||||||
|
|
||||||
using GamecraftModdingAPI.Utility;
|
using GamecraftModdingAPI.Utility;
|
||||||
using GamecraftModdingAPI.Engines;
|
using GamecraftModdingAPI.Engines;
|
||||||
|
|
|
@ -4,21 +4,14 @@ using System.Reflection;
|
||||||
using DataLoader;
|
using DataLoader;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using RobocraftX.Blocks;
|
using RobocraftX.Blocks;
|
||||||
using RobocraftX.Blocks.Ghost;
|
|
||||||
using RobocraftX.Blocks.Scaling;
|
using RobocraftX.Blocks.Scaling;
|
||||||
using RobocraftX.Character;
|
using RobocraftX.Character;
|
||||||
using RobocraftX.CommandLine.Custom;
|
|
||||||
using RobocraftX.Common;
|
using RobocraftX.Common;
|
||||||
using RobocraftX.Common.Input;
|
|
||||||
using RobocraftX.Common.Utilities;
|
|
||||||
using RobocraftX.CR.MachineEditing;
|
using RobocraftX.CR.MachineEditing;
|
||||||
using RobocraftX.StateSync;
|
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
using Svelto.ECS.EntityStructs;
|
using Svelto.ECS.EntityStructs;
|
||||||
using Unity.Jobs;
|
|
||||||
using Unity.Mathematics;
|
using Unity.Mathematics;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using uREPL;
|
|
||||||
|
|
||||||
using GamecraftModdingAPI.Utility;
|
using GamecraftModdingAPI.Utility;
|
||||||
using GamecraftModdingAPI.Engines;
|
using GamecraftModdingAPI.Engines;
|
||||||
|
|
|
@ -2,15 +2,9 @@ using System.Reflection;
|
||||||
|
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using RobocraftX.Blocks;
|
using RobocraftX.Blocks;
|
||||||
using RobocraftX.Blocks.Ghost;
|
|
||||||
using RobocraftX.Character.Camera;
|
|
||||||
using RobocraftX.Character.Factories;
|
|
||||||
using RobocraftX.Common;
|
using RobocraftX.Common;
|
||||||
using RobocraftX.Players;
|
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
using uREPL;
|
|
||||||
|
|
||||||
using GamecraftModdingAPI.Commands;
|
|
||||||
using GamecraftModdingAPI.Utility;
|
using GamecraftModdingAPI.Utility;
|
||||||
using GamecraftModdingAPI.Engines;
|
using GamecraftModdingAPI.Engines;
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,7 @@
|
||||||
using System;
|
using RobocraftX.Common;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using RobocraftX;
|
|
||||||
using RobocraftX.Blocks;
|
|
||||||
using RobocraftX.Blocks.Ghost;
|
|
||||||
using RobocraftX.Common;
|
|
||||||
using RobocraftX.Multiplayer;
|
|
||||||
using RobocraftX.SimulationModeState;
|
|
||||||
using RobocraftX.UECS;
|
using RobocraftX.UECS;
|
||||||
using Unity.Entities;
|
|
||||||
using Svelto.Context;
|
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
using Svelto.ECS.EntityStructs;
|
using Svelto.ECS.EntityStructs;
|
||||||
using Unity.Transforms;
|
|
||||||
using Unity.Mathematics;
|
using Unity.Mathematics;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
|
@ -1,27 +1,6 @@
|
||||||
using System;
|
using Svelto.ECS;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using RobocraftX;
|
|
||||||
using RobocraftX.Blocks;
|
|
||||||
using RobocraftX.Blocks.Ghost;
|
|
||||||
using RobocraftX.Common;
|
|
||||||
using RobocraftX.Multiplayer;
|
|
||||||
using RobocraftX.SimulationModeState;
|
|
||||||
using RobocraftX.UECS;
|
|
||||||
using Unity.Entities;
|
|
||||||
using Svelto.Context;
|
|
||||||
using Svelto.DataStructures;
|
|
||||||
using Svelto.ECS;
|
|
||||||
using Svelto.ECS.EntityStructs;
|
|
||||||
using Unity.Transforms;
|
|
||||||
using Unity.Mathematics;
|
|
||||||
using UnityEngine;
|
|
||||||
using Gamecraft.Wires;
|
using Gamecraft.Wires;
|
||||||
|
|
||||||
using GamecraftModdingAPI.Utility;
|
|
||||||
using GamecraftModdingAPI.Engines;
|
using GamecraftModdingAPI.Engines;
|
||||||
|
|
||||||
namespace GamecraftModdingAPI.Blocks
|
namespace GamecraftModdingAPI.Blocks
|
||||||
|
|
|
@ -1,10 +1,4 @@
|
||||||
using System;
|
using Svelto.ECS;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using Svelto.ECS;
|
|
||||||
|
|
||||||
using GamecraftModdingAPI.Utility;
|
using GamecraftModdingAPI.Utility;
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
using System;
|
namespace GamecraftModdingAPI.Blocks
|
||||||
|
|
||||||
using Svelto.ECS;
|
|
||||||
|
|
||||||
namespace GamecraftModdingAPI.Blocks
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Common tweakable stats operations.
|
/// Common tweakable stats operations.
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
using System;
|
using RobocraftX.Blocks;
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
using RobocraftX.Blocks;
|
|
||||||
using Gamecraft.Wires;
|
using Gamecraft.Wires;
|
||||||
using Svelto.ECS;
|
using Svelto.ECS;
|
||||||
|
|
||||||
using GamecraftModdingAPI.Utility;
|
|
||||||
using GamecraftModdingAPI.Engines;
|
using GamecraftModdingAPI.Engines;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
namespace GamecraftModdingAPI.Blocks
|
||||||
namespace GamecraftModdingAPI.Blocks
|
|
||||||
{
|
{
|
||||||
public enum TweakableStat
|
public enum TweakableStat
|
||||||
{
|
{
|
||||||
|
|
|
@ -72,7 +72,6 @@ namespace GamecraftModdingAPI
|
||||||
// init object-oriented classes
|
// init object-oriented classes
|
||||||
Player.Init();
|
Player.Init();
|
||||||
Block.Init();
|
Block.Init();
|
||||||
RuntimeCommands.Register("getblock", () => new Player(PlayerType.Local).GetBlockLookedAt());
|
|
||||||
Logging.MetaLog($"{currentAssembly.GetName().Name} v{currentAssembly.GetName().Version} initialized");
|
Logging.MetaLog($"{currentAssembly.GetName().Name} v{currentAssembly.GetName().Version} initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
using Unity.Mathematics;
|
using Unity.Mathematics;
|
||||||
|
|
||||||
using GamecraftModdingAPI.Players;
|
using GamecraftModdingAPI.Players;
|
||||||
using GamecraftModdingAPI.Utility;
|
|
||||||
|
|
||||||
namespace GamecraftModdingAPI
|
namespace GamecraftModdingAPI
|
||||||
{
|
{
|
||||||
|
|
|
@ -248,10 +248,7 @@ namespace GamecraftModdingAPI.Players
|
||||||
? GhostBlockUtils.GetBuildInteractionDistance(entitiesDB, rayCast)
|
? GhostBlockUtils.GetBuildInteractionDistance(entitiesDB, rayCast)
|
||||||
: maxDistance;
|
: maxDistance;
|
||||||
if (rayCast.hit && rayCast.distance <= distance)
|
if (rayCast.hit && rayCast.distance <= distance)
|
||||||
{
|
|
||||||
Console.WriteLine("Hit block: " + rayCast.hitEgid);
|
|
||||||
return new Block(rayCast.hitEgid);
|
return new Block(rayCast.hitEgid);
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ using RobocraftX.SimulationModeState;
|
||||||
using GamecraftModdingAPI.Commands;
|
using GamecraftModdingAPI.Commands;
|
||||||
using GamecraftModdingAPI.Events;
|
using GamecraftModdingAPI.Events;
|
||||||
using GamecraftModdingAPI.Utility;
|
using GamecraftModdingAPI.Utility;
|
||||||
|
using GamecraftModdingAPI.Blocks;
|
||||||
|
|
||||||
namespace GamecraftModdingAPI.Tests
|
namespace GamecraftModdingAPI.Tests
|
||||||
{
|
{
|
||||||
|
@ -100,7 +101,7 @@ namespace GamecraftModdingAPI.Tests
|
||||||
.Action((float x, float y, float z) =>
|
.Action((float x, float y, float z) =>
|
||||||
{
|
{
|
||||||
if (GameState.IsBuildMode())
|
if (GameState.IsBuildMode())
|
||||||
foreach (var block in Block.GetLastPlacedBlock().ConnectedCubes)
|
foreach (var block in Block.GetLastPlacedBlock().GetConnectedCubes())
|
||||||
block.Position += new Unity.Mathematics.float3(x, y, z);
|
block.Position += new Unity.Mathematics.float3(x, y, z);
|
||||||
else
|
else
|
||||||
GamecraftModdingAPI.Utility.Logging.CommandLogError("Blocks can only be moved in Build mode!");
|
GamecraftModdingAPI.Utility.Logging.CommandLogError("Blocks can only be moved in Build mode!");
|
||||||
|
@ -141,6 +142,12 @@ namespace GamecraftModdingAPI.Tests
|
||||||
Tasks.Scheduler.Schedule(task);
|
Tasks.Scheduler.Schedule(task);
|
||||||
}).Build();
|
}).Build();
|
||||||
|
|
||||||
|
CommandBuilder.Builder("getBlock")
|
||||||
|
.Action(() => uREPL.Log.Output(new Player(Players.PlayerType.Local).GetBlockLookedAt()+"")).Build();
|
||||||
|
CommandBuilder.Builder("changeToAluminium")
|
||||||
|
.Action(() => new Player(Players.PlayerType.Local).GetBlockLookedAt().Type = BlockIDs.AluminiumCube)
|
||||||
|
.Build();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
CommandManager.AddCommand(new SimpleCustomCommandEngine<float>((float d) => { UnityEngine.Camera.main.fieldOfView = d; },
|
CommandManager.AddCommand(new SimpleCustomCommandEngine<float>((float d) => { UnityEngine.Camera.main.fieldOfView = d; },
|
||||||
"SetFOV", "Set the player camera's field of view"));
|
"SetFOV", "Set the player camera's field of view"));
|
||||||
|
|
Loading…
Reference in a new issue