From 39be331d94a56e8d572246727a8a335ff3fd2d60 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Thu, 4 Nov 2021 20:58:12 +0100 Subject: [PATCH] Mirror mode attempt and update to latest Techblox --- BuildingTools/BuildingTools.cs | 18 +- BuildingTools/BuildingTools.csproj | 312 +++++++++++++++++++++-------- BuildingTools/MirrorModeEngine.cs | 95 +++++++++ 3 files changed, 335 insertions(+), 90 deletions(-) create mode 100644 BuildingTools/MirrorModeEngine.cs diff --git a/BuildingTools/BuildingTools.cs b/BuildingTools/BuildingTools.cs index 618261e..a2288fd 100644 --- a/BuildingTools/BuildingTools.cs +++ b/BuildingTools/BuildingTools.cs @@ -9,6 +9,7 @@ using TechbloxModdingAPI.Blocks; using TechbloxModdingAPI.Commands; using TechbloxModdingAPI.Utility; using IllusionPlugin; +using Techblox.Services.GameDetails; using TechbloxModdingAPI.App; using Unity.Mathematics; using Main = TechbloxModdingAPI.Main; @@ -20,6 +21,8 @@ namespace BuildingTools private readonly CommandUtils _commandUtils; private readonly BlockSelections _blockSelections; + private readonly MirrorModeEngine _mirrorModeEngine = new MirrorModeEngine(); + public BuildingTools() { _blockSelections = new BlockSelections(); @@ -215,7 +218,9 @@ namespace BuildingTools CommandBuilder.Builder("setLimits", "Sets the CPU and power limits.") .Action((int cpu, int power) => { - var data = FullGameFields._dataDb.GetValue(1); + //MachineRulesComponent 0U, GroupCompound.BuildGroup + //var data = FullGameFields._dataDb.GetValue(1); + var data = new BuildRulesData(); //TODO Logging.CommandLog($"Old CPU limit: {data.CPULimitMax}, power limit: {data.PowerLimitMax}"); data.PowerLimitMax = power; data.CPULimitMax = cpu; @@ -246,6 +251,8 @@ namespace BuildingTools noGarage.Toggle(); }).Build(); + _mirrorModeEngine.Init(); + new Harmony("BuildTools").PatchAll(Assembly.GetExecutingAssembly()); } @@ -281,16 +288,11 @@ namespace BuildingTools if (wire == null) return ""; var startPos = wire.Start.Position; var endPos = wire.End.Position; - Console.WriteLine("Start port: " + wire.StartPort + " End port: " + wire.EndPort); - Console.WriteLine("Start block: " + wire.Start); - Console.WriteLine("End block: " + wire.End); - string startName = wire.StartPort != byte.MaxValue ? wire.Start.OutputPortName(wire.StartPort) : "no port"; - string endName = wire.EndPort != byte.MaxValue ? wire.End.InputPortName(wire.EndPort) : "no port"; return $"Wire with {wire.Id}\n" + $"- From block {wire.Start.Type} at {startPos.x:F} {startPos.y:F} {startPos.z:F}\n" + - $"- at port {startName}\n" + + $"- at port {wire.StartPortName}\n" + $"- To block {wire.End.Type} at {endPos.x:F} {endPos.y:F} {endPos.z:F}\n" + - $"- at port {endName}"; + $"- at port {wire.EndPortName}"; } private static string GetBodyInfoInSimMode() diff --git a/BuildingTools/BuildingTools.csproj b/BuildingTools/BuildingTools.csproj index 491d59d..923661d 100644 --- a/BuildingTools/BuildingTools.csproj +++ b/BuildingTools/BuildingTools.csproj @@ -69,13 +69,13 @@ ..\ref\TechbloxPreview_Data\Managed\Blocks.HUDFeedbackBlocks.dll ..\..\ref\TechbloxPreview_Data\Managed\Blocks.HUDFeedbackBlocks.dll - - ..\ref\TechbloxPreview_Data\Managed\CommandLine.dll - ..\..\ref\TechbloxPreview_Data\Managed\CommandLine.dll + + ..\ref\TechbloxPreview_Data\Managed\Boxophobic.TheVehetationEngine.Runtime.dll + ..\..\ref\TechbloxPreview_Data\Managed\Boxophobic.TheVehetationEngine.Runtime.dll - - ..\ref\TechbloxPreview_Data\Managed\CommandLineCompositionRoot.dll - ..\..\ref\TechbloxPreview_Data\Managed\CommandLineCompositionRoot.dll + + ..\ref\TechbloxPreview_Data\Managed\Boxophobic.Utils.Scripts.dll + ..\..\ref\TechbloxPreview_Data\Managed\Boxophobic.Utils.Scripts.dll ..\ref\TechbloxPreview_Data\Managed\DataLoader.dll @@ -85,6 +85,14 @@ ..\ref\TechbloxPreview_Data\Managed\DDNA.dll ..\..\ref\TechbloxPreview_Data\Managed\DDNA.dll + + ..\ref\TechbloxPreview_Data\Managed\EasyButtons.dll + ..\..\ref\TechbloxPreview_Data\Managed\EasyButtons.dll + + + ..\ref\TechbloxPreview_Data\Managed\EOSSDK.dll + ..\..\ref\TechbloxPreview_Data\Managed\EOSSDK.dll + ..\ref\TechbloxPreview_Data\Managed\FMODUnity.dll ..\..\ref\TechbloxPreview_Data\Managed\FMODUnity.dll @@ -105,6 +113,10 @@ ..\ref\TechbloxPreview_Data\Managed\Gamecraft.BlockEntityFactory.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.BlockEntityFactory.dll + + ..\ref\TechbloxPreview_Data\Managed\Gamecraft.BlockGroups.dll + ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.BlockGroups.dll + ..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.DamagingSurfaceBlock.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.DamagingSurfaceBlock.dll @@ -117,10 +129,6 @@ ..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.GenericPhysicsBlocks.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.GenericPhysicsBlocks.dll - - ..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.LightBlock.dll - ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.LightBlock.dll - ..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.LogicBlock.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.Blocks.LogicBlock.dll @@ -157,6 +165,10 @@ ..\ref\TechbloxPreview_Data\Managed\Gamecraft.Damage.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.Damage.dll + + ..\ref\TechbloxPreview_Data\Managed\Gamecraft.Effects.dll + ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.Effects.dll + ..\ref\TechbloxPreview_Data\Managed\Gamecraft.ExplosionFragments.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.ExplosionFragments.dll @@ -209,6 +221,10 @@ ..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.ModeBar.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.ModeBar.dll + + ..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.OptionsScreen.dll + ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.OptionsScreen.dll + ..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.TabsBar.Blocks.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.TabsBar.Blocks.dll @@ -265,74 +281,10 @@ ..\ref\TechbloxPreview_Data\Managed\Gamecraft.PerformanceWarnings.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.PerformanceWarnings.dll - - ..\ref\TechbloxPreview_Data\Managed\Gamecraft.BlockGroups.dll - ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.BlockGroups.dll - - - ..\ref\TechbloxPreview_Data\Managed\Gamecraft.Effects.dll - ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.Effects.dll - - - ..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.OptionsScreen.dll - ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.GUI.OptionsScreen.dll - ..\ref\TechbloxPreview_Data\Managed\Gamecraft.PickupBlck.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.PickupBlck.dll - - ..\ref\TechbloxPreview_Data\Managed\Havok.Physics.Hybrid.dll - ..\..\ref\TechbloxPreview_Data\Managed\Havok.Physics.Hybrid.dll - - - ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.Ghost.dll - ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.Ghost.dll - - - ..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.ColourInventory.dll - ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.ColourInventory.dll - - - ..\ref\TechbloxPreview_Data\Managed\Robocraftx.ObjectIdBlocks.dll - ..\..\ref\TechbloxPreview_Data\Managed\Robocraftx.ObjectIdBlocks.dll - - - ..\ref\TechbloxPreview_Data\Managed\StringFormatter.dll - ..\..\ref\TechbloxPreview_Data\Managed\StringFormatter.dll - - - ..\ref\TechbloxPreview_Data\Managed\Techblox.FlyCam.dll - ..\..\ref\TechbloxPreview_Data\Managed\Techblox.FlyCam.dll - - - ..\ref\TechbloxPreview_Data\Managed\Unity.Addressables.dll - ..\..\ref\TechbloxPreview_Data\Managed\Unity.Addressables.dll - - - ..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.Extensions.dll - ..\..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.Extensions.dll - - - ..\ref\TechbloxPreview_Data\Managed\Unity.ResourceManager.dll - ..\..\ref\TechbloxPreview_Data\Managed\Unity.ResourceManager.dll - - - ..\ref\TechbloxPreview_Data\Managed\UnityEngine.AudioModule.dll - ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.AudioModule.dll - - - ..\ref\TechbloxPreview_Data\Managed\UnityEngine.IMGUIModule.dll - ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.IMGUIModule.dll - - - ..\ref\TechbloxPreview_Data\Managed\UnityEngine.SpriteShapeModule.dll - ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.SpriteShapeModule.dll - - - ..\ref\TechbloxPreview_Data\Managed\UnityEngine.UmbraModule.dll - ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.UmbraModule.dll - ..\ref\TechbloxPreview_Data\Managed\Gamecraft.PickupsCommon.dll ..\..\ref\TechbloxPreview_Data\Managed\Gamecraft.PickupsCommon.dll @@ -393,6 +345,10 @@ ..\ref\TechbloxPreview_Data\Managed\Havok.Physics.dll ..\..\ref\TechbloxPreview_Data\Managed\Havok.Physics.dll + + ..\ref\TechbloxPreview_Data\Managed\Havok.Physics.Hybrid.dll + ..\..\ref\TechbloxPreview_Data\Managed\Havok.Physics.Hybrid.dll + ..\ref\TechbloxPreview_Data\Managed\JWT.dll ..\..\ref\TechbloxPreview_Data\Managed\JWT.dll @@ -445,6 +401,10 @@ ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.dll + + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.Ghost.dll + ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.Ghost.dll + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.Triggers.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.Triggers.dll @@ -497,6 +457,10 @@ ..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.BlocksInventory.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.BlocksInventory.dll + + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.ColourInventory.dll + ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.ColourInventory.dll + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.Inventory.dll @@ -525,6 +489,10 @@ ..\ref\TechbloxPreview_Data\Managed\RobocraftX.MainGame.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.MainGame.dll + + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.MainGameMock.dll + ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.MainGameMock.dll + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.MainSimulation.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.MainSimulation.dll @@ -553,6 +521,10 @@ ..\ref\TechbloxPreview_Data\Managed\RobocraftX.MultiplayerInput.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.MultiplayerInput.dll + + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.ObjectIdBlocks.dll + ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.ObjectIdBlocks.dll + ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Party.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Party.dll @@ -569,10 +541,6 @@ ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Player.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Player.dll - - ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Rendering.dll - ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Rendering.dll - ..\ref\TechbloxPreview_Data\Managed\RobocraftX.Rendering.Mock.dll ..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Rendering.Mock.dll @@ -613,6 +581,10 @@ ..\ref\TechbloxPreview_Data\Managed\SpecializedDescriptors.dll ..\..\ref\TechbloxPreview_Data\Managed\SpecializedDescriptors.dll + + ..\ref\TechbloxPreview_Data\Managed\StringFormatter.dll + ..\..\ref\TechbloxPreview_Data\Managed\StringFormatter.dll + ..\ref\TechbloxPreview_Data\Managed\Svelto.Common.dll ..\..\ref\TechbloxPreview_Data\Managed\Svelto.Common.dll @@ -621,6 +593,10 @@ ..\ref\TechbloxPreview_Data\Managed\Svelto.ECS.dll ..\..\ref\TechbloxPreview_Data\Managed\Svelto.ECS.dll + + ..\ref\TechbloxPreview_Data\Managed\Svelto.ECS.GUI.dll + ..\..\ref\TechbloxPreview_Data\Managed\Svelto.ECS.GUI.dll + ..\ref\TechbloxPreview_Data\Managed\Svelto.Services.dll ..\..\ref\TechbloxPreview_Data\Managed\Svelto.Services.dll @@ -629,14 +605,38 @@ ..\ref\TechbloxPreview_Data\Managed\Svelto.Tasks.dll ..\..\ref\TechbloxPreview_Data\Managed\Svelto.Tasks.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.AtmosphereBlock.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.AtmosphereBlock.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.AutoForward.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.AutoForward.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Backend.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Backend.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Blocks.LightBlock.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Blocks.LightBlock.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Building.Rules.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Building.Rules.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.BuildingDrone.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.BuildingDrone.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.Camera.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Camera.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.ContextSensitiveTextHint.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.ContextSensitiveTextHint.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.EngineBlock.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.EngineBlock.dll @@ -645,6 +645,50 @@ ..\ref\TechbloxPreview_Data\Managed\Techblox.Environment.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Environment.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.EnvironmentBlocks.BuildingEnvironment.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.EnvironmentBlocks.BuildingEnvironment.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.EnvironmentBlocks.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.EnvironmentBlocks.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.EnvironmentBlocks.SimulationWorldEnvironment.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.EnvironmentBlocks.SimulationWorldEnvironment.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GameSelection.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GameSelection.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Building.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Building.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.BuildRules.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.BuildRules.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.BuildRules.MockUps.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.BuildRules.MockUps.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.GamePortal.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.GamePortal.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.GamePortal.MockUps.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.GamePortal.MockUps.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Hotbar.Landscapes.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Hotbar.Landscapes.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Hotbar.Materials.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Hotbar.Materials.dll @@ -653,14 +697,38 @@ ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Inventory.Common.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Inventory.Common.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Inventory.Landscapes.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Inventory.Landscapes.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Inventory.Materials.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Inventory.Materials.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Login.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Login.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Mocks.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Mocks.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Mocks.DynamicListBuild.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Mocks.DynamicListBuild.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.MyGamesScreen.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.MyGamesScreen.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Notifications.MockUps.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.Notifications.MockUps.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.TabsBar.Landscapes.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.TabsBar.Landscapes.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.TabsBar.Materials.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.GUI.TabsBar.Materials.dll @@ -673,6 +741,46 @@ ..\ref\TechbloxPreview_Data\Managed\Techblox.Pointer.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Pointer.dll + + ..\ref\TechbloxPreview_Data\Managed\Techblox.ProceduralReflectionProbes.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.ProceduralReflectionProbes.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.Common.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.Common.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.DOTS.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.DOTS.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.GPUI.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.GPUI.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.Unity.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Rendering.Unity.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.SaveGamesConversion.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.SaveGamesConversion.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Services.Eos.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Services.Eos.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Services.GameDetails.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Services.GameDetails.dll + + + ..\ref\TechbloxPreview_Data\Managed\Techblox.Services.Storage.dll + ..\..\ref\TechbloxPreview_Data\Managed\Techblox.Services.Storage.dll + ..\ref\TechbloxPreview_Data\Managed\Techblox.SwitchAnimation.dll ..\..\ref\TechbloxPreview_Data\Managed\Techblox.SwitchAnimation.dll @@ -701,6 +809,10 @@ ..\ref\TechbloxPreview_Data\Managed\UniTask.TextMeshPro.dll ..\..\ref\TechbloxPreview_Data\Managed\UniTask.TextMeshPro.dll + + ..\ref\TechbloxPreview_Data\Managed\Unity.Addressables.dll + ..\..\ref\TechbloxPreview_Data\Managed\Unity.Addressables.dll + ..\ref\TechbloxPreview_Data\Managed\Unity.Burst.Cecil.dll ..\..\ref\TechbloxPreview_Data\Managed\Unity.Burst.Cecil.dll @@ -757,6 +869,10 @@ ..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.dll ..\..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.dll + + ..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.Extensions.dll + ..\..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.Extensions.dll + ..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.Extensions.Hybrid.dll ..\..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.Extensions.Hybrid.dll @@ -789,6 +905,18 @@ ..\ref\TechbloxPreview_Data\Managed\Unity.Properties.UI.dll ..\..\ref\TechbloxPreview_Data\Managed\Unity.Properties.UI.dll + + ..\ref\TechbloxPreview_Data\Managed\Unity.Recorder.Base.dll + ..\..\ref\TechbloxPreview_Data\Managed\Unity.Recorder.Base.dll + + + ..\ref\TechbloxPreview_Data\Managed\Unity.Recorder.dll + ..\..\ref\TechbloxPreview_Data\Managed\Unity.Recorder.dll + + + ..\ref\TechbloxPreview_Data\Managed\Unity.Rendering.Hybrid.dll + ..\..\ref\TechbloxPreview_Data\Managed\Unity.Rendering.Hybrid.dll + ..\ref\TechbloxPreview_Data\Managed\Unity.RenderPipelines.Core.Runtime.dll ..\..\ref\TechbloxPreview_Data\Managed\Unity.RenderPipelines.Core.Runtime.dll @@ -809,6 +937,10 @@ ..\ref\TechbloxPreview_Data\Managed\Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll ..\..\ref\TechbloxPreview_Data\Managed\Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll + + ..\ref\TechbloxPreview_Data\Managed\Unity.ResourceManager.dll + ..\..\ref\TechbloxPreview_Data\Managed\Unity.ResourceManager.dll + ..\ref\TechbloxPreview_Data\Managed\Unity.Scenes.dll ..\..\ref\TechbloxPreview_Data\Managed\Unity.Scenes.dll @@ -865,6 +997,10 @@ ..\ref\TechbloxPreview_Data\Managed\UnityEngine.AssetBundleModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.AssetBundleModule.dll + + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.AudioModule.dll + ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.AudioModule.dll + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.ClothModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.ClothModule.dll @@ -917,6 +1053,10 @@ ..\ref\TechbloxPreview_Data\Managed\UnityEngine.ImageConversionModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.ImageConversionModule.dll + + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.IMGUIModule.dll + ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.IMGUIModule.dll + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.InputLegacyModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.InputLegacyModule.dll @@ -969,6 +1109,10 @@ ..\ref\TechbloxPreview_Data\Managed\UnityEngine.SpriteMaskModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.SpriteMaskModule.dll + + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.SpriteShapeModule.dll + ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.SpriteShapeModule.dll + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.StreamingModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.StreamingModule.dll @@ -1021,6 +1165,10 @@ ..\ref\TechbloxPreview_Data\Managed\UnityEngine.UIModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.UIModule.dll + + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.UmbraModule.dll + ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.UmbraModule.dll + ..\ref\TechbloxPreview_Data\Managed\UnityEngine.UNETModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.UNETModule.dll @@ -1089,14 +1237,14 @@ ..\ref\TechbloxPreview_Data\Managed\UnityEngine.XRModule.dll ..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.XRModule.dll - - ..\ref\TechbloxPreview_Data\Managed\uREPL.dll - ..\..\ref\TechbloxPreview_Data\Managed\uREPL.dll - ..\ref\TechbloxPreview_Data\Managed\VisualProfiler.dll ..\..\ref\TechbloxPreview_Data\Managed\VisualProfiler.dll + + ..\ref\TechbloxPreview_Data\Managed\Whinarn.UnityMeshSimplifier.Runtime.dll + ..\..\ref\TechbloxPreview_Data\Managed\Whinarn.UnityMeshSimplifier.Runtime.dll + diff --git a/BuildingTools/MirrorModeEngine.cs b/BuildingTools/MirrorModeEngine.cs new file mode 100644 index 0000000..513f44d --- /dev/null +++ b/BuildingTools/MirrorModeEngine.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using Gamecraft.GUI.Blueprints; +using RobocraftX.Blocks.Ghost; +using RobocraftX.Common; +using RobocraftX.CR.MachineEditing.BoxSelect; +using RobocraftX.Physics; +using Svelto.ECS; +using Svelto.ECS.EntityStructs; +using Svelto.Tasks; +using Svelto.Tasks.Enumerators; +using Svelto.Tasks.Lean; +using Techblox.Blocks; +using TechbloxModdingAPI; +using TechbloxModdingAPI.App; +using TechbloxModdingAPI.Blocks; +using TechbloxModdingAPI.Blocks.Engines; +using TechbloxModdingAPI.Engines; +using TechbloxModdingAPI.Interface.IMGUI; +using TechbloxModdingAPI.Players; +using TechbloxModdingAPI.Tasks; +using TechbloxModdingAPI.Utility; +using Unity.Mathematics; +using UnityEngine; + +namespace BuildingTools +{ + public class MirrorModeEngine : IApiEngine + { + private Button _button; + private bool _enabled; + private Block _lastPlaced; + private Block _ghostBlock; + + private void BlockOnPlaced(object sender, BlockPlacedRemovedEventArgs e) + { + if (!_enabled) return; + if (Player.LocalPlayer.BuildingMode != PlayerBuildingMode.BlockMode) return; + if (e.ID == _lastPlaced?.Id) return; + _lastPlaced = e.Block.Copy(); + _lastPlaced.Position *= new float3(-1, 1, 1); + //_lastPlaced.Flipped = !_lastPlaced.Flipped; + if (math.abs(_lastPlaced.Rotation.y - 90) < float.Epsilon || + math.abs(_lastPlaced.Rotation.y - 270) < float.Epsilon) + _lastPlaced.Rotation += new float3(0, 180, 0); + } + + public void Init() + { + /*Block.Placed += BlockOnPlaced; - TODO. + Game.Enter += OnGameOnEnter; + Game.Exit += (sender, args) => _button = null;*/ + } + + private void OnGameOnEnter(object sender, GameEventArgs args) + { + _button = new Button("Mirror mode"); + _button.OnClick += (_, __) => _enabled = !_enabled; + TryCreateGhostBlock().RunOn(Scheduler.leanRunner); + } + + private IEnumerator TryCreateGhostBlock() + { + int c = 0; + while (_ghostBlock == null && c++ < 10) + { + Console.WriteLine($"Ghost block is {_ghostBlock} and c is {c}"); + try + { + //_ghostBlock = Block.CreateGhostBlock(); + Console.WriteLine($"New block: {_ghostBlock}"); + _ghostBlock.Position += 1; + } + catch (Exception e) + { + Console.WriteLine(e); + } + + yield return new WaitForSecondsEnumerator(1f).Continue(); + } + } + + public void Ready() + { + } + + public EntitiesDB entitiesDB { get; set; } + public void Dispose() + { + } + + public string Name { get; } = "BuildingToolsMirroModeEngine"; + public bool isRemovable { get; } = true; + } +} \ No newline at end of file