/// <summary> /// Resize child EffectArea's collision that matches the specified type(s). /// </summary> public static void ResizeChildEffectArea(MonoBehaviour parent, EffectArea.Type includedTypes, float newRadius) { if (parent != null) { EffectArea effectArea = parent.GetComponentInChildren <EffectArea>(); if (effectArea != null) { if ((effectArea.m_type & includedTypes) != 0) { SphereCollider collision = effectArea.GetComponent <SphereCollider>(); if (collision != null) { collision.radius = newRadius; } } } } }
private static void UpdateForceField(PrivateArea pa, bool enabled) { Plugin.Log($"UpdateForceField called: {enabled}"); // if the ward behavior is set to original or ward is not enabled, then attempt to remove any wards... if (!enabled || Settings.WardBehavior.Value == Plugin.WardBehavior.Original) { RemoveForceFieldForPrivateArea(pa); } else { SphereCollider sphere = GetAForceFieldForPrivateArea(pa); EffectArea NoMonsters = sphere.GetComponent <EffectArea>(); if (null != NoMonsters) { Plugin.Log($"UpdateForceField Got NoMonsterArea"); // NoMonsters keeps monsters from "attempting" to navigate inside // Playerbase ensures that creatures don't spawn within the radius // however you can't build when it's enabled. NoMonsters.enabled = enabled; NoMonsters.m_type = enabled ? (EffectArea.Type.NoMonsters | EffectArea.Type.PlayerBase) : EffectArea.Type.None; // layer modelled after the ForceField in the Vendor_BlackForest scene. NoMonsters.gameObject.layer = 14; SphereCollider collider = NoMonsters.GetComponent <SphereCollider>(); if (null != collider) { collider.enabled = enabled; collider.radius = pa.m_radius; collider.name = Plugin.SphereColliderName; } } } }