From 9c76cd84026465dad8a1e5306eb4ef958bf3428f Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 23 Nov 2022 22:24:51 -0800 Subject: [PATCH] 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