public PivotState(PivotsHost host, ArtObjectInstance handleAo) { ServiceHelper.InjectServices((object)this); this.Host = host; this.HandleAo = handleAo; this.Group = this.LevelManager.Groups[handleAo.ActorSettings.AttachedGroup.Value]; this.AttachedArtObjects = Enumerable.ToArray <ArtObjectInstance>(Enumerable.Where <ArtObjectInstance>((IEnumerable <ArtObjectInstance>) this.LevelManager.ArtObjects.Values, (Func <ArtObjectInstance, bool>)(x => { int?local_0 = x.ActorSettings.AttachedGroup; int local_1 = this.Group.Id; if ((local_0.GetValueOrDefault() != local_1 ? 0 : (local_0.HasValue ? 1 : 0)) != 0) { return(x != this.HandleAo); } else { return(false); } }))); this.AttachedAoOrigins = Enumerable.ToArray <Vector3>(Enumerable.Select <ArtObjectInstance, Vector3>((IEnumerable <ArtObjectInstance>) this.AttachedArtObjects, (Func <ArtObjectInstance, Vector3>)(x => x.Position))); this.AttachedAoRotations = Enumerable.ToArray <Quaternion>(Enumerable.Select <ArtObjectInstance, Quaternion>((IEnumerable <ArtObjectInstance>) this.AttachedArtObjects, (Func <ArtObjectInstance, Quaternion>)(x => x.Rotation))); foreach (TrileInstance trileInstance in this.Group.Triles) { trileInstance.ForceSeeThrough = true; } float num = Enumerable.Max <TrileInstance>(Enumerable.Where <TrileInstance>((IEnumerable <TrileInstance>) this.Group.Triles, (Func <TrileInstance, bool>)(x => !x.Trile.Immaterial)), (Func <TrileInstance, float>)(x => x.Position.Y)); foreach (TrileInstance trileInstance in this.Group.Triles) { if ((double)trileInstance.Position.Y == (double)num) { this.TopLayer.Add(trileInstance); } } if (this.LevelManager.Name == "WATER_TOWER" && this.LevelManager.LastLevelName == "LIGHTHOUSE") { if (this.GameState.SaveData.ThisLevel.PivotRotations.ContainsKey(handleAo.Id)) { this.GameState.SaveData.ThisLevel.PivotRotations[handleAo.Id] = 0; } } else { int initialSpins; if (this.GameState.SaveData.ThisLevel.PivotRotations.TryGetValue(handleAo.Id, out initialSpins) && initialSpins != 0) { this.ForceSpinTo(initialSpins); } } if (!this.GameState.SaveData.ThisLevel.InactiveArtObjects.Contains(this.HandleAo.Id)) { return; } this.HandleAo.Enabled = false; }
public PivotState(PivotsHost host, ArtObjectInstance handleAo) { ServiceHelper.InjectServices((object) this); this.Host = host; this.HandleAo = handleAo; this.Group = this.LevelManager.Groups[handleAo.ActorSettings.AttachedGroup.Value]; this.AttachedArtObjects = Enumerable.ToArray<ArtObjectInstance>(Enumerable.Where<ArtObjectInstance>((IEnumerable<ArtObjectInstance>) this.LevelManager.ArtObjects.Values, (Func<ArtObjectInstance, bool>) (x => { int? local_0 = x.ActorSettings.AttachedGroup; int local_1 = this.Group.Id; if ((local_0.GetValueOrDefault() != local_1 ? 0 : (local_0.HasValue ? 1 : 0)) != 0) return x != this.HandleAo; else return false; }))); this.AttachedAoOrigins = Enumerable.ToArray<Vector3>(Enumerable.Select<ArtObjectInstance, Vector3>((IEnumerable<ArtObjectInstance>) this.AttachedArtObjects, (Func<ArtObjectInstance, Vector3>) (x => x.Position))); this.AttachedAoRotations = Enumerable.ToArray<Quaternion>(Enumerable.Select<ArtObjectInstance, Quaternion>((IEnumerable<ArtObjectInstance>) this.AttachedArtObjects, (Func<ArtObjectInstance, Quaternion>) (x => x.Rotation))); foreach (TrileInstance trileInstance in this.Group.Triles) trileInstance.ForceSeeThrough = true; float num = Enumerable.Max<TrileInstance>(Enumerable.Where<TrileInstance>((IEnumerable<TrileInstance>) this.Group.Triles, (Func<TrileInstance, bool>) (x => !x.Trile.Immaterial)), (Func<TrileInstance, float>) (x => x.Position.Y)); foreach (TrileInstance trileInstance in this.Group.Triles) { if ((double) trileInstance.Position.Y == (double) num) this.TopLayer.Add(trileInstance); } if (this.LevelManager.Name == "WATER_TOWER" && this.LevelManager.LastLevelName == "LIGHTHOUSE") { if (this.GameState.SaveData.ThisLevel.PivotRotations.ContainsKey(handleAo.Id)) this.GameState.SaveData.ThisLevel.PivotRotations[handleAo.Id] = 0; } else { int initialSpins; if (this.GameState.SaveData.ThisLevel.PivotRotations.TryGetValue(handleAo.Id, out initialSpins) && initialSpins != 0) this.ForceSpinTo(initialSpins); } if (!this.GameState.SaveData.ThisLevel.InactiveArtObjects.Contains(this.HandleAo.Id)) return; this.HandleAo.Enabled = false; }