diff --git a/GamecraftModdingAPI/Block.cs b/GamecraftModdingAPI/Block.cs
index f334c30..ade9f9b 100644
--- a/GamecraftModdingAPI/Block.cs
+++ b/GamecraftModdingAPI/Block.cs
@@ -342,10 +342,10 @@ namespace GamecraftModdingAPI
public bool Remove() => RemovalEngine.RemoveBlock(Id);
///
- /// Returns the rigid body of the cluster of blocks this one belongs to during simulation.
+ /// Returns the rigid body of the chunk of blocks this one belongs to during simulation.
/// Can be used to apply forces or move the block around while the simulation is running.
///
- /// The SimBody of the cluster or null if the block doesn't exist.
+ /// The SimBody of the chunk or null if the block doesn't exist.
public SimBody GetSimBody()
{
return BlockEngine.GetBlockInfo(this,
diff --git a/GamecraftModdingAPI/Blocks/BlockEngine.cs b/GamecraftModdingAPI/Blocks/BlockEngine.cs
index d6f4907..375620e 100644
--- a/GamecraftModdingAPI/Blocks/BlockEngine.cs
+++ b/GamecraftModdingAPI/Blocks/BlockEngine.cs
@@ -25,8 +25,6 @@ namespace GamecraftModdingAPI.Blocks
public bool isRemovable => false;
- internal bool Synced = true;
-
public void Dispose()
{
}
diff --git a/GamecraftModdingAPI/Blocks/BlockEventsEngine.cs b/GamecraftModdingAPI/Blocks/BlockEventsEngine.cs
index 0a205f0..1e5ce21 100644
--- a/GamecraftModdingAPI/Blocks/BlockEventsEngine.cs
+++ b/GamecraftModdingAPI/Blocks/BlockEventsEngine.cs
@@ -13,14 +13,8 @@ namespace GamecraftModdingAPI.Blocks
public event EventHandler Placed;
public event EventHandler Removed;
- public BlockEventsEngine()
- {
- //Console.WriteLine("Creating BlockEventsEngine\n" + Environment.StackTrace);
- }
-
public void Ready()
{
- //Console.WriteLine("BlockEventsEngine registered");
}
public EntitiesDB entitiesDB { get; set; }
@@ -50,37 +44,12 @@ namespace GamecraftModdingAPI.Blocks
}
}
- /*[HarmonyPatch]
- public static class TestPatch
- {
- public static void Postfix(FasterDictionary, FasterList> engines,
- ExclusiveGroupStruct? previousGroup, in PlatformProfiler profiler, EGID egid)
- {
- if (!engines.TryGetValue(new RefWrapper(TypeSafeDictionary._type), out result))
- return;
- }
- public static MethodBase TargetMethod()
- {
- return AccessTools.Method("Svelto.ECS.Internal.TypeSafeDictionary:AddEntityComponentToEngines");
- }
- }*/
-
- /*[HarmonyPatch]
- public static class TestPatch
- {
- public static void Postfix(EGID basePartEGID)
- {
- Console.WriteLine("Patched Add method: " + basePartEGID);
- }
- public static MethodBase TargetMethod()
- {
- return AccessTools.Method("RobocraftX.CR.MachineEditing.BuildBlockAdditionalPartEngine:Add");
- }
- }*/
-
public struct BlockPlacedRemovedEventArgs
{
public EGID ID;
public BlockIDs Type;
+ private Block block;
+
+ public Block Block => block ?? (block = new Block(ID));
}
}
\ No newline at end of file
diff --git a/GamecraftModdingAPI/Blocks/BlockTests.cs b/GamecraftModdingAPI/Blocks/BlockTests.cs
index 133db5e..3e430ea 100644
--- a/GamecraftModdingAPI/Blocks/BlockTests.cs
+++ b/GamecraftModdingAPI/Blocks/BlockTests.cs
@@ -20,11 +20,11 @@ namespace GamecraftModdingAPI.Blocks
}
[APITestCase(TestType.EditMode)]
- public static void TestSync()
+ public static void TestInitProperty()
{
Block newBlock = Block.PlaceNew(BlockIDs.AluminiumCube, Unity.Mathematics.float3.zero + 2);
if (!Assert.CloseTo(newBlock.Position, (Unity.Mathematics.float3.zero + 2), $"Newly placed block at {newBlock.Position} is expected at {Unity.Mathematics.float3.zero + 2}.", "Newly placed block position matches.")) return;
- Assert.Equal(newBlock.Exists, true, "Newly placed block does not exist, possibly because Sync() skipped/missed/failed.", "Newly placed block exists, Sync() successful.");
+ //Assert.Equal(newBlock.Exists, true, "Newly placed block does not exist, possibly because Sync() skipped/missed/failed.", "Newly placed block exists, Sync() successful.");
}
[APITestCase(TestType.EditMode)]
@@ -32,7 +32,7 @@ namespace GamecraftModdingAPI.Blocks
{
TextBlock textBlock = null; // Note: the assignment operation is a lambda, which slightly confuses the compiler
Assert.Errorless(() => { textBlock = Block.PlaceNew(BlockIDs.TextBlock, Unity.Mathematics.float3.zero + 1); }, "Block.PlaceNew() raised an exception: ", "Block.PlaceNew() completed without issue.");
- if (!Assert.NotNull(textBlock, "Block.Specialize() returned null, possibly because it failed silently.", "Specialized TextBlock is not null.")) return;
+ if (!Assert.NotNull(textBlock, "Block.PlaceNew() returned null, possibly because it failed silently.", "Specialized TextBlock is not null.")) return;
if (!Assert.NotNull(textBlock.Text, "TextBlock.Text is null, possibly because it failed silently.", "TextBlock.Text is not null.")) return;
if (!Assert.NotNull(textBlock.TextBlockId, "TextBlock.TextBlockId is null, possibly because it failed silently.", "TextBlock.TextBlockId is not null.")) return;
}
diff --git a/GamecraftModdingAPI/Blocks/PlacementEngine.cs b/GamecraftModdingAPI/Blocks/PlacementEngine.cs
index 61834b0..e111598 100644
--- a/GamecraftModdingAPI/Blocks/PlacementEngine.cs
+++ b/GamecraftModdingAPI/Blocks/PlacementEngine.cs
@@ -107,7 +107,6 @@ namespace GamecraftModdingAPI.Blocks
ref PickedBlockExtraDataStruct pickedBlock = ref entitiesDB.QueryEntity(playerEGID);
pickedBlock.placedBlockEntityID = structInitializer.EGID;
pickedBlock.placedBlockWasAPickedBlock = false;
- Block.BlockEngine.Synced = false; // Block entities will need to be submitted before properties can be used
return structInitializer;
}
diff --git a/GamecraftModdingAPI/SimBody.cs b/GamecraftModdingAPI/SimBody.cs
index 420a655..19f4285 100644
--- a/GamecraftModdingAPI/SimBody.cs
+++ b/GamecraftModdingAPI/SimBody.cs
@@ -9,7 +9,7 @@ using RobocraftX.Physics;
namespace GamecraftModdingAPI
{
///
- /// A rigid body (like a cluster of connected blocks) during simulation.
+ /// A rigid body (like a chunk of connected blocks) during simulation.
///
public class SimBody : IEquatable, IEquatable
{
diff --git a/GamecraftModdingAPI/Tests/Assert.cs b/GamecraftModdingAPI/Tests/Assert.cs
index eec9c5c..78f0597 100644
--- a/GamecraftModdingAPI/Tests/Assert.cs
+++ b/GamecraftModdingAPI/Tests/Assert.cs
@@ -83,32 +83,12 @@ namespace GamecraftModdingAPI.Tests
{
if (err == null) err = $"{nameof(T)} '{obj1}' is not equal to '{obj2}'.";
if (success == null) success = $"{nameof(T)} '{obj1}' is equal to '{obj2}'.";
- if (obj1 == null && obj2 == null)
+ if ((obj1 == null && obj2 == null)
+ || (obj1 != null && obj2 != null && obj1.Equals(obj2) && obj2.Equals(obj1)))
{
// pass
Log(PASS + success);
TestRoot.TestsPassed = true;
- return true;
- }
- else if (!(obj1 == null && obj2 == null) && obj1.Equals(obj2) && obj2.Equals(obj1))
- {
- // pass
- Log(PASS + success);
- TestRoot.TestsPassed = true;
- return true;
- }
- else if (obj1 != null && (obj1 != null && !obj1.Equals(obj2)))
- {
- // pass
- Log(PASS + success);
- TestRoot.TestsPassed = true;
- return true;
- }
- else if (obj2 != null && !obj2.Equals(obj1))
- {
- // pass
- Log(PASS + success);
- TestRoot.TestsPassed = true;
return true;
}
else
diff --git a/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs b/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs
index d5cf714..d8b50fa 100644
--- a/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs
+++ b/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs
@@ -234,7 +234,7 @@ namespace GamecraftModdingAPI.Tests
CommandBuilder.Builder()
.Name("PlaceConsole")
- .Description("Place a bunch of console block with a given text")
+ .Description("Place a bunch of console block with a given text - entering simulation with them crashes the game as the cmd doesn't exist")
.Action((float x, float y, float z) =>
{
Stopwatch sw = new Stopwatch();
diff --git a/GamecraftModdingAPI/Utility/DeterministicStepCompositionRootPatch.cs b/GamecraftModdingAPI/Utility/DeterministicStepCompositionRootPatch.cs
deleted file mode 100644
index 9cabbe0..0000000
--- a/GamecraftModdingAPI/Utility/DeterministicStepCompositionRootPatch.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-
-using RobocraftX.StateSync;
-using Svelto.ECS;
-
-using HarmonyLib;
-
-namespace GamecraftModdingAPI.Utility
-{
- [HarmonyPatch(typeof(DeterministicStepCompositionRoot), "ResetWorld")]
- public static class DeterministicStepCompositionRootPatch
- {
- private static SimpleEntitiesSubmissionScheduler engineRootScheduler;
- public static void Postfix(SimpleEntitiesSubmissionScheduler scheduler)
- {
- engineRootScheduler = scheduler;
- }
-
- internal static void SubmitEntitiesNow()
- {
- if (engineRootScheduler != null)
- engineRootScheduler.SubmitEntities();
- }
- }
-}