diff --git a/ValheimPlus/AdvancedBuildingMode.cs b/ValheimPlus/AdvancedBuildingMode.cs index 79907cd7..ffc292c8 100644 --- a/ValheimPlus/AdvancedBuildingMode.cs +++ b/ValheimPlus/AdvancedBuildingMode.cs @@ -33,6 +33,7 @@ class ABM // Save and Load object rotation static Quaternion savedRotation; + private static Vector3 savedPosition; public static void Run(ref Player __instance) { @@ -135,13 +136,27 @@ private static void listenToHotKeysAndDoWork() changeModificationSpeed(); + // Copying/Pasting if (Input.GetKeyUp(Configuration.Current.AdvancedBuildingMode.copyObjectRotation)) { savedRotation = component.transform.rotation; + notifyUser("Copied Rotation"); } if (Input.GetKeyUp(Configuration.Current.AdvancedBuildingMode.pasteObjectRotation)) { component.transform.rotation = savedRotation; + notifyUser("Pasted Rotation"); + } + if (Input.GetKeyUp(Configuration.Current.AdvancedBuildingMode.copyObjectRotationAndPosition)) + { + savedRotation = component.transform.rotation; + savedPosition = component.transform.position; + notifyUser("Copied Rotation and Position"); + } + if (Input.GetKeyUp(Configuration.Current.AdvancedBuildingMode.pasteObjectRotationAndPosition)) + { + component.transform.SetPositionAndRotation(savedPosition, savedRotation); + notifyUser("Pasted Rotation and Position"); } var currentRotationAngleDegrees = BASE_ROTATION_ANGLE_DEGREES * currentModificationSpeed; diff --git a/ValheimPlus/AdvancedEditingMode.cs b/ValheimPlus/AdvancedEditingMode.cs index 9eb97d7c..d061c927 100644 --- a/ValheimPlus/AdvancedEditingMode.cs +++ b/ValheimPlus/AdvancedEditingMode.cs @@ -39,6 +39,7 @@ class AEM // Save and Load object rotation static Quaternion savedRotation; + private static Vector3 savedPosition; // Executing the raycast to find the object public static bool ExecuteRayCast(Player playerInstance) @@ -234,10 +235,23 @@ private static void listenToHotKeysAndDoWork() if (Input.GetKeyUp(Configuration.Current.AdvancedEditingMode.copyObjectRotation)) { savedRotation = HitPiece.transform.rotation; + notifyUser("Copied Rotation"); } if (Input.GetKeyUp(Configuration.Current.AdvancedEditingMode.pasteObjectRotation)) { HitPiece.transform.rotation = savedRotation; + notifyUser("Pasted Rotation"); + } + if (Input.GetKeyUp(Configuration.Current.AdvancedEditingMode.copyObjectRotationAndPosition)) + { + savedRotation = HitPiece.transform.rotation; + savedPosition = HitPiece.transform.position; + notifyUser("Copied Rotation and Position"); + } + if (Input.GetKeyUp(Configuration.Current.AdvancedEditingMode.pasteObjectRotationAndPosition)) + { + HitPiece.transform.SetPositionAndRotation(savedPosition, savedRotation); + notifyUser("Pasted Rotation and Position"); } // Maximum distance between player and placed piece diff --git a/ValheimPlus/Configurations/Sections/AdvancedBuildingModeConfiguration.cs b/ValheimPlus/Configurations/Sections/AdvancedBuildingModeConfiguration.cs index 6e972589..a869a2d5 100644 --- a/ValheimPlus/Configurations/Sections/AdvancedBuildingModeConfiguration.cs +++ b/ValheimPlus/Configurations/Sections/AdvancedBuildingModeConfiguration.cs @@ -9,6 +9,8 @@ public class AdvancedBuildingModeConfiguration : BaseConfig