public static bool CheckEnvironmentVolumes(
        this Transform transform,
        Vector3 pos,
        Quaternion rot,
        Vector3 scale,
        EnvironmentType type)
    {
        List <EnvironmentVolume> list = (List <EnvironmentVolume>)Pool.GetList <EnvironmentVolume>();

        ((Component)transform).GetComponentsInChildren <EnvironmentVolume>(true, (List <M0>)list);
        for (int index = 0; index < list.Count; ++index)
        {
            EnvironmentVolume environmentVolume = list[index];
            OBB obb;
            ((OBB) ref obb).\u002Ector(((Component)environmentVolume).get_transform(), new Bounds(environmentVolume.Center, environmentVolume.Size));
            ((OBB) ref obb).Transform(pos, scale, rot);
            if (EnvironmentManager.Check(obb, type))
            {
                // ISSUE: cast to a reference type
                Pool.FreeList <EnvironmentVolume>((List <M0>&) ref list);
                return(true);
            }
        }
        // ISSUE: cast to a reference type
        Pool.FreeList <EnvironmentVolume>((List <M0>&) ref list);
        return(false);
    }
 protected void Awake()
 {
     this.volume = base.gameObject.GetComponent <EnvironmentVolume>();
     if (this.volume == null)
     {
         this.volume        = base.gameObject.AddComponent <EnvironmentVolume>();
         this.volume.Center = this.Center;
         this.volume.Size   = this.Size;
         this.volume.UpdateTrigger();
     }
 }
 protected void Awake()
 {
     volume = base.gameObject.GetComponent <EnvironmentVolume>();
     if (volume == null)
     {
         volume        = base.gameObject.AddComponent <EnvironmentVolume>();
         volume.Center = Center;
         volume.Size   = Size;
         volume.UpdateTrigger();
     }
 }
Example #4
0
 protected void Awake()
 {
     this.volume = (EnvironmentVolume)((Component)this).get_gameObject().GetComponent <EnvironmentVolume>();
     if (!Object.op_Equality((Object)this.volume, (Object)null))
     {
         return;
     }
     this.volume        = (EnvironmentVolume)((Component)this).get_gameObject().AddComponent <EnvironmentVolume>();
     this.volume.Center = this.Center;
     this.volume.Size   = this.Size;
     this.volume.UpdateTrigger();
 }
    public static bool CheckEnvironmentVolumes(this Transform transform, Vector3 pos, Quaternion rot, Vector3 scale, EnvironmentType type)
    {
        List <EnvironmentVolume> obj = Pool.GetList <EnvironmentVolume>();

        transform.GetComponentsInChildren(true, obj);
        for (int i = 0; i < obj.Count; i++)
        {
            EnvironmentVolume environmentVolume = obj[i];
            OBB obb = new OBB(environmentVolume.transform, new Bounds(environmentVolume.Center, environmentVolume.Size));
            obb.Transform(pos, scale, rot);
            if (EnvironmentManager.Check(obb, type))
            {
                Pool.FreeList(ref obj);
                return(true);
            }
        }
        Pool.FreeList(ref obj);
        return(false);
    }
    public static bool CheckEnvironmentVolumes(this Transform transform, Vector3 pos, Quaternion rot, Vector3 scale, EnvironmentType type)
    {
        List <EnvironmentVolume> list = Pool.GetList <EnvironmentVolume>();

        transform.GetComponentsInChildren <EnvironmentVolume>(true, list);
        for (int i = 0; i < list.Count; i++)
        {
            EnvironmentVolume item = list[i];
            OBB oBB = new OBB(item.transform, new Bounds(item.Center, item.Size));
            oBB.Transform(pos, scale, rot);
            if (EnvironmentManager.Check(oBB, type))
            {
                Pool.FreeList <EnvironmentVolume>(ref list);
                return(true);
            }
        }
        Pool.FreeList <EnvironmentVolume>(ref list);
        return(false);
    }
    public static bool CheckEnvironmentVolumesInsideTerrain(this Transform transform, Vector3 pos, Quaternion rot, Vector3 scale, EnvironmentType type)
    {
        if (TerrainMeta.HeightMap == null)
        {
            return(true);
        }
        List <EnvironmentVolume> obj = Pool.GetList <EnvironmentVolume>();

        transform.GetComponentsInChildren(true, obj);
        for (int i = 0; i < obj.Count; i++)
        {
            EnvironmentVolume environmentVolume = obj[i];
            OBB oBB = new OBB(environmentVolume.transform, new Bounds(environmentVolume.Center, environmentVolume.Size));
            oBB.Transform(pos, scale, rot);
            Vector3 point  = oBB.GetPoint(-1f, 0f, -1f);
            Vector3 point2 = oBB.GetPoint(1f, 0f, -1f);
            Vector3 point3 = oBB.GetPoint(-1f, 0f, 1f);
            Vector3 point4 = oBB.GetPoint(1f, 0f, 1f);
            float   max    = oBB.ToBounds().max.y;
            bool    fail   = false;
            TerrainMeta.HeightMap.ForEachParallel(point, point2, point3, point4, delegate(int x, int z)
            {
                if (TerrainMeta.HeightMap.GetHeight(x, z) < max)
                {
                    fail = true;
                }
            });
            if (fail)
            {
                Pool.FreeList(ref obj);
                return(false);
            }
        }
        Pool.FreeList(ref obj);
        return(true);
    }