From 7d6ebc959a2398f865e74680fdda95f19b121490 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 11 Aug 2022 22:41:39 -0400 Subject: [PATCH] Initial velocity is wrong --- NewHorizons/Builder/Props/DetailBuilder.cs | 25 ++++++++++++++++++++++ NewHorizons/External/Modules/PropModule.cs | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index fa460991..ba1b58cc 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -137,6 +137,8 @@ namespace NewHorizons.Builder.Props prop.transform.localScale = info.scale != 0 ? Vector3.one * info.scale : prefab.transform.localScale; + if (info.hasPhysics) AddPhysics(prop, sector); + prop.SetActive(true); return prop; @@ -293,5 +295,28 @@ namespace NewHorizons.Builder.Props } }); } + + private static void AddPhysics(GameObject prop, Sector sector) + { + var rb = prop.AddComponent(); + var owrb = prop.AddComponent(); + var kine = prop.AddComponent(); + rb.isKinematic = true; + owrb._simulateInSector = sector; + owrb._kinematicSimulation = true; + owrb._kinematicRigidbody = kine; + + prop.AddComponent(); + prop.AddComponent().SetBodyToMatch(prop.GetComponentInParent()); + prop.AddComponent(); + + var detector = new GameObject("Detector"); + detector.transform.parent = prop.transform; + detector.transform.localPosition = Vector3.zero; + + var shape = detector.AddComponent(); + detector.AddComponent(); + detector.AddComponent(); + } } } \ No newline at end of file diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index 52ab42c6..7f17a1f5 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -210,6 +210,11 @@ namespace NewHorizons.External.Modules /// Should this detail stay loaded even if you're outside the sector (good for very large props) /// public bool keepLoaded; + + /// + /// Should this object dynamically move around + /// + public bool hasPhysics; } [JsonObject]