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(); } }
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); }