use FindAll

This commit is contained in:
JohnCorby 2025-02-14 21:28:13 -08:00
parent c5ae20d22b
commit 3a490cee89
2 changed files with 14 additions and 24 deletions

View File

@ -220,15 +220,10 @@ namespace NewHorizons.Builder.Props
if (detail.removeChildren != null)
{
var detailPath = prop.transform.GetPath();
var transforms = prop.GetComponentsInChildren<Transform>(true);
foreach (var childPath in detail.removeChildren)
{
// Multiple children can have the same path so we delete all that match
var path = $"{detailPath}/{childPath}";
var flag = true;
foreach (var childObj in transforms.Where(x => x.GetPath() == path))
foreach (var childObj in prop.transform.FindAll(childPath))
{
flag = false;
childObj.gameObject.SetActive(false);
@ -264,7 +259,7 @@ namespace NewHorizons.Builder.Props
UnityEngine.Object.DestroyImmediate(prop);
prop = newDetailGO;
}
if (isItem)
{
// Else when you put them down you can't pick them back up
@ -276,7 +271,7 @@ namespace NewHorizons.Builder.Props
// For DLC related props
// Make sure to do this before its set active
if (!string.IsNullOrEmpty(detail?.path) &&
if (!string.IsNullOrEmpty(detail?.path) &&
(detail.path.ToLowerInvariant().StartsWith("ringworld") || detail.path.ToLowerInvariant().StartsWith("dreamworld")))
{
prop.AddComponent<DestroyOnDLC>()._destroyOnDLCNotOwned = true;
@ -295,7 +290,7 @@ namespace NewHorizons.Builder.Props
if (!string.IsNullOrEmpty(detail.activationCondition))
{
ConditionalObjectActivation.SetUp(prop, detail.activationCondition, detail.blinkWhenActiveChanged, true);
ConditionalObjectActivation.SetUp(prop, detail.activationCondition, detail.blinkWhenActiveChanged, true);
}
if (!string.IsNullOrEmpty(detail.deactivationCondition))
{
@ -569,22 +564,22 @@ namespace NewHorizons.Builder.Props
// Manually copied these values from a artifact lantern so that we don't have to find it (works in Eye)
lantern._origLensFlareBrightness = 0f;
lantern._focuserPetalsBaseEulerAngles = new Vector3[]
{
new Vector3(0.7f, 270.0f, 357.5f),
new Vector3(288.7f, 270.1f, 357.4f),
lantern._focuserPetalsBaseEulerAngles = new Vector3[]
{
new Vector3(0.7f, 270.0f, 357.5f),
new Vector3(288.7f, 270.1f, 357.4f),
new Vector3(323.3f, 90.0f, 177.5f),
new Vector3(35.3f, 90.0f, 177.5f),
new Vector3(72.7f, 270.1f, 357.5f)
new Vector3(35.3f, 90.0f, 177.5f),
new Vector3(72.7f, 270.1f, 357.5f)
};
lantern._dirtyFlag_focus = true;
lantern._concealerRootsBaseScale = new Vector3[]
lantern._concealerRootsBaseScale = new Vector3[]
{
Vector3.one,
Vector3.one,
Vector3.one
};
lantern._concealerCoversStartPos = new Vector3[]
lantern._concealerCoversStartPos = new Vector3[]
{
new Vector3(0.0f, 0.0f, 0.0f),
new Vector3(0.0f, -0.1f, 0.0f),
@ -595,7 +590,7 @@ namespace NewHorizons.Builder.Props
};
lantern._dirtyFlag_concealment = true;
lantern.UpdateVisuals();
Destroy(this);
}
}

View File

@ -1000,15 +1000,10 @@ namespace NewHorizons.Handlers
private static void RemoveChildren(GameObject go, NewHorizonsBody body)
{
var goPath = go.transform.GetPath();
var transforms = go.GetComponentsInChildren<Transform>(true);
foreach (var childPath in body.Config.removeChildren)
{
// Multiple children can have the same path so we delete all that match
var path = $"{goPath}/{childPath}";
var flag = true;
foreach (var childObj in transforms.Where(x => x.GetPath() == path))
foreach (var childObj in go.transform.FindAll(childPath))
{
flag = false;
// idk why we wait here but we do