Test fixes, block event Block property
Fixed Assert.Equal() Changed tests to reflect changes Added Block property to the block event args Completely removed sync things
This commit is contained in:
parent
d842df7681
commit
cc4ed3e174
9 changed files with 12 additions and 91 deletions
|
@ -342,10 +342,10 @@ namespace GamecraftModdingAPI
|
||||||
public bool Remove() => RemovalEngine.RemoveBlock(Id);
|
public bool Remove() => RemovalEngine.RemoveBlock(Id);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 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.
|
/// Can be used to apply forces or move the block around while the simulation is running.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>The SimBody of the cluster or null if the block doesn't exist.</returns>
|
/// <returns>The SimBody of the chunk or null if the block doesn't exist.</returns>
|
||||||
public SimBody GetSimBody()
|
public SimBody GetSimBody()
|
||||||
{
|
{
|
||||||
return BlockEngine.GetBlockInfo(this,
|
return BlockEngine.GetBlockInfo(this,
|
||||||
|
|
|
@ -25,8 +25,6 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
|
|
||||||
public bool isRemovable => false;
|
public bool isRemovable => false;
|
||||||
|
|
||||||
internal bool Synced = true;
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,14 +13,8 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
public event EventHandler<BlockPlacedRemovedEventArgs> Placed;
|
public event EventHandler<BlockPlacedRemovedEventArgs> Placed;
|
||||||
public event EventHandler<BlockPlacedRemovedEventArgs> Removed;
|
public event EventHandler<BlockPlacedRemovedEventArgs> Removed;
|
||||||
|
|
||||||
public BlockEventsEngine()
|
|
||||||
{
|
|
||||||
//Console.WriteLine("Creating BlockEventsEngine\n" + Environment.StackTrace);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Ready()
|
public void Ready()
|
||||||
{
|
{
|
||||||
//Console.WriteLine("BlockEventsEngine registered");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntitiesDB entitiesDB { get; set; }
|
public EntitiesDB entitiesDB { get; set; }
|
||||||
|
@ -50,37 +44,12 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*[HarmonyPatch]
|
|
||||||
public static class TestPatch
|
|
||||||
{
|
|
||||||
public static void Postfix(FasterDictionary<RefWrapper<Type>, FasterList<IEngine>> engines,
|
|
||||||
ExclusiveGroupStruct? previousGroup, in PlatformProfiler profiler, EGID egid)
|
|
||||||
{
|
|
||||||
if (!engines.TryGetValue(new RefWrapper<Type>(TypeSafeDictionary<TValue>._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 struct BlockPlacedRemovedEventArgs
|
||||||
{
|
{
|
||||||
public EGID ID;
|
public EGID ID;
|
||||||
public BlockIDs Type;
|
public BlockIDs Type;
|
||||||
|
private Block block;
|
||||||
|
|
||||||
|
public Block Block => block ?? (block = new Block(ID));
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,11 +20,11 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
}
|
}
|
||||||
|
|
||||||
[APITestCase(TestType.EditMode)]
|
[APITestCase(TestType.EditMode)]
|
||||||
public static void TestSync()
|
public static void TestInitProperty()
|
||||||
{
|
{
|
||||||
Block newBlock = Block.PlaceNew(BlockIDs.AluminiumCube, Unity.Mathematics.float3.zero + 2);
|
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;
|
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)]
|
[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
|
TextBlock textBlock = null; // Note: the assignment operation is a lambda, which slightly confuses the compiler
|
||||||
Assert.Errorless(() => { textBlock = Block.PlaceNew<TextBlock>(BlockIDs.TextBlock, Unity.Mathematics.float3.zero + 1); }, "Block.PlaceNew<TextBlock>() raised an exception: ", "Block.PlaceNew<TextBlock>() completed without issue.");
|
Assert.Errorless(() => { textBlock = Block.PlaceNew<TextBlock>(BlockIDs.TextBlock, Unity.Mathematics.float3.zero + 1); }, "Block.PlaceNew<TextBlock>() raised an exception: ", "Block.PlaceNew<TextBlock>() completed without issue.");
|
||||||
if (!Assert.NotNull(textBlock, "Block.Specialize<TextBlock>() returned null, possibly because it failed silently.", "Specialized TextBlock is not null.")) return;
|
if (!Assert.NotNull(textBlock, "Block.PlaceNew<TextBlock>() 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.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;
|
if (!Assert.NotNull(textBlock.TextBlockId, "TextBlock.TextBlockId is null, possibly because it failed silently.", "TextBlock.TextBlockId is not null.")) return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,6 @@ namespace GamecraftModdingAPI.Blocks
|
||||||
ref PickedBlockExtraDataStruct pickedBlock = ref entitiesDB.QueryEntity<PickedBlockExtraDataStruct>(playerEGID);
|
ref PickedBlockExtraDataStruct pickedBlock = ref entitiesDB.QueryEntity<PickedBlockExtraDataStruct>(playerEGID);
|
||||||
pickedBlock.placedBlockEntityID = structInitializer.EGID;
|
pickedBlock.placedBlockEntityID = structInitializer.EGID;
|
||||||
pickedBlock.placedBlockWasAPickedBlock = false;
|
pickedBlock.placedBlockWasAPickedBlock = false;
|
||||||
Block.BlockEngine.Synced = false; // Block entities will need to be submitted before properties can be used
|
|
||||||
return structInitializer;
|
return structInitializer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ using RobocraftX.Physics;
|
||||||
namespace GamecraftModdingAPI
|
namespace GamecraftModdingAPI
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A rigid body (like a cluster of connected blocks) during simulation.
|
/// A rigid body (like a chunk of connected blocks) during simulation.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SimBody : IEquatable<SimBody>, IEquatable<EGID>
|
public class SimBody : IEquatable<SimBody>, IEquatable<EGID>
|
||||||
{
|
{
|
||||||
|
|
|
@ -83,28 +83,8 @@ namespace GamecraftModdingAPI.Tests
|
||||||
{
|
{
|
||||||
if (err == null) err = $"{nameof(T)} '{obj1}' is not equal to '{obj2}'.";
|
if (err == null) err = $"{nameof(T)} '{obj1}' is not equal to '{obj2}'.";
|
||||||
if (success == null) success = $"{nameof(T)} '{obj1}' is 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
|
// pass
|
||||||
Log(PASS + success);
|
Log(PASS + success);
|
||||||
|
|
|
@ -234,7 +234,7 @@ namespace GamecraftModdingAPI.Tests
|
||||||
|
|
||||||
CommandBuilder.Builder()
|
CommandBuilder.Builder()
|
||||||
.Name("PlaceConsole")
|
.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) =>
|
.Action((float x, float y, float z) =>
|
||||||
{
|
{
|
||||||
Stopwatch sw = new Stopwatch();
|
Stopwatch sw = new Stopwatch();
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue