From 7d6ebc959a2398f865e74680fdda95f19b121490 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 11 Aug 2022 22:41:39 -0400 Subject: [PATCH 01/37] 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] From 71b822daac2e1f8a60308d42e33c4cce8075276b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 12 Aug 2022 02:44:41 +0000 Subject: [PATCH 02/37] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 5cc6a168..882e6509 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1037,6 +1037,10 @@ "keepLoaded": { "type": "boolean", "description": "Should this detail stay loaded even if you're outside the sector (good for very large props)" + }, + "hasPhysics": { + "type": "boolean", + "description": "Should this object dynamically move around" } } }, From b4fb316daa3ff914e732a4cdc51e44bf664bf531 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 27 Aug 2022 21:23:43 -0400 Subject: [PATCH 03/37] Fix merge --- NewHorizons/Builder/Props/DetailBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 19e3cab6..42ee4210 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -100,7 +100,7 @@ namespace NewHorizons.Builder.Props prop.transform.localScale = detail.scale != 0 ? Vector3.one * detail.scale : prefab.transform.localScale; - if (info.hasPhysics) AddPhysics(prop, sector); + if (detail.hasPhysics) AddPhysics(prop, sector); prop.SetActive(true); From e2aafd6e45715ff27ed0776721653885faa7780a Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 27 Aug 2022 22:08:53 -0400 Subject: [PATCH 04/37] Set CenterOfTheUniverseOffsetApplier --- NewHorizons/Builder/Props/DetailBuilder.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 42ee4210..22a07480 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -325,13 +325,15 @@ namespace NewHorizons.Builder.Props var owrb = prop.AddComponent(); var kine = prop.AddComponent(); rb.isKinematic = true; + var offsetApplier = prop.AddComponent(); + offsetApplier.Init(owrb); owrb._simulateInSector = sector; owrb._kinematicSimulation = true; owrb._kinematicRigidbody = kine; + owrb._offsetApplier = offsetApplier; prop.AddComponent(); prop.AddComponent().SetBodyToMatch(prop.GetComponentInParent()); - prop.AddComponent(); var detector = new GameObject("Detector"); detector.transform.parent = prop.transform; From 9ffc00bc926b5c89312b61d621077376f1997c1a Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 27 Aug 2022 22:10:18 -0400 Subject: [PATCH 05/37] Set primary body --- NewHorizons/Builder/Props/DetailBuilder.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 22a07480..767ad1a2 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -321,6 +321,8 @@ namespace NewHorizons.Builder.Props private static void AddPhysics(GameObject prop, Sector sector) { + var primaryBody = prop.GetComponentInParent(); + var rb = prop.AddComponent(); var owrb = prop.AddComponent(); var kine = prop.AddComponent(); @@ -332,8 +334,8 @@ namespace NewHorizons.Builder.Props owrb._kinematicRigidbody = kine; owrb._offsetApplier = offsetApplier; - prop.AddComponent(); - prop.AddComponent().SetBodyToMatch(prop.GetComponentInParent()); + prop.AddComponent().SetPrimaryBody(primaryBody); + prop.AddComponent().SetBodyToMatch(primaryBody); var detector = new GameObject("Detector"); detector.transform.parent = prop.transform; From 991da9a4029a7e4277e834f94ca7e9122a488a18 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Wed, 23 Nov 2022 23:56:19 -0500 Subject: [PATCH 06/37] Set tag --- NewHorizons/Builder/Props/DetailBuilder.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 0beb3d06..f6db04d3 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -414,6 +414,7 @@ namespace NewHorizons.Builder.Props var detector = new GameObject("Detector"); detector.transform.parent = prop.transform; detector.transform.localPosition = Vector3.zero; + detector.tag = "DynamicPropDetector"; var shape = detector.AddComponent(); detector.AddComponent(); From dab55be25fb991d3855afed404c537b9b0e0cb7f Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Wed, 23 Nov 2022 23:56:34 -0500 Subject: [PATCH 07/37] Set collision mode and layer --- NewHorizons/Builder/Props/DetailBuilder.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index f6db04d3..210a603a 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -417,6 +417,9 @@ namespace NewHorizons.Builder.Props detector.tag = "DynamicPropDetector"; var shape = detector.AddComponent(); + shape.SetCollisionMode(Shape.CollisionMode.Detector); + shape.SetLayer(Shape.Layer.Default); + shape.layerMask = 5; detector.AddComponent(); detector.AddComponent(); } From 9c76cd84026465dad8a1e5306eb4ef958bf3428f Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 23 Nov 2022 22:24:51 -0800 Subject: [PATCH 08/37] el goob --- NewHorizons/Builder/Props/DetailBuilder.cs | 37 ++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 0beb3d06..a8d563d4 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -4,6 +4,7 @@ using NewHorizons.Handlers; using NewHorizons.Utility; using OWML.Common; using System; +using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; @@ -141,8 +142,6 @@ namespace NewHorizons.Builder.Props prop.transform.localScale = detail.stretch ?? (detail.scale != 0 ? Vector3.one * detail.scale : prefab.transform.localScale); - if (detail.hasPhysics) AddPhysics(prop, sector); - if (detail.removeChildren != null) { var detailPath = prop.transform.GetPath(); @@ -224,6 +223,8 @@ namespace NewHorizons.Builder.Props if (!detail.keepLoaded) GroupsBuilder.Make(prop, sector); prop.SetActive(true); + prop.AddComponent(); + _detailInfoToCorrespondingSpawnedGameObject[detail] = prop; return prop; @@ -393,6 +394,37 @@ namespace NewHorizons.Builder.Props } } + private class AddPhysics : MonoBehaviour + { + private IEnumerator Start() + { + yield return new WaitForSeconds(.1f); + + var parentBody = GetComponentInParent(); + + foreach (var meshCollider in GetComponentsInChildren(true)) + { + meshCollider.convex = true; + } + + var go = new GameObject($"{name}_Body"); + go.transform.position = transform.position; + go.transform.rotation = transform.rotation; + transform.parent = go.transform; + + go.layer = LayerMask.NameToLayer("PhysicalDetector"); + go.AddComponent(); + var owRigidbody = go.AddComponent(); + go.AddComponent(); + go.AddComponent(); + owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); + owRigidbody.SetMass(0.0001f); + + Destroy(this); + } + } + + /* private static void AddPhysics(GameObject prop, Sector sector) { var primaryBody = prop.GetComponentInParent(); @@ -419,5 +451,6 @@ namespace NewHorizons.Builder.Props detector.AddComponent(); detector.AddComponent(); } + */ } } \ No newline at end of file From 6cd6034558edece1eebd4ab751b4c9049ea84bdb Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 23 Nov 2022 22:43:28 -0800 Subject: [PATCH 09/37] idk --- NewHorizons/Builder/Props/DetailBuilder.cs | 31 +++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index a8d563d4..3a9cfc52 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -394,31 +394,30 @@ namespace NewHorizons.Builder.Props } } + // TODO: simulate in sector + // BUG: detector collider is not included in groups private class AddPhysics : MonoBehaviour { private IEnumerator Start() { yield return new WaitForSeconds(.1f); - + var parentBody = GetComponentInParent(); - + foreach (var meshCollider in GetComponentsInChildren(true)) - { - meshCollider.convex = true; - } + // hack. doesnt work for all meshes but seems to for most + if (!meshCollider.isTrigger) + meshCollider.convex = true; - var go = new GameObject($"{name}_Body"); - go.transform.position = transform.position; - go.transform.rotation = transform.rotation; - transform.parent = go.transform; - - go.layer = LayerMask.NameToLayer("PhysicalDetector"); - go.AddComponent(); - var owRigidbody = go.AddComponent(); - go.AddComponent(); - go.AddComponent(); + var owRigidbody = gameObject.AddComponent(); owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); - owRigidbody.SetMass(0.0001f); + + var detector = new GameObject("Detector"); + detector.transform.SetParent(transform, false); + detector.layer = LayerMask.NameToLayer("AdvancedDetector"); + detector.AddComponent(); + detector.AddComponent(); + detector.AddComponent(); Destroy(this); } From b6f776cc1ee3b01b709768e15c0ffa2170e85ff4 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 23 Nov 2022 22:44:56 -0800 Subject: [PATCH 10/37] oops --- NewHorizons/Builder/Props/DetailBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index bde08b27..a6eb504a 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -223,7 +223,7 @@ namespace NewHorizons.Builder.Props if (!detail.keepLoaded) GroupsBuilder.Make(prop, sector); prop.SetActive(true); - prop.AddComponent(); + if (detail.hasPhysics) prop.AddComponent(); _detailInfoToCorrespondingSpawnedGameObject[detail] = prop; From 83300df0127846ebc5ee69eea299a326a4e576a5 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 23 Nov 2022 23:49:49 -0800 Subject: [PATCH 11/37] another TODO --- NewHorizons/Builder/Props/DetailBuilder.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index a6eb504a..a99c16a2 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -396,6 +396,7 @@ namespace NewHorizons.Builder.Props // TODO: simulate in sector // BUG: detector collider is not included in groups + // TODO: mass private class AddPhysics : MonoBehaviour { private IEnumerator Start() From 1521adacbde63d965fcf2691659ff6e0e32ae2d1 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Thu, 24 Nov 2022 12:37:15 -0500 Subject: [PATCH 12/37] Set tag (again lol) --- NewHorizons/Builder/Props/DetailBuilder.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index a99c16a2..6a485b19 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -416,6 +416,7 @@ namespace NewHorizons.Builder.Props var detector = new GameObject("Detector"); detector.transform.SetParent(transform, false); detector.layer = LayerMask.NameToLayer("AdvancedDetector"); + detector.tag = "DynamicPropDetector"; detector.AddComponent(); detector.AddComponent(); detector.AddComponent(); From aafd46be74a39a0625576d383104dbbb7ded0d36 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Thu, 24 Nov 2022 12:37:30 -0500 Subject: [PATCH 13/37] Add impact sound --- NewHorizons/Builder/Props/DetailBuilder.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 6a485b19..c2900518 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -421,6 +421,23 @@ namespace NewHorizons.Builder.Props detector.AddComponent(); detector.AddComponent(); + var impactSensor = gameObject.AddComponent(); + var impactAudio = new GameObject("ImpactAudio"); + impactAudio.transform.SetParent(transform, false); + var audioSource = impactAudio.AddComponent(); + audioSource.maxDistance = 30; + audioSource.dopplerLevel = 0; + audioSource.rolloffMode = AudioRolloffMode.Custom; + audioSource.playOnAwake = false; + audioSource.spatialBlend = 1; + var owAudioSource = impactAudio.AddComponent(); + owAudioSource._audioSource = audioSource; + owAudioSource.SetTrack(OWAudioMixer.TrackName.Environment); + var objectImpactAudio = impactAudio.AddComponent(); + objectImpactAudio._minPitch = 0.4f; + objectImpactAudio._maxPitch = 0.6f; + objectImpactAudio._impactSensor = impactSensor; + Destroy(this); } } From e6b8e1bcf845bffe537b02ee56628617a6c7364b Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 26 Nov 2022 14:34:09 -0500 Subject: [PATCH 14/37] set active --- NewHorizons/Builder/Props/DetailBuilder.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index c2900518..6c74ba17 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -424,6 +424,7 @@ namespace NewHorizons.Builder.Props var impactSensor = gameObject.AddComponent(); var impactAudio = new GameObject("ImpactAudio"); impactAudio.transform.SetParent(transform, false); + impactAudio.SetActive(false); var audioSource = impactAudio.AddComponent(); audioSource.maxDistance = 30; audioSource.dopplerLevel = 0; @@ -437,6 +438,7 @@ namespace NewHorizons.Builder.Props objectImpactAudio._minPitch = 0.4f; objectImpactAudio._maxPitch = 0.6f; objectImpactAudio._impactSensor = impactSensor; + impactAudio.SetActive(true); Destroy(this); } From e0dd75d310b77f00bda7d6276d9dda7f50274648 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 12:58:22 -0800 Subject: [PATCH 15/37] restructure how physics object is created --- NewHorizons/Builder/Props/DetailBuilder.cs | 45 ++++++++++++++++------ NewHorizons/External/Modules/PropModule.cs | 5 +++ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 6c74ba17..9cccbea1 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -223,7 +223,12 @@ namespace NewHorizons.Builder.Props if (!detail.keepLoaded) GroupsBuilder.Make(prop, sector); prop.SetActive(true); - if (detail.hasPhysics) prop.AddComponent(); + if (detail.hasPhysics || true) + { + var addPhysics = prop.AddComponent(); + addPhysics.Sector = sector; + addPhysics.Radius = detail.physicsRadius; + } _detailInfoToCorrespondingSpawnedGameObject[detail] = prop; @@ -399,32 +404,44 @@ namespace NewHorizons.Builder.Props // TODO: mass private class AddPhysics : MonoBehaviour { + public Sector Sector; + public float? Radius; + private IEnumerator Start() { + if (!Sector) + Logger.LogError($"Prop {name} has physics but no sector! This will fall through things when surrounding area is unloaded"); + yield return new WaitForSeconds(.1f); var parentBody = GetComponentInParent(); + // just disable all non triggers foreach (var meshCollider in GetComponentsInChildren(true)) - // hack. doesnt work for all meshes but seems to for most if (!meshCollider.isTrigger) - meshCollider.convex = true; + meshCollider.enabled = false; - var owRigidbody = gameObject.AddComponent(); - owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); + var bodyGo = new GameObject($"{name}_Body"); + bodyGo.SetActive(false); + bodyGo.transform.position = gameObject.transform.position; + bodyGo.transform.rotation = gameObject.transform.rotation; + + var owRigidbody = bodyGo.AddComponent(); + owRigidbody._simulateInSector = Sector; var detector = new GameObject("Detector"); - detector.transform.SetParent(transform, false); + detector.transform.SetParent(bodyGo.transform, false); detector.layer = LayerMask.NameToLayer("AdvancedDetector"); detector.tag = "DynamicPropDetector"; - detector.AddComponent(); + var sphereCollider = detector.AddComponent(); + if (Radius.HasValue) + sphereCollider.radius = Radius.Value; detector.AddComponent(); detector.AddComponent(); - var impactSensor = gameObject.AddComponent(); + var impactSensor = bodyGo.AddComponent(); var impactAudio = new GameObject("ImpactAudio"); - impactAudio.transform.SetParent(transform, false); - impactAudio.SetActive(false); + impactAudio.transform.SetParent(bodyGo.transform, false); var audioSource = impactAudio.AddComponent(); audioSource.maxDistance = 30; audioSource.dopplerLevel = 0; @@ -433,12 +450,16 @@ namespace NewHorizons.Builder.Props audioSource.spatialBlend = 1; var owAudioSource = impactAudio.AddComponent(); owAudioSource._audioSource = audioSource; - owAudioSource.SetTrack(OWAudioMixer.TrackName.Environment); + owAudioSource._track = OWAudioMixer.TrackName.Environment; var objectImpactAudio = impactAudio.AddComponent(); objectImpactAudio._minPitch = 0.4f; objectImpactAudio._maxPitch = 0.6f; objectImpactAudio._impactSensor = impactSensor; - impactAudio.SetActive(true); + + bodyGo.SetActive(true); + + owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); + transform.SetParent(bodyGo.transform, false); Destroy(this); } diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index 2883634a..01fac39b 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -234,6 +234,11 @@ namespace NewHorizons.External.Modules /// Should this object dynamically move around /// public bool hasPhysics; + + /// + /// Optionally create a SphereCollider of the given radius that physics will use for collision + /// + public float? physicsRadius; } [JsonObject] From a4b421ea679a5bcb9cb50eb93c1c0fdedbe7b252 Mon Sep 17 00:00:00 2001 From: Ben C Date: Fri, 3 Feb 2023 21:00:37 +0000 Subject: [PATCH 16/37] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 88eda3c3..612451b9 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1094,6 +1094,14 @@ "hasPhysics": { "type": "boolean", "description": "Should this object dynamically move around" + }, + "physicsRadius": { + "type": [ + "null", + "number" + ], + "description": "Optionally create a SphereCollider of the given radius that physics will use for collision", + "format": "float" } } }, From d11c998dd672c85dd529709131f072940416450b Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 13:27:17 -0800 Subject: [PATCH 17/37] more tweaking --- NewHorizons/Builder/Props/DetailBuilder.cs | 78 ++++++---------------- NewHorizons/External/Modules/PropModule.cs | 11 ++- 2 files changed, 28 insertions(+), 61 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 4404cf79..54fc2fd6 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -236,6 +236,7 @@ namespace NewHorizons.Builder.Props { var addPhysics = prop.AddComponent(); addPhysics.Sector = sector; + addPhysics.Mass = detail.physicsMass; addPhysics.Radius = detail.physicsRadius; } @@ -415,103 +416,64 @@ namespace NewHorizons.Builder.Props } } - // TODO: simulate in sector // BUG: detector collider is not included in groups - // TODO: mass private class AddPhysics : MonoBehaviour { public Sector Sector; - public float? Radius; + public float Mass; + public float Radius; private IEnumerator Start() { if (!Sector) - Logger.LogError($"Prop {name} has physics but no sector! This will fall through things when surrounding area is unloaded"); + Logger.LogError($"Prop {name} has physics but no sector! Will fall through things when surrounding area is unloaded"); - yield return new WaitForSeconds(.1f); + yield return new WaitForSeconds(3f); var parentBody = GetComponentInParent(); // just disable all non triggers - foreach (var meshCollider in GetComponentsInChildren(true)) - if (!meshCollider.isTrigger) - meshCollider.enabled = false; + foreach (var collider in GetComponentsInChildren(true)) + if (!collider.isTrigger) + collider.enabled = false; var bodyGo = new GameObject($"{name}_Body"); bodyGo.SetActive(false); - bodyGo.transform.position = gameObject.transform.position; - bodyGo.transform.rotation = gameObject.transform.rotation; + bodyGo.transform.position = transform.position; + bodyGo.transform.rotation = transform.rotation; var owRigidbody = bodyGo.AddComponent(); owRigidbody._simulateInSector = Sector; - var detector = new GameObject("Detector"); - detector.transform.SetParent(bodyGo.transform, false); - detector.layer = LayerMask.NameToLayer("AdvancedDetector"); - detector.tag = "DynamicPropDetector"; - var sphereCollider = detector.AddComponent(); - if (Radius.HasValue) - sphereCollider.radius = Radius.Value; - detector.AddComponent(); - detector.AddComponent(); + bodyGo.layer = LayerMask.NameToLayer("PhysicalDetector"); + bodyGo.tag = "DynamicPropDetector"; + bodyGo.AddComponent().radius = Radius; + bodyGo.AddComponent(); + bodyGo.AddComponent(); var impactSensor = bodyGo.AddComponent(); - var impactAudio = new GameObject("ImpactAudio"); - impactAudio.transform.SetParent(bodyGo.transform, false); - var audioSource = impactAudio.AddComponent(); + var audioSource = bodyGo.AddComponent(); audioSource.maxDistance = 30; audioSource.dopplerLevel = 0; audioSource.rolloffMode = AudioRolloffMode.Custom; audioSource.playOnAwake = false; audioSource.spatialBlend = 1; - var owAudioSource = impactAudio.AddComponent(); + var owAudioSource = bodyGo.AddComponent(); owAudioSource._audioSource = audioSource; owAudioSource._track = OWAudioMixer.TrackName.Environment; - var objectImpactAudio = impactAudio.AddComponent(); + var objectImpactAudio = bodyGo.AddComponent(); objectImpactAudio._minPitch = 0.4f; objectImpactAudio._maxPitch = 0.6f; objectImpactAudio._impactSensor = impactSensor; bodyGo.SetActive(true); + transform.parent = bodyGo.transform; + owRigidbody.SetMass(Mass); owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); - transform.SetParent(bodyGo.transform, false); Destroy(this); } } - - /* - private static void AddPhysics(GameObject prop, Sector sector) - { - var primaryBody = prop.GetComponentInParent(); - - var rb = prop.AddComponent(); - var owrb = prop.AddComponent(); - var kine = prop.AddComponent(); - rb.isKinematic = true; - var offsetApplier = prop.AddComponent(); - offsetApplier.Init(owrb); - owrb._simulateInSector = sector; - owrb._kinematicSimulation = true; - owrb._kinematicRigidbody = kine; - owrb._offsetApplier = offsetApplier; - - prop.AddComponent().SetPrimaryBody(primaryBody); - prop.AddComponent().SetBodyToMatch(primaryBody); - - var detector = new GameObject("Detector"); - detector.transform.parent = prop.transform; - detector.transform.localPosition = Vector3.zero; - detector.tag = "DynamicPropDetector"; - - var shape = detector.AddComponent(); - shape.SetCollisionMode(Shape.CollisionMode.Detector); - shape.SetLayer(Shape.Layer.Default); - shape.layerMask = 5; - 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 40fb1ef4..bac024c9 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -231,14 +231,19 @@ namespace NewHorizons.External.Modules public bool keepLoaded; /// - /// Should this object dynamically move around + /// Should this object dynamically move around? /// public bool hasPhysics; /// - /// Optionally create a SphereCollider of the given radius that physics will use for collision + /// The mass of the physics object. /// - public float? physicsRadius; + [DefaultValue(1f)] public float physicsMass = 1f; + + /// + /// The radius that the added sphere collider will use for physics collision. + /// + [DefaultValue(0.5f)] public float physicsRadius = 0.5f; } [JsonObject] From a2f6787e709dd1eea627e051c82ddf30e3bb48fd Mon Sep 17 00:00:00 2001 From: Ben C Date: Fri, 3 Feb 2023 21:31:21 +0000 Subject: [PATCH 18/37] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 612451b9..6b347b8e 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1093,15 +1093,19 @@ }, "hasPhysics": { "type": "boolean", - "description": "Should this object dynamically move around" + "description": "Should this object dynamically move around?" + }, + "physicsMass": { + "type": "number", + "description": "The mass of the physics object.", + "format": "float", + "default": 1.0 }, "physicsRadius": { - "type": [ - "null", - "number" - ], - "description": "Optionally create a SphereCollider of the given radius that physics will use for collision", - "format": "float" + "type": "number", + "description": "The radius that the added sphere collider will use for physics collision.", + "format": "float", + "default": 0.5 } } }, From e45a4d1c3c23b962a7d9d537de9ba9e875fa5dee Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 13:40:21 -0800 Subject: [PATCH 19/37] finalize --- NewHorizons/Builder/Props/DetailBuilder.cs | 13 +++++++------ NewHorizons/External/Modules/PropModule.cs | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 54fc2fd6..59d33997 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -232,7 +232,7 @@ namespace NewHorizons.Builder.Props if (!detail.keepLoaded) GroupsBuilder.Make(prop, sector); prop.SetActive(true); - if (detail.hasPhysics || true) + if (detail.hasPhysics) { var addPhysics = prop.AddComponent(); addPhysics.Sector = sector; @@ -428,14 +428,15 @@ namespace NewHorizons.Builder.Props if (!Sector) Logger.LogError($"Prop {name} has physics but no sector! Will fall through things when surrounding area is unloaded"); - yield return new WaitForSeconds(3f); + yield return new WaitForSeconds(.1f); var parentBody = GetComponentInParent(); - // just disable all non triggers - foreach (var collider in GetComponentsInChildren(true)) - if (!collider.isTrigger) - collider.enabled = false; + // hack: make all mesh colliders convex + // triggers are already convex but whatever + // prints errors for non readable meshes but whatever + foreach (var meshCollider in GetComponentsInChildren(true)) + meshCollider.convex = true; var bodyGo = new GameObject($"{name}_Body"); bodyGo.SetActive(false); diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index bac024c9..aca1f56a 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -232,6 +232,7 @@ namespace NewHorizons.External.Modules /// /// Should this object dynamically move around? + /// This tries to make all mesh colliders convex, as well as adding a sphere collider in case the detail has no others. /// public bool hasPhysics; From cee425db24d07a76d3da0b1f168688592d8f89b9 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 13:41:21 -0800 Subject: [PATCH 20/37] oh well --- NewHorizons/Builder/Props/DetailBuilder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 59d33997..fadc0b2b 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -416,7 +416,7 @@ namespace NewHorizons.Builder.Props } } - // BUG: detector collider is not included in groups + // BUG: detector collider is not included in groups. oh well private class AddPhysics : MonoBehaviour { public Sector Sector; @@ -433,7 +433,7 @@ namespace NewHorizons.Builder.Props var parentBody = GetComponentInParent(); // hack: make all mesh colliders convex - // triggers are already convex but whatever + // triggers are already convex // prints errors for non readable meshes but whatever foreach (var meshCollider in GetComponentsInChildren(true)) meshCollider.convex = true; From 13d7a27774adc6d9af49a57dedfb816ff6cab3bd Mon Sep 17 00:00:00 2001 From: Ben C Date: Fri, 3 Feb 2023 21:44:32 +0000 Subject: [PATCH 21/37] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 6b347b8e..ba181301 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1093,7 +1093,7 @@ }, "hasPhysics": { "type": "boolean", - "description": "Should this object dynamically move around?" + "description": "Should this object dynamically move around?\nThis tries to make all mesh colliders convex, as well as adding a sphere collider in case the detail has no others." }, "physicsMass": { "type": "number", From 7ac33227409a472a5afd42bfd28586b65f05830b Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 13:46:38 -0800 Subject: [PATCH 22/37] TEMP: remove impact audio cuz right now it sounds bad --- NewHorizons/Builder/Props/DetailBuilder.cs | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index fadc0b2b..c9a8c1b5 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -452,21 +452,6 @@ namespace NewHorizons.Builder.Props bodyGo.AddComponent(); bodyGo.AddComponent(); - var impactSensor = bodyGo.AddComponent(); - var audioSource = bodyGo.AddComponent(); - audioSource.maxDistance = 30; - audioSource.dopplerLevel = 0; - audioSource.rolloffMode = AudioRolloffMode.Custom; - audioSource.playOnAwake = false; - audioSource.spatialBlend = 1; - var owAudioSource = bodyGo.AddComponent(); - owAudioSource._audioSource = audioSource; - owAudioSource._track = OWAudioMixer.TrackName.Environment; - var objectImpactAudio = bodyGo.AddComponent(); - objectImpactAudio._minPitch = 0.4f; - objectImpactAudio._maxPitch = 0.6f; - objectImpactAudio._impactSensor = impactSensor; - bodyGo.SetActive(true); transform.parent = bodyGo.transform; From e33fe1823f07161eba11dffe191a16be33b6e2cd Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 13:52:01 -0800 Subject: [PATCH 23/37] doc --- NewHorizons/External/Modules/PropModule.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index aca1f56a..23b0d784 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -238,13 +238,14 @@ namespace NewHorizons.External.Modules /// /// The mass of the physics object. + /// For reference, the player has a mass of 0.001 and the probe has a mass of 0.0001 /// [DefaultValue(1f)] public float physicsMass = 1f; /// /// The radius that the added sphere collider will use for physics collision. /// - [DefaultValue(0.5f)] public float physicsRadius = 0.5f; + [DefaultValue(1f)] public float physicsRadius = 1f; } [JsonObject] From 86074fd23ff34905b7a56dba9b1656230848130b Mon Sep 17 00:00:00 2001 From: Ben C Date: Fri, 3 Feb 2023 21:55:09 +0000 Subject: [PATCH 24/37] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index ba181301..f4fd71c5 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1097,7 +1097,7 @@ }, "physicsMass": { "type": "number", - "description": "The mass of the physics object.", + "description": "The mass of the physics object.\nFor reference, the player has a mass of 0.001 and the probe has a mass of 0.0001", "format": "float", "default": 1.0 }, @@ -1105,7 +1105,7 @@ "type": "number", "description": "The radius that the added sphere collider will use for physics collision.", "format": "float", - "default": 0.5 + "default": 1.0 } } }, From 0c72348acd60936353792e5a04818fb00f5deed1 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 13:57:35 -0800 Subject: [PATCH 25/37] MORE doc --- NewHorizons/External/Modules/PropModule.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index 23b0d784..7427c0d7 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -238,12 +238,13 @@ namespace NewHorizons.External.Modules /// /// The mass of the physics object. - /// For reference, the player has a mass of 0.001 and the probe has a mass of 0.0001 + /// For reference, the player has a mass of 0.001 and the probe has a mass of 0.0001. /// [DefaultValue(1f)] public float physicsMass = 1f; /// /// The radius that the added sphere collider will use for physics collision. + /// If there's already good colliders on the detail, you can make this 0. /// [DefaultValue(1f)] public float physicsRadius = 1f; } From 33b1245c56ce5b04c7704312a1640a8f723ec872 Mon Sep 17 00:00:00 2001 From: Ben C Date: Fri, 3 Feb 2023 22:00:38 +0000 Subject: [PATCH 26/37] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index f4fd71c5..fdf01cd0 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1097,13 +1097,13 @@ }, "physicsMass": { "type": "number", - "description": "The mass of the physics object.\nFor reference, the player has a mass of 0.001 and the probe has a mass of 0.0001", + "description": "The mass of the physics object.\nFor reference, the player has a mass of 0.001 and the probe has a mass of 0.0001.", "format": "float", "default": 1.0 }, "physicsRadius": { "type": "number", - "description": "The radius that the added sphere collider will use for physics collision.", + "description": "The radius that the added sphere collider will use for physics collision.\nIf there's already good colliders on the detail, you can make this 0.", "format": "float", "default": 1.0 } From 9885e3029594e464ddde8458b731eceec04b6ce7 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 18:17:32 -0800 Subject: [PATCH 27/37] i dont care enough to fix it --- NewHorizons/Builder/Props/DetailBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index c9a8c1b5..11d14fd4 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -416,7 +416,7 @@ namespace NewHorizons.Builder.Props } } - // BUG: detector collider is not included in groups. oh well + // detector collider is not included in groups. oh well private class AddPhysics : MonoBehaviour { public Sector Sector; From a6e190ffd89f3e10f55bbbd700ab9c17bce8d6aa Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 18:40:20 -0800 Subject: [PATCH 28/37] remove sector error. its ok --- NewHorizons/Builder/Props/DetailBuilder.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 11d14fd4..6e153922 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -425,9 +425,6 @@ namespace NewHorizons.Builder.Props private IEnumerator Start() { - if (!Sector) - Logger.LogError($"Prop {name} has physics but no sector! Will fall through things when surrounding area is unloaded"); - yield return new WaitForSeconds(.1f); var parentBody = GetComponentInParent(); From cb2b8815fd3cfc973b2600ca25d0db481bad103a Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 18:51:21 -0800 Subject: [PATCH 29/37] move to separate component --- NewHorizons/Builder/Props/DetailBuilder.cs | 45 +------------------ NewHorizons/Components/AddPhysics.cs | 51 ++++++++++++++++++++++ 2 files changed, 52 insertions(+), 44 deletions(-) create mode 100644 NewHorizons/Components/AddPhysics.cs diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 6e153922..24baeb8c 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -1,10 +1,10 @@ using NewHorizons.Builder.General; +using NewHorizons.Components; using NewHorizons.External.Modules; using NewHorizons.Handlers; using NewHorizons.Utility; using OWML.Common; using System; -using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; @@ -415,48 +415,5 @@ namespace NewHorizons.Builder.Props Destroy(this); } } - - // detector collider is not included in groups. oh well - private class AddPhysics : MonoBehaviour - { - public Sector Sector; - public float Mass; - public float Radius; - - private IEnumerator Start() - { - yield return new WaitForSeconds(.1f); - - var parentBody = GetComponentInParent(); - - // hack: make all mesh colliders convex - // triggers are already convex - // prints errors for non readable meshes but whatever - foreach (var meshCollider in GetComponentsInChildren(true)) - meshCollider.convex = true; - - var bodyGo = new GameObject($"{name}_Body"); - bodyGo.SetActive(false); - bodyGo.transform.position = transform.position; - bodyGo.transform.rotation = transform.rotation; - - var owRigidbody = bodyGo.AddComponent(); - owRigidbody._simulateInSector = Sector; - - bodyGo.layer = LayerMask.NameToLayer("PhysicalDetector"); - bodyGo.tag = "DynamicPropDetector"; - bodyGo.AddComponent().radius = Radius; - bodyGo.AddComponent(); - bodyGo.AddComponent(); - - bodyGo.SetActive(true); - - transform.parent = bodyGo.transform; - owRigidbody.SetMass(Mass); - owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); - - Destroy(this); - } - } } } \ No newline at end of file diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs new file mode 100644 index 00000000..24cab40b --- /dev/null +++ b/NewHorizons/Components/AddPhysics.cs @@ -0,0 +1,51 @@ +using System.Collections; +using UnityEngine; + +namespace NewHorizons.Components +{ + /// + /// properly add physics to a detail + /// + public class AddPhysics : MonoBehaviour + { + public Sector Sector; + public float Mass; + public float Radius; + + private IEnumerator Start() + { + yield return new WaitForSeconds(.1f); + + var parentBody = GetComponentInParent(); + + // hack: make all mesh colliders convex + // triggers are already convex + // prints errors for non readable meshes but whatever + foreach (var meshCollider in GetComponentsInChildren(true)) + meshCollider.convex = true; + + var bodyGo = new GameObject($"{name}_Body"); + bodyGo.SetActive(false); + bodyGo.transform.position = transform.position; + bodyGo.transform.rotation = transform.rotation; + + var owRigidbody = bodyGo.AddComponent(); + owRigidbody._simulateInSector = Sector; + + bodyGo.layer = LayerMask.NameToLayer("PhysicalDetector"); + bodyGo.tag = "DynamicPropDetector"; + // this collider is not included in groups. oh well + bodyGo.AddComponent().radius = Radius; + bodyGo.AddComponent(); + bodyGo.AddComponent(); + + bodyGo.SetActive(true); + + transform.parent = bodyGo.transform; + owRigidbody.SetMass(Mass); + owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); + + Destroy(this); + } + } +} \ No newline at end of file From 9546b52a5e28c7d94abe596ae45dc31818ca85af Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 18:52:40 -0800 Subject: [PATCH 30/37] add default values guy --- NewHorizons/Components/AddPhysics.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index 24cab40b..38caaa9c 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -9,8 +9,8 @@ namespace NewHorizons.Components public class AddPhysics : MonoBehaviour { public Sector Sector; - public float Mass; - public float Radius; + public float Mass = 1f; + public float Radius = 1f; private IEnumerator Start() { From 6e97449c2bf1d21bfccfe6210a4f305b96b51b46 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 18:58:34 -0800 Subject: [PATCH 31/37] file scoped namespace --- NewHorizons/Components/AddPhysics.cs | 71 ++++++++++++++-------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index 38caaa9c..c4571326 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -1,51 +1,50 @@ using System.Collections; using UnityEngine; -namespace NewHorizons.Components +namespace NewHorizons.Components; + +/// +/// properly add physics to a detail +/// +public class AddPhysics : MonoBehaviour { - /// - /// properly add physics to a detail - /// - public class AddPhysics : MonoBehaviour + public Sector Sector; + public float Mass = 1f; + public float Radius = 1f; + + private IEnumerator Start() { - public Sector Sector; - public float Mass = 1f; - public float Radius = 1f; + yield return new WaitForSeconds(.1f); - private IEnumerator Start() - { - yield return new WaitForSeconds(.1f); + var parentBody = GetComponentInParent(); - var parentBody = GetComponentInParent(); + // hack: make all mesh colliders convex + // triggers are already convex + // prints errors for non readable meshes but whatever + foreach (var meshCollider in GetComponentsInChildren(true)) + meshCollider.convex = true; - // hack: make all mesh colliders convex - // triggers are already convex - // prints errors for non readable meshes but whatever - foreach (var meshCollider in GetComponentsInChildren(true)) - meshCollider.convex = true; + var bodyGo = new GameObject($"{name}_Body"); + bodyGo.SetActive(false); + bodyGo.transform.position = transform.position; + bodyGo.transform.rotation = transform.rotation; - var bodyGo = new GameObject($"{name}_Body"); - bodyGo.SetActive(false); - bodyGo.transform.position = transform.position; - bodyGo.transform.rotation = transform.rotation; + var owRigidbody = bodyGo.AddComponent(); + owRigidbody._simulateInSector = Sector; - var owRigidbody = bodyGo.AddComponent(); - owRigidbody._simulateInSector = Sector; + bodyGo.layer = LayerMask.NameToLayer("PhysicalDetector"); + bodyGo.tag = "DynamicPropDetector"; + // this collider is not included in groups. oh well + bodyGo.AddComponent().radius = Radius; + bodyGo.AddComponent(); + bodyGo.AddComponent(); - bodyGo.layer = LayerMask.NameToLayer("PhysicalDetector"); - bodyGo.tag = "DynamicPropDetector"; - // this collider is not included in groups. oh well - bodyGo.AddComponent().radius = Radius; - bodyGo.AddComponent(); - bodyGo.AddComponent(); + bodyGo.SetActive(true); - bodyGo.SetActive(true); + transform.parent = bodyGo.transform; + owRigidbody.SetMass(Mass); + owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); - transform.parent = bodyGo.transform; - owRigidbody.SetMass(Mass); - owRigidbody.SetVelocity(parentBody.GetPointVelocity(transform.position)); - - Destroy(this); - } + Destroy(this); } } \ No newline at end of file From 174e4ea328da0ebe9e02fbbceeab0a2003da1929 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 19:06:30 -0800 Subject: [PATCH 32/37] disallow multiple component --- NewHorizons/Components/AddPhysics.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index c4571326..c73d256a 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -6,6 +6,7 @@ namespace NewHorizons.Components; /// /// properly add physics to a detail /// +[DisallowMultipleComponent] public class AddPhysics : MonoBehaviour { public Sector Sector; From 7c89be34258c21a55cb24b680c9df41f783f2aa1 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 19:22:14 -0800 Subject: [PATCH 33/37] improve for unity --- NewHorizons/Components/AddPhysics.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index c73d256a..ec326c25 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -9,8 +9,13 @@ namespace NewHorizons.Components; [DisallowMultipleComponent] public class AddPhysics : MonoBehaviour { + [Tooltip("The sector that the rigidbody will be simulated in, or none for it to always be on.")] public Sector Sector; + [Tooltip("The mass of the physics object.\n" + + "For reference, the player has a mass of 0.001 and the probe has a mass of 0.0001.")] public float Mass = 1f; + [Tooltip("The radius that the added sphere collider will use for physics collision.\n" + + "If there's already good colliders on the detail, you can make this 0.")] public float Radius = 1f; private IEnumerator Start() @@ -48,4 +53,10 @@ public class AddPhysics : MonoBehaviour Destroy(this); } + + private void OnDrawGizmosSelected() + { + Gizmos.matrix = transform.localToWorldMatrix; + Gizmos.DrawWireSphere(Vector3.zero, Radius); + } } \ No newline at end of file From 41312db32dccfa84a3d04d5a868dfad771ee5d8d Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Fri, 3 Feb 2023 22:35:19 -0500 Subject: [PATCH 34/37] add back impact audio --- NewHorizons/Components/AddPhysics.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index ec326c25..f9ebec84 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -45,6 +45,21 @@ public class AddPhysics : MonoBehaviour bodyGo.AddComponent(); bodyGo.AddComponent(); + var impactSensor = bodyGo.AddComponent(); + var audioSource = bodyGo.AddComponent(); + audioSource.maxDistance = 30; + audioSource.dopplerLevel = 0; + audioSource.rolloffMode = AudioRolloffMode.Custom; + audioSource.playOnAwake = false; + audioSource.spatialBlend = 1; + var owAudioSource = bodyGo.AddComponent(); + owAudioSource._audioSource = audioSource; + owAudioSource._track = OWAudioMixer.TrackName.Environment; + var objectImpactAudio = bodyGo.AddComponent(); + objectImpactAudio._minPitch = 0.4f; + objectImpactAudio._maxPitch = 0.6f; + objectImpactAudio._impactSensor = impactSensor; + bodyGo.SetActive(true); transform.parent = bodyGo.transform; From 4ae3d2241fbb4662498c90b2badb2d5358c93b53 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 21:14:05 -0800 Subject: [PATCH 35/37] Radius doesnt account for scale bozo --- NewHorizons/Components/AddPhysics.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index ec326c25..51f5dda1 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -56,7 +56,6 @@ public class AddPhysics : MonoBehaviour private void OnDrawGizmosSelected() { - Gizmos.matrix = transform.localToWorldMatrix; - Gizmos.DrawWireSphere(Vector3.zero, Radius); + Gizmos.DrawWireSphere(transform.position, Radius); } } \ No newline at end of file From 024bdf167d8e7bd2bdd4c3dd2b20999a0fd37852 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Fri, 3 Feb 2023 21:55:01 -0800 Subject: [PATCH 36/37] change default mass value --- NewHorizons/Components/AddPhysics.cs | 4 ++-- NewHorizons/External/Modules/PropModule.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/NewHorizons/Components/AddPhysics.cs b/NewHorizons/Components/AddPhysics.cs index ab2d5d74..14785f9f 100644 --- a/NewHorizons/Components/AddPhysics.cs +++ b/NewHorizons/Components/AddPhysics.cs @@ -12,8 +12,8 @@ public class AddPhysics : MonoBehaviour [Tooltip("The sector that the rigidbody will be simulated in, or none for it to always be on.")] public Sector Sector; [Tooltip("The mass of the physics object.\n" + - "For reference, the player has a mass of 0.001 and the probe has a mass of 0.0001.")] - public float Mass = 1f; + "Most pushable props use the default value, which matches the player mass.")] + public float Mass = 0.001f; [Tooltip("The radius that the added sphere collider will use for physics collision.\n" + "If there's already good colliders on the detail, you can make this 0.")] public float Radius = 1f; diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index 7427c0d7..2fbf0f0a 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -238,9 +238,9 @@ namespace NewHorizons.External.Modules /// /// The mass of the physics object. - /// For reference, the player has a mass of 0.001 and the probe has a mass of 0.0001. + /// Most pushable props use the default value, which matches the player mass. /// - [DefaultValue(1f)] public float physicsMass = 1f; + [DefaultValue(0.001f)] public float physicsMass = 0.001f; /// /// The radius that the added sphere collider will use for physics collision. From 82e654f312b50914ccc2997e7798a8dfee940feb Mon Sep 17 00:00:00 2001 From: Ben C Date: Sat, 4 Feb 2023 05:57:41 +0000 Subject: [PATCH 37/37] Updated Schemas --- NewHorizons/Schemas/body_schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index fdf01cd0..bc3099a1 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1097,9 +1097,9 @@ }, "physicsMass": { "type": "number", - "description": "The mass of the physics object.\nFor reference, the player has a mass of 0.001 and the probe has a mass of 0.0001.", + "description": "The mass of the physics object.\nMost pushable props use the default value, which matches the player mass.", "format": "float", - "default": 1.0 + "default": 0.001 }, "physicsRadius": { "type": "number",