diff --git a/GamecraftModdingAPI/Block.cs b/GamecraftModdingAPI/Block.cs index f63e96c..408304d 100644 --- a/GamecraftModdingAPI/Block.cs +++ b/GamecraftModdingAPI/Block.cs @@ -139,6 +139,7 @@ namespace GamecraftModdingAPI CommonExclusiveGroups.BUILD_LOOPEDSFX_BLOCK_GROUP } }, + {typeof(DampedSpring), new [] {CommonExclusiveGroups.BUILD_DAMPEDSPRING_BLOCK_GROUP}}, {typeof(TextBlock), new[] {CommonExclusiveGroups.BUILD_TEXT_BLOCK_GROUP}}, {typeof(Timer), new[] {CommonExclusiveGroups.BUILD_TIMER_BLOCK_GROUP}} }; @@ -372,11 +373,13 @@ namespace GamecraftModdingAPI /// 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 chunk or null if the block doesn't exist. + /// The SimBody of the chunk or null if the block doesn't exist or not in simulation mode. public SimBody GetSimBody() { return BlockEngine.GetBlockInfo(this, - (GridConnectionsEntityStruct st) => new SimBody(st.machineRigidBodyId, st.clusterId)); + (GridConnectionsEntityStruct st) => st.machineRigidBodyId != uint.MaxValue + ? new SimBody(st.machineRigidBodyId, st.clusterId) + : null); } private void OnPlacedInit(object sender, BlockPlacedRemovedEventArgs e) diff --git a/GamecraftModdingAPI/Blocks/BlockColor.cs b/GamecraftModdingAPI/Blocks/BlockColor.cs index 46a5dc4..4461f91 100644 --- a/GamecraftModdingAPI/Blocks/BlockColor.cs +++ b/GamecraftModdingAPI/Blocks/BlockColor.cs @@ -9,6 +9,10 @@ namespace GamecraftModdingAPI.Blocks public byte Darkness; public byte Index; + public byte Index => Color == BlockColors.Default + ? byte.MaxValue + : (byte) (Darkness * 10 + Color); + public BlockColor(byte index) { if (index == byte.MaxValue) diff --git a/GamecraftModdingAPI/Blocks/BlockEngine.cs b/GamecraftModdingAPI/Blocks/BlockEngine.cs index 3a979fe..929a65f 100644 --- a/GamecraftModdingAPI/Blocks/BlockEngine.cs +++ b/GamecraftModdingAPI/Blocks/BlockEngine.cs @@ -218,7 +218,7 @@ namespace GamecraftModdingAPI.Blocks } } - return bodies.Select(id => new SimBody(id)).ToArray(); + return bodies.Select(id => new SimBody(id, cid)).ToArray(); } public EGID? FindBlockEGID(uint id) @@ -239,8 +239,8 @@ namespace GamecraftModdingAPI.Blocks foreach (var (coll, _) in groups) { foreach (var conn in coll) - { - if (conn.machineRigidBodyId == sbid) + { //Static blocks don't have a cluster ID but the cluster destruction manager should have one + if (conn.machineRigidBodyId == sbid && conn.clusterId != uint.MaxValue) return new Cluster(conn.clusterId); } } @@ -248,6 +248,22 @@ namespace GamecraftModdingAPI.Blocks return null; } + public Block[] GetBodyBlocks(uint sbid) + { + var groups = entitiesDB.QueryEntities(); + var set = new HashSet(); + foreach (var (coll, _) in groups) + { + foreach (var conn in coll) + { + if (conn.machineRigidBodyId == sbid) + set.Add(new Block(conn.ID)); + } + } + + return set.ToArray(); + } + #if DEBUG public EntitiesDB GetEntitiesDB() { diff --git a/GamecraftModdingAPI/Blocks/DampedSpring.cs b/GamecraftModdingAPI/Blocks/DampedSpring.cs new file mode 100644 index 0000000..96e628d --- /dev/null +++ b/GamecraftModdingAPI/Blocks/DampedSpring.cs @@ -0,0 +1,48 @@ +using RobocraftX.Blocks; +using RobocraftX.Common; +using Svelto.ECS; + +namespace GamecraftModdingAPI.Blocks +{ + public class DampedSpring : Block + { + public DampedSpring(EGID id) : base(id) + { + } + + public DampedSpring(uint id) : base(new EGID(id, CommonExclusiveGroups.BUILD_DAMPEDSPRING_BLOCK_GROUP)) + { + } + + /// + /// The spring's maximum force. This is known as Stiffness in-game + /// + public float MaxForce + { + get => BlockEngine.GetBlockInfo(this, (DampedSpringReadOnlyStruct dsrs) => dsrs.maxForce); + + set => BlockEngine.SetBlockInfo(this, + (ref DampedSpringReadOnlyStruct dsrs, float val) => dsrs.maxForce = val, value); + } + + /// + /// Alias of MaxForce. + /// + public float Stiffness + { + get => MaxForce; + set => MaxForce = value; + } + + /// + /// The spring's maximum damping force. + /// + public float Damping + { + get => BlockEngine.GetBlockInfo(this, (LinearJointForcesReadOnlyStruct ljf) => ljf.dampingForceMagnitude); + + set => BlockEngine.SetBlockInfo(this, + (ref LinearJointForcesReadOnlyStruct ljf, float val) => ljf.dampingForceMagnitude = val, value); + } + } +} \ No newline at end of file diff --git a/GamecraftModdingAPI/Blocks/TextBlock.cs b/GamecraftModdingAPI/Blocks/TextBlock.cs index ea5e089..e696dda 100644 --- a/GamecraftModdingAPI/Blocks/TextBlock.cs +++ b/GamecraftModdingAPI/Blocks/TextBlock.cs @@ -31,6 +31,7 @@ namespace GamecraftModdingAPI.Blocks set { + if (value == null) value = ""; BlockEngine.SetBlockInfo(this, (ref TextBlockDataStruct tbds, string val) => { if (val == null) val = ""; @@ -51,6 +52,7 @@ namespace GamecraftModdingAPI.Blocks set { + if (value == null) value = ""; BlockEngine.SetBlockInfo(this, (ref TextBlockDataStruct tbds, string val) => tbds.textBlockID.Set(val), value); BlockEngine.SetBlockInfo(this, diff --git a/GamecraftModdingAPI/Cluster.cs b/GamecraftModdingAPI/Cluster.cs index 074c26c..79b5822 100644 --- a/GamecraftModdingAPI/Cluster.cs +++ b/GamecraftModdingAPI/Cluster.cs @@ -6,6 +6,7 @@ namespace GamecraftModdingAPI { /// /// Represnts a cluster of blocks in time running mode, meaning blocks that are connected either directly or via joints. + /// Only exists if a cluster destruction manager is present. Static blocks like grass and dirt aren't part of a cluster. /// public class Cluster { @@ -37,5 +38,37 @@ namespace GamecraftModdingAPI get => Block.BlockEngine.GetBlockInfo(Id).healthMultiplier; set => Block.BlockEngine.GetBlockInfo(Id).healthMultiplier = value; } + + /// + /// Returns the simulation-time rigid bodies for the chunks in this cluster. + /// + /// An array of sim-bodies + public SimBody[] GetSimBodies() + { + return Block.BlockEngine.GetClusterBodies(Id.entityID); + } + + public override string ToString() + { + return $"{nameof(Id)}: {Id}"; + } + + protected bool Equals(Cluster other) + { + return Id.Equals(other.Id); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Cluster) obj); + } + + public override int GetHashCode() + { + return Id.GetHashCode(); + } } } \ No newline at end of file diff --git a/GamecraftModdingAPI/GamecraftModdingAPI.csproj b/GamecraftModdingAPI/GamecraftModdingAPI.csproj index 193a14f..59de2af 100644 --- a/GamecraftModdingAPI/GamecraftModdingAPI.csproj +++ b/GamecraftModdingAPI/GamecraftModdingAPI.csproj @@ -2,7 +2,7 @@ net472 true - 1.6.0-preview + 1.7.0 Exmods GNU General Public Licence 3+ https://git.exmods.org/modtainers/GamecraftModdingAPI @@ -23,18 +23,13 @@ - - + - - ..\ref\GamecraftPreview_Data\Managed\IllusionInjector.dll - ..\..\ref\GamecraftPreview_Data\Managed\IllusionInjector.dll - - - ..\ref\GamecraftPreview_Data\Managed\IllusionPlugin.dll - ..\..\ref\GamecraftPreview_Data\Managed\IllusionPlugin.dll + + ..\ref\GamecraftPreview_Data\Managed\Accessibility.dll + ..\..\ref\GamecraftPreview_Data\Managed\Accessibility.dll ..\ref\GamecraftPreview_Data\Managed\Analytics.dll @@ -80,14 +75,14 @@ ..\ref\GamecraftPreview_Data\Managed\DDNA.dll ..\..\ref\GamecraftPreview_Data\Managed\DDNA.dll + + ..\ref\GamecraftPreview_Data\Managed\Facepunch.Steamworks.Win64.dll + ..\..\ref\GamecraftPreview_Data\Managed\Facepunch.Steamworks.Win64.dll + ..\ref\GamecraftPreview_Data\Managed\FMOD.dll ..\..\ref\GamecraftPreview_Data\Managed\FMOD.dll - - ..\ref\GamecraftPreview_Data\Managed\FullGame.dll - ..\..\ref\GamecraftPreview_Data\Managed\FullGame.dll - ..\ref\GamecraftPreview_Data\Managed\Gamecraft.AudioBlocks.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.AudioBlocks.dll @@ -100,6 +95,10 @@ ..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlockEntityFactory.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlockEntityFactory.dll + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlockGroups.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlockGroups.dll + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.ConsoleBlock.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.ConsoleBlock.dll @@ -116,6 +115,10 @@ ..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.GenericPhysicsBlocks.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.GenericPhysicsBlocks.dll + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.LightBlock.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.LightBlock.dll + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.LogicBlock.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.LogicBlock.dll @@ -132,10 +135,6 @@ ..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.TimerBlock.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.Blocks.TimerBlock.dll - - ..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlocksEntityDescriptors.dll - ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlocksEntityDescriptors.dll - ..\ref\GamecraftPreview_Data\Managed\Gamecraft.CharacterVulnerability.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.CharacterVulnerability.dll @@ -144,6 +143,10 @@ ..\ref\GamecraftPreview_Data\Managed\Gamecraft.CharacterVulnerabilityGui.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.CharacterVulnerabilityGui.dll + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.ColourPalette.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.ColourPalette.dll + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.Damage.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.Damage.dll @@ -160,18 +163,70 @@ ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GraphicsSettings.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GraphicsSettings.dll + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.BlueprintInventory.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.BlueprintInventory.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.BlueprintInventoryMock.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.BlueprintInventoryMock.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Blueprints.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Blueprints.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.BlueprintSets.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.BlueprintSets.dll + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.ConsoleBlock.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.ConsoleBlock.dll - - ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.GraphicsScreen.dll - ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.GraphicsScreen.dll + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.GameOptionsScreen.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.GameOptionsScreen.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Hotbar.Blocks.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Hotbar.Blocks.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Hotbar.Colours.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Hotbar.Colours.dll ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.HUDFeedbackBlocks.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.HUDFeedbackBlocks.dll + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.ModeBar.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.ModeBar.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.OptionsScreen.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.OptionsScreen.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Blocks.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Blocks.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Blueprints.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Blueprints.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Colours.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Colours.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Common.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TabsBar.Common.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TimeModeClock.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.TimeModeClock.dll + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Tweaks.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.Tweaks.dll @@ -188,6 +243,66 @@ ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.WorldSpaceGuis.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.WorldSpaceGuis.dll + + ..\ref\GamecraftPreview_Data\Managed\FullGame.dll + ..\..\ref\GamecraftPreview_Data\Managed\FullGame.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlocksEntityDescriptors.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.BlocksEntityDescriptors.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.GraphicsScreen.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUI.GraphicsScreen.dll + + + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUIs.Hotbar.BlueprintsHotbar.dll + ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.GUIs.Hotbar.BlueprintsHotbar.dll + + + ..\ref\GamecraftPreview_Data\Managed\IllusionInjector.dll + ..\..\ref\GamecraftPreview_Data\Managed\IllusionInjector.dll + + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Common.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Common.dll + + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Input.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Input.dll + + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Rendering.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Rendering.dll + + + ..\ref\GamecraftPreview_Data\Managed\Svelto.ECS.dll + ..\..\ref\GamecraftPreview_Data\Managed\Svelto.ECS.dll + + + ..\ref\GamecraftPreview_Data\Managed\Unity.DataFlowGraph.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.DataFlowGraph.dll + + + ..\ref\GamecraftPreview_Data\Managed\Unity.Properties.UI.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Properties.UI.dll + + + ..\ref\GamecraftPreview_Data\Managed\Unity.Transforms.Hybrid.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Transforms.Hybrid.dll + + + ..\ref\GamecraftPreview_Data\Managed\UnityEngine.dll + ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.dll + + + ..\ref\GamecraftPreview_Data\Managed\UnityEngine.PhysicsModule.dll + ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.PhysicsModule.dll + + + ..\ref\GamecraftPreview_Data\Managed\UnityEngine.TLSModule.dll + ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.TLSModule.dll + ..\ref\GamecraftPreview_Data\Managed\Gamecraft.InventoryTimeRunning.dll ..\..\ref\GamecraftPreview_Data\Managed\Gamecraft.InventoryTimeRunning.dll @@ -248,6 +363,10 @@ ..\ref\GamecraftPreview_Data\Managed\GameState.dll ..\..\ref\GamecraftPreview_Data\Managed\GameState.dll + + ..\ref\GamecraftPreview_Data\Managed\GhostShark.Outline.dll + ..\..\ref\GamecraftPreview_Data\Managed\GhostShark.Outline.dll + ..\ref\GamecraftPreview_Data\Managed\GPUInstancer.dll ..\..\ref\GamecraftPreview_Data\Managed\GPUInstancer.dll @@ -260,10 +379,26 @@ ..\ref\GamecraftPreview_Data\Managed\Havok.Physics.Hybrid.dll ..\..\ref\GamecraftPreview_Data\Managed\Havok.Physics.Hybrid.dll + + ..\ref\GamecraftPreview_Data\Managed\IL3DN_FOG.dll + ..\..\ref\GamecraftPreview_Data\Managed\IL3DN_FOG.dll + + + ..\ref\GamecraftPreview_Data\Managed\IllusionPlugin.dll + ..\..\ref\GamecraftPreview_Data\Managed\IllusionPlugin.dll + + + ..\ref\GamecraftPreview_Data\Managed\JWT.dll + ..\..\ref\GamecraftPreview_Data\Managed\JWT.dll + ..\ref\GamecraftPreview_Data\Managed\LZ4.dll ..\..\ref\GamecraftPreview_Data\Managed\LZ4.dll + + ..\ref\GamecraftPreview_Data\Managed\mscorlib.dll + ..\..\ref\GamecraftPreview_Data\Managed\mscorlib.dll + ..\ref\GamecraftPreview_Data\Managed\MultiplayerNetworking.dll ..\..\ref\GamecraftPreview_Data\Managed\MultiplayerNetworking.dll @@ -272,10 +407,30 @@ ..\ref\GamecraftPreview_Data\Managed\MultiplayerTest.dll ..\..\ref\GamecraftPreview_Data\Managed\MultiplayerTest.dll + + ..\ref\GamecraftPreview_Data\Managed\netstandard.dll + ..\..\ref\GamecraftPreview_Data\Managed\netstandard.dll + + + ..\ref\GamecraftPreview_Data\Managed\Newtonsoft.Json.dll + ..\..\ref\GamecraftPreview_Data\Managed\Newtonsoft.Json.dll + + + ..\ref\GamecraftPreview_Data\Managed\Novell.Directory.Ldap.dll + ..\..\ref\GamecraftPreview_Data\Managed\Novell.Directory.Ldap.dll + ..\ref\GamecraftPreview_Data\Managed\RCX.ScreenshotTaker.dll ..\..\ref\GamecraftPreview_Data\Managed\RCX.ScreenshotTaker.dll + + ..\ref\GamecraftPreview_Data\Managed\Rewired_Core.dll + ..\..\ref\GamecraftPreview_Data\Managed\Rewired_Core.dll + + + ..\ref\GamecraftPreview_Data\Managed\Rewired_Windows.dll + ..\..\ref\GamecraftPreview_Data\Managed\Rewired_Windows.dll + ..\ref\GamecraftPreview_Data\Managed\RobocraftECS.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftECS.dll @@ -312,10 +467,6 @@ ..\ref\GamecraftPreview_Data\Managed\RobocraftX.ClusterToWireConversion.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.ClusterToWireConversion.dll - - ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Common.dll - ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Common.dll - ..\ref\GamecraftPreview_Data\Managed\RobocraftX.ControlsScreen.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.ControlsScreen.dll @@ -340,6 +491,22 @@ ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.dll + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Hotbar.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Hotbar.dll + + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Inventory.BlocksInventory.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Inventory.BlocksInventory.dll + + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Inventory.ColourInventory.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Inventory.ColourInventory.dll + + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Inventory.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.Inventory.dll + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.RemoveBlock.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.RemoveBlock.dll @@ -348,14 +515,14 @@ ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.ScaleGhost.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.ScaleGhost.dll + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.TabsBar.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUI.TabsBar.dll + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUIs.WorkshopPrefabs.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.GUIs.WorkshopPrefabs.dll - - ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Input.dll - ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Input.dll - ..\ref\GamecraftPreview_Data\Managed\RobocraftX.MachineEditor.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.MachineEditor.dll @@ -376,6 +543,10 @@ ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Multiplayer.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Multiplayer.dll + + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Multiplayer.GUI.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Multiplayer.GUI.dll + ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Multiplayer.NetworkEntityStream.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Multiplayer.NetworkEntityStream.dll @@ -408,10 +579,6 @@ ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Player.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Player.dll - - ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Rendering.dll - ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Rendering.dll - ..\ref\GamecraftPreview_Data\Managed\RobocraftX.Rendering.Mock.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX.Rendering.Mock.dll @@ -448,9 +615,9 @@ ..\ref\GamecraftPreview_Data\Managed\RobocraftX_TextBlock.dll ..\..\ref\GamecraftPreview_Data\Managed\RobocraftX_TextBlock.dll - - ..\ref\GamecraftPreview_Data\Managed\RobocratX.SimulationCompositionRoot.dll - ..\..\ref\GamecraftPreview_Data\Managed\RobocratX.SimulationCompositionRoot.dll + + ..\ref\GamecraftPreview_Data\Managed\RobocratX.SimulationMockCompositionRoot.dll + ..\..\ref\GamecraftPreview_Data\Managed\RobocratX.SimulationMockCompositionRoot.dll ..\ref\GamecraftPreview_Data\Managed\SpawningPointCompositionRoot.dll @@ -468,10 +635,6 @@ ..\ref\GamecraftPreview_Data\Managed\Svelto.Common_3.dll ..\..\ref\GamecraftPreview_Data\Managed\Svelto.Common_3.dll - - ..\ref\GamecraftPreview_Data\Managed\Svelto.ECS.dll - ..\..\ref\GamecraftPreview_Data\Managed\Svelto.ECS.dll - ..\ref\GamecraftPreview_Data\Managed\Svelto.Services.dll ..\..\ref\GamecraftPreview_Data\Managed\Svelto.Services.dll @@ -480,58 +643,6 @@ ..\ref\GamecraftPreview_Data\Managed\Svelto.Tasks.dll ..\..\ref\GamecraftPreview_Data\Managed\Svelto.Tasks.dll - - ..\ref\GamecraftPreview_Data\Managed\UltimateDecals.dll - ..\..\ref\GamecraftPreview_Data\Managed\UltimateDecals.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Addressables.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Addressables.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.Hybrid.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.Hybrid.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.Hybrid.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.Hybrid.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Graph.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Graph.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Hybrid.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Hybrid.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Build.SlimPlayerRuntime.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Build.SlimPlayerRuntime.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Burst.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Burst.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.Collections.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Collections.dll - - - ..\ref\GamecraftPreview_Data\Managed\Unity.DataFlowGraph.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.DataFlowGraph.dll - ..\ref\GamecraftPreview_Data\Managed\Unity.Deformations.dll ..\..\ref\GamecraftPreview_Data\Managed\Unity.Deformations.dll @@ -588,10 +699,6 @@ ..\ref\GamecraftPreview_Data\Managed\Unity.Properties.Reflection.dll ..\..\ref\GamecraftPreview_Data\Managed\Unity.Properties.Reflection.dll - - ..\ref\GamecraftPreview_Data\Managed\Unity.Properties.UI.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Properties.UI.dll - ..\ref\GamecraftPreview_Data\Managed\Unity.RenderPipeline.Universal.ShaderLibrary.dll ..\..\ref\GamecraftPreview_Data\Managed\Unity.RenderPipeline.Universal.ShaderLibrary.dll @@ -644,66 +751,62 @@ ..\ref\GamecraftPreview_Data\Managed\Unity.Transforms.dll ..\..\ref\GamecraftPreview_Data\Managed\Unity.Transforms.dll - - ..\ref\GamecraftPreview_Data\Managed\Unity.Transforms.Hybrid.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.Transforms.Hybrid.dll + + ..\ref\GamecraftPreview_Data\Managed\UltimateDecals.dll + ..\..\ref\GamecraftPreview_Data\Managed\UltimateDecals.dll - - ..\ref\GamecraftPreview_Data\Managed\Unity.VisualEffectGraph.Runtime.dll - ..\..\ref\GamecraftPreview_Data\Managed\Unity.VisualEffectGraph.Runtime.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Addressables.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Addressables.dll - - ..\ref\GamecraftPreview_Data\Managed\UnityEngine.UI.dll - ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.UI.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.dll - - ..\ref\GamecraftPreview_Data\Managed\uREPL.dll - ..\..\ref\GamecraftPreview_Data\Managed\uREPL.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.Hybrid.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Curves.Hybrid.dll - - ..\ref\GamecraftPreview_Data\Managed\VisualProfiler.dll - ..\..\ref\GamecraftPreview_Data\Managed\VisualProfiler.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.dll - - ..\ref\GamecraftPreview_Data\Managed\Accessibility.dll - ..\..\ref\GamecraftPreview_Data\Managed\Accessibility.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.Hybrid.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.DefaultGraphPipeline.Hybrid.dll - - ..\ref\GamecraftPreview_Data\Managed\Facepunch.Steamworks.Win64.dll - ..\..\ref\GamecraftPreview_Data\Managed\Facepunch.Steamworks.Win64.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.dll - - ..\ref\GamecraftPreview_Data\Managed\JWT.dll - ..\..\ref\GamecraftPreview_Data\Managed\JWT.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Graph.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Graph.dll - - ..\ref\GamecraftPreview_Data\Managed\mscorlib.dll - ..\..\ref\GamecraftPreview_Data\Managed\mscorlib.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Hybrid.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Animation.Hybrid.dll - - ..\ref\GamecraftPreview_Data\Managed\netstandard.dll - ..\..\ref\GamecraftPreview_Data\Managed\netstandard.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Build.SlimPlayerRuntime.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Build.SlimPlayerRuntime.dll - - ..\ref\GamecraftPreview_Data\Managed\Newtonsoft.Json.dll - ..\..\ref\GamecraftPreview_Data\Managed\Newtonsoft.Json.dll - - - ..\ref\GamecraftPreview_Data\Managed\Novell.Directory.Ldap.dll - ..\..\ref\GamecraftPreview_Data\Managed\Novell.Directory.Ldap.dll - - - ..\ref\GamecraftPreview_Data\Managed\Rewired_Core.dll - ..\..\ref\GamecraftPreview_Data\Managed\Rewired_Core.dll - - - ..\ref\GamecraftPreview_Data\Managed\Rewired_Windows.dll - ..\..\ref\GamecraftPreview_Data\Managed\Rewired_Windows.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Burst.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Burst.dll ..\ref\GamecraftPreview_Data\Managed\Unity.Burst.Unsafe.dll ..\..\ref\GamecraftPreview_Data\Managed\Unity.Burst.Unsafe.dll + + ..\ref\GamecraftPreview_Data\Managed\Unity.Collections.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.Collections.dll + + + ..\ref\GamecraftPreview_Data\Managed\Unity.VisualEffectGraph.Runtime.dll + ..\..\ref\GamecraftPreview_Data\Managed\Unity.VisualEffectGraph.Runtime.dll + ..\ref\GamecraftPreview_Data\Managed\UnityEngine.AccessibilityModule.dll ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.AccessibilityModule.dll @@ -756,10 +859,6 @@ ..\ref\GamecraftPreview_Data\Managed\UnityEngine.DirectorModule.dll ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.DirectorModule.dll - - ..\ref\GamecraftPreview_Data\Managed\UnityEngine.dll - ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.dll - ..\ref\GamecraftPreview_Data\Managed\UnityEngine.DSPGraphModule.dll ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.DSPGraphModule.dll @@ -812,10 +911,6 @@ ..\ref\GamecraftPreview_Data\Managed\UnityEngine.Physics2DModule.dll ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.Physics2DModule.dll - - ..\ref\GamecraftPreview_Data\Managed\UnityEngine.PhysicsModule.dll - ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.PhysicsModule.dll - ..\ref\GamecraftPreview_Data\Managed\UnityEngine.ProfilerModule.dll ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.ProfilerModule.dll @@ -868,9 +963,9 @@ ..\ref\GamecraftPreview_Data\Managed\UnityEngine.TilemapModule.dll ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.TilemapModule.dll - - ..\ref\GamecraftPreview_Data\Managed\UnityEngine.TLSModule.dll - ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.TLSModule.dll + + ..\ref\GamecraftPreview_Data\Managed\UnityEngine.UI.dll + ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.UI.dll ..\ref\GamecraftPreview_Data\Managed\UnityEngine.UIElementsModule.dll @@ -944,6 +1039,14 @@ ..\ref\GamecraftPreview_Data\Managed\UnityEngine.XRModule.dll ..\..\ref\GamecraftPreview_Data\Managed\UnityEngine.XRModule.dll + + ..\ref\GamecraftPreview_Data\Managed\uREPL.dll + ..\..\ref\GamecraftPreview_Data\Managed\uREPL.dll + + + ..\ref\GamecraftPreview_Data\Managed\VisualProfiler.dll + ..\..\ref\GamecraftPreview_Data\Managed\VisualProfiler.dll + \ No newline at end of file diff --git a/GamecraftModdingAPI/SimBody.cs b/GamecraftModdingAPI/SimBody.cs index a3f6d55..42812d9 100644 --- a/GamecraftModdingAPI/SimBody.cs +++ b/GamecraftModdingAPI/SimBody.cs @@ -17,12 +17,13 @@ namespace GamecraftModdingAPI public EGID Id { get; } /// - /// The cluster this chunk belongs to, or null if the chunk doesn't exist. Get the SimBody from a Block if possible for good performance here. + /// The cluster this chunk belongs to, or null if no cluster destruction manager present or the chunk doesn't exist. + /// Get the SimBody from a Block if possible for good performance here. /// public Cluster Cluster => cluster ?? (cluster = clusterId == uint.MaxValue ? Block.BlockEngine.GetCluster(Id.entityID) : new Cluster(clusterId)); private Cluster cluster; - private uint clusterId; + private readonly uint clusterId = uint.MaxValue; public SimBody(EGID id) { @@ -120,6 +121,15 @@ namespace GamecraftModdingAPI return Block.BlockEngine.GetConnectedSimBodies(Id.entityID); } + /// + /// The blocks that form this rigid body. + /// + /// + public Block[] GetBlocks() + { + return Block.BlockEngine.GetBodyBlocks(Id.entityID); + } + private ref RigidBodyEntityStruct GetStruct() { return ref Block.BlockEngine.GetBlockInfo(Id);