示例#1
0
文件: Helper.cs 项目: fclante/VAC
 /// <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;
                 }
             }
         }
     }
 }
示例#2
0
        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;
                    }
                }
            }
        }