diff --git a/CommunityBugFixCollection/BetterGridWorldPreset.cs b/CommunityBugFixCollection/BetterGridWorldPreset.cs index 1cdf1c6..306e99c 100644 --- a/CommunityBugFixCollection/BetterGridWorldPreset.cs +++ b/CommunityBugFixCollection/BetterGridWorldPreset.cs @@ -1,5 +1,9 @@ using Elements.Core; using FrooxEngine; +using FrooxEngine.FrooxEngine.ProtoFlux.CoreNodes; +using FrooxEngine.ProtoFlux; +using FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes; +using FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Operators; using HarmonyLib; using Renderite.Shared; using System; @@ -52,11 +56,29 @@ private static bool Prefix(World w) attachedModel.material.Smoothness.Value = 0f; var boxCollider = ground.AttachComponent(); - var swizzle = ground.AttachComponent(); - swizzle.Source.Target = attachedModel.mesh.Size; - swizzle.Target.Target = boxCollider.Size; + boxCollider.Offset.Value = new(0, 0, 0.5f); boxCollider.SetCharacterCollider(); + var swizzleSlot = ground.AddSlot("Collider Swizzle"); + + var meshSizeSource = swizzleSlot.AttachComponent>(); + meshSizeSource.TrySetRootSource(attachedModel.mesh.Size); + + var unpackSize = swizzleSlot.AttachComponent(); + unpackSize.V.Target = meshSizeSource; + + var oneConstant = swizzleSlot.AttachComponent>(); + oneConstant.Value.Value = 1; + + var packSize = swizzleSlot.AttachComponent(); + packSize.X.Target = unpackSize.X; + packSize.Y.Target = unpackSize.Y; + packSize.Z.Target = oneConstant; + + var colliderSizeDrive = swizzleSlot.AttachComponent>(); + colliderSizeDrive.TrySetRootTarget(boxCollider.Size); + colliderSizeDrive.Value.Target = packSize; + return false; } }