Ejemplo n.º 1
0
 public void AddCluster(Cluster cluster, bool repeat = false)
 {
     if (repeat || !Clusters.Contains(cluster))
     {
         Clusters.Add(cluster);
     }
 }
Ejemplo n.º 2
0
        private void BuildClustersMenu()
        {
            Clusters.Clear();

            if (Presentation == null)
            {
                return;
            }

            var transformations = Presentation.GetModule <ITransformationModule>();
            var captions        = Presentation.GetModule <ICaptionModule>();

            var clusters = transformations.Graph.Clusters
                           .Union(Presentation.Graph.Clusters)
                           .Select(c => c.Id)
                           .Distinct()
                           .Select(id => new ClusterWithCaption
            {
                Id      = id,
                Caption = captions.Get(id).DisplayText
            })
                           .OrderBy(id => id.Caption);

            foreach (var cluster in clusters)
            {
                Clusters.Add(cluster);
            }
        }
Ejemplo n.º 3
0
        public void Start()
        {
            Random rand = new Random();

            // On commence par sélectionner un "point" au hasard pour chaque cluster
            for (int i = 0; i < m_clusters; i++)
            {
                Clusters.Add(new Cluster(
                                 i,
                                 new Vector4(
                                     rand.NextFloat(0.0f, 0.8f),
                                     rand.NextFloat(0.0f, 0.8f),
                                     rand.NextFloat(0.0f, 0.8F),
                                     1.0f),
                                 new Vector3(rand.NextFloat(-1.0f, 1.0f), rand.NextFloat(-1.0f, 1.0f), 0.0f)));

                Centroids.Add(new Entity(Entity));
                MeshRenderer meshrenderer = Centroids[i].AddComponent <MeshRenderer>();
                meshrenderer.material_ = new MaterialDX11();
                meshrenderer.material_.SetMainColor(Clusters[i].Color);
                meshrenderer.model_ = Quad.GetMesh();
                Centroids[i].transform_.SetScale(0.05f, 0.05f, 1.0f);
            }

            m_start = true;
        }
Ejemplo n.º 4
0
        public scenario_structure_bsp(CacheBase Cache, CacheBase.IndexItem Tag)
        {
            cache = Cache;
            int          Address = Tag.Offset;
            EndianReader Reader  = Cache.Reader;

            Reader.SeekTo(Address);

            Reader.SeekTo(Address + 68);
            XBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            YBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            ZBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());

            #region Clusters Block
            Reader.SeekTo(Address + 172);
            int iCount  = Reader.ReadInt32();
            int iOffset = Reader.ReadInt32() - Tag.Magic;
            for (int i = 0; i < iCount; i++)
            {
                ModelSections.Add(new ModelSection(Cache, Tag, iOffset + 176 * i, null)
                {
                    FacesIndex = i, VertsIndex = i, NodeIndex = 255
                });
                Clusters.Add(new Cluster(i));
            }
            #endregion

            #region Shaders Block
            Reader.SeekTo(Address + 180);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Tag.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Shaders.Add(new Halo2Xbox.render_model.Shader(Cache, iOffset + 32 * i));
            }
            #endregion

            #region ModelParts Block
            Reader.SeekTo(Address + 328);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Tag.Magic;
            for (int i = 0; i < iCount; i++)
            {
                ModelSections.Add(new ModelSection(Cache, Tag, iOffset + 200 * i, BoundingBoxes)
                {
                    FacesIndex = i + Clusters.Count, VertsIndex = i + Clusters.Count, NodeIndex = 255
                });
            }
            #endregion

            #region GeometryInstances Block
            Reader.SeekTo(Address + 336);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Tag.Magic;
            for (int i = 0; i < iCount; i++)
            {
                GeomInstances.Add(new InstancedGeometry(Cache, iOffset + 88 * i, Clusters.Count));
            }
            #endregion
        }
Ejemplo n.º 5
0
        public void AddCluster(Cluster cluster)
        {
            Guard_SettingMustBeDefinedInDefaults(cluster.AsDictionary());

            if (!Clusters.Contains(cluster))
            {
                Clusters.Add(cluster);
            }
        }
Ejemplo n.º 6
0
        private Cluster CreateOrUpdateCluster(string component)
        {
            if (Clusters.Count(x => x.Label == component) == 0)
            {
                Clusters.Add(new Cluster {
                    Label = component, Nodes = new List <Node>()
                });
            }

            return(Clusters.Where(x => x.Label == component).Single());
        }
Ejemplo n.º 7
0
        public scenario_structure_bsp(CacheBase Cache, CacheBase.IndexItem Tag)
        {
            cache = Cache;
            int          Address = Tag.Offset;
            EndianReader Reader  = Cache.Reader;

            Reader.SeekTo(Address + 0xE0);
            XBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            YBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            ZBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());

            Reader.SeekTo(Address + 0x110);
            indexCount  = Reader.ReadInt32() * 3;
            indexOffset = Reader.ReadInt32() - Tag.Magic;

            #region Lightmaps Block
            Reader.SeekTo(Address + 0x11C);
            int iCount  = Reader.ReadInt32();
            int iOffset = Reader.ReadInt32() - Tag.Magic;
            for (int i = 0; i < iCount; i++)
            {
                ModelSections.Add(new Lightmap(cache, iOffset + 32 * i, Tag.Magic)
                {
                    VertsIndex = i, FacesIndex = i, NodeIndex = 255
                });
            }
            #endregion

            #region Create Shader List
            var sIDs = new List <int>();
            for (int i = 0; i < ModelSections.Count; i++)
            {
                var section = ModelSections[i];
                for (int j = 0; j < section.Submeshes.Count; j++)
                {
                    var mesh = (Lightmap.Material)section.Submeshes[j];

                    if (!sIDs.Contains(mesh.shaderID))
                    {
                        sIDs.Add(mesh.shaderID);
                    }
                    mesh.ShaderIndex = sIDs.IndexOf(mesh.shaderID);
                }
            }
            foreach (int ID in sIDs)
            {
                Shaders.Add(new Shader(ID));
            }
            for (int i = 0; i < ModelSections.Count; i++)
            {
                Clusters.Add(new Cluster(i));
            }
            #endregion
        }
        public NetworkInitializationViewModel(NetworkStructure network, IUnityContainer container)
        {
            _network = network;

            var removeChildElementCommand = new RelayCommand((p) =>
            {
                Clusters.Remove(p as ClusterViewModel);
                InitializeClusterDependencyMatrix();
            });

            _addClusterCommand = new RelayCommand((p) =>
            {
                Clusters.Add(new ClusterViewModel(new Cluster(), removeChildElementCommand));
                InitializeClusterDependencyMatrix();
            });

            _clusterDependecyChangedCommand = new RelayCommand((p) =>
            {
                var dependency = p as Wrapper <bool>;
                if (dependency != null)
                {
                    _network.ClusterDependencyMatrix[dependency.I, dependency.J] = dependency.Value;
                    _network.UpdateNetwork();
                }
            });

            Clusters = new ObservableCollection <ClusterViewModel>(_network.Clusters.Select(c => new ClusterViewModel(c, removeChildElementCommand)));
            ClusterDependencyMatrix = _network.ClusterDependencyMatrix.ToWrappedMatrix();

            Clusters.CollectionChanged += (s, e) =>
            {
                if (e.NewItems != null)
                {
                    var newItems = e.NewItems
                                   .Cast <ClusterViewModel>()
                                   .Select(cv => cv.Cluster);

                    _network.Clusters.AddRange(newItems);
                }

                if (e.OldItems != null)
                {
                    var oldItems = e.OldItems
                                   .Cast <ClusterViewModel>()
                                   .Select(cv => cv.Cluster);

                    foreach (var cluster in oldItems)
                    {
                        _network.Clusters.Remove(cluster);
                    }
                }
            };
        }
Ejemplo n.º 9
0
 private void Initialize()
 {
     //Create all cluster with empty
     for (int i = 0, dec = 2; i < Settings.Settings.NumberCluster; i++, dec++)
     {
         string hexValue = $"0x{dec:X}";
         Clusters.Add(new Cluster
         {
             ClusterFile = new EmptyClusterFile(),
             Address     = hexValue
         });
     }
 }
Ejemplo n.º 10
0
        private void Initialize()
        {
            if (initialized)
            {
                throw new InvalidOperationException("Already initialized!");
            }
            if (log != null && log.IsDebugEnabled)
            {
                log.Debug("Starting Initialize()");
            }

            // Set stuff up
            this.Clusters         = new List <Cluster>();
            this.ClientLoadModule = new ClientLoad();

            // Add any configured clusters in config file?
            if (clientConfig.Clusters != null && clientConfig.Clusters.Count > 0)
            {
                foreach (var cluster in clientConfig.Clusters)
                {
                    lock (_globalLockObject)
                        Clusters.Add(new Cluster(clientConfig)
                        {
                            ClusterUri = cluster
                        });
                }
            }

            // Enable Multicast client
            if (clientConfig.MulticastEnabled)
            {
                StartClusterMulticastClient();
            }

            // Any contexts loaded from config? If so, start them.
            if (clientConfig.RegisteredContextsFromConfig.Count > 0)
            {
                RegisterRoute(clientConfig.RegisteredContextsFromConfig);
            }

            // Done init
            initialized = true;
            if (log != null && log.IsDebugEnabled)
            {
                log.Debug("Done Initialize()");
            }
        }
Ejemplo n.º 11
0
        public async void Get()
        {
            var jData = await DataService.Get("Cluster");

            if (jData == "ConnectionError")
            {
                StandardMessagesDisplay.NoConnectionToast();
            }
            else if (jData == "null")
            {
                StandardMessagesDisplay.NoDataDisplayMessage();
            }
            else if (jData == "Error")
            {
                StandardMessagesDisplay.Error();
            }
            else if (jData == "ErrorTracked")
            {
                StandardMessagesDisplay.ErrorTracked();
            }
            else
            {
                try
                {
                    var data = JsonConvert.DeserializeObject <Dictionary <string, ClusterModel> >(jData);
                    if (data != null)
                    {
                        foreach (KeyValuePair <string, ClusterModel> item in data)
                        {
                            Clusters?.Add(
                                new ClusterModel
                            {
                                ClusterName            = item.Value.ClusterName,
                                CurrentVaccinePeriodId = item.Value.CurrentVaccinePeriodId,
                                Id = item.Value.Id
                            }
                                );
                        }
                    }
                }
                catch (Exception ex)
                {
                    Crashes.TrackError(ex);
                    StandardMessagesDisplay.InputToast(ex.Message);
                }
            }
        }
Ejemplo n.º 12
0
        public KMeans(List <DataPoint> dataPoints, ProcessingData data) : base(dataPoints, data)
        {
            DataPoint tmp = new DataPoint();

            Thread.Sleep(20);
            Random rand = new Random((int)DateTime.Now.Ticks & 0x0000FFFF);

            for (int i = 0; i < ProcessingData.GroupsQuantity; i++)
            {
                for (int j = 0; j < ProcessingData.dimensionQuantity; j++)
                {
                    tmp.Coordinates.Add((rand.Next(0, 60001)) / (double)100);
                }
                Clusters.Add(new Cluster(new DataPoint(tmp)));
                tmp.Coordinates.Clear();
            }
        }
Ejemplo n.º 13
0
        private async Task _setRefinedCenters()
        {
            Random         r       = new Random();
            List <Helper>  helpers = new List <Helper>();
            List <Point>   CM      = new List <Point>();
            double         quality = double.PositiveInfinity;
            List <Cluster> res     = new List <Cluster>();

            for (int j = 0; j < 10; j++)
            {
                helpers.Add(new Helper()
                {
                    UseMahalanobisDistance = false, k = this.k
                });
                for (int i = 0; i < AllPoints.Count / 10; i++)
                {
                    helpers[j].AllPoints.Add(AllPoints[r.Next(0, AllPoints.Count)]);
                }
                await helpers[j].Solve(new Action <Point, int>((p, i) => { }));
                CM.AddRange(helpers[j].AllPoints);
            }
            for (int j = 0; j < 10; j++)
            {
                var clusters = helpers[j].Clusters;
                helpers[j] = new Helper(true)
                {
                    UseMahalanobisDistance = false, k = this.k
                };
                helpers[j].AllPoints = CM;
                await helpers[j]._setConcreteCenters(clusters);

                var qual = await helpers[j].Solve(new Action <Point, int>((p, i) => { }));
                if (qual < quality)
                {
                    quality = qual;
                    res     = helpers[j].Clusters;
                }
            }
            foreach (var clust in res)
            {
                Clusters.Add(new Cluster()
                {
                    Center = clust.Center
                });
            }
        }
Ejemplo n.º 14
0
        private async Task _setRandomCenters()
        {
            Random r       = new Random();
            var    indexes = new List <int>();

            for (int i = 0; i < k; i++)
            {
                Clusters.Add(new Cluster());
                int index = -1;
                do
                {
                    index = r.Next(0, AllPoints.Count);
                }while(indexes.Contains(index));
                indexes.Add(index);
                Clusters[i].Elements.Add(AllPoints[index]);
                await Clusters[i].RefreshCenter();
            }
        }
Ejemplo n.º 15
0
 /// <summary>
 /// 初始化处理集群
 /// </summary>
 private void Init()
 {
     if (Clusters == null)
     {
         Clusters = new Dictionary <string, ProcessingTower <TIn, TOut> >();
     }
     if (Clusters.Count <= 0)
     {
         var pc = 5;//Environment.ProcessorCount;
         for (int i = 0; i < pc; i++)
         {
             Clusters.Add(i.ToString(), new ProcessingTower <TIn, TOut>()
             {
                 ProcessHandle = this.ProcessHandle, ProcessEndHandle = this.ProcessEndHandle, ProcessorID = i, ProcessorKey = i.ToString(), Stop = false
             });
         }
     }
 }
Ejemplo n.º 16
0
        private async Task _setCleverCenters()
        {
            Random r = new Random();

            Clusters.Add(new Cluster());
            Clusters[0].Elements.Add(AllPoints[r.Next(0, AllPoints.Count)]);
            await Clusters[0].RefreshCenter();

            while (Clusters.Count < k)
            {
                double sum = 0;
                foreach (var point in AllPoints)
                {
                    foreach (var cluster in Clusters)
                    {
                        var curDist = await _getDistance(point, cluster.Center);

                        if (point.Distance > curDist)
                        {
                            point.Distance = curDist;
                        }
                    }
                    point.Distance = Math.Pow(point.Distance, 2);
                    sum           += point.Distance;
                }
                var rnd = (double)r.Next(0, 100000) / 100000;
                rnd = rnd * sum;
                sum = 0;
                foreach (var point in AllPoints)
                {
                    if (sum < rnd)
                    {
                        sum += point.Distance;
                    }
                    else
                    {
                        Clusters.Add(new Cluster());
                        Clusters[Clusters.Count - 1].Elements.Add(point);
                        await Clusters[Clusters.Count - 1].RefreshCenter();
                        break;
                    }
                }
            }
        }
Ejemplo n.º 17
0
        private void Initialize()
        {
            var numCluster = Settings.NumberCluster;

            if (numCluster < 3)
            {
                numCluster = 4;
            }
            //Create all cluster with empty
            for (int i = 0, dec = 2; i < numCluster; i++, dec++)
            {
                var hexValue = $"0x{dec:X}";
                Clusters.Add(new Cluster(hexValue)
                {
                    Content = new EmptyContentCluster()
                });
            }
            DiskCapacity  = Settings.NumberCluster * Settings.ClusterSize;
            DiskSpaceUsed = Settings.ClusterSize * 2;
        }
Ejemplo n.º 18
0
        public void Travel(IVirtualDesktop start)
        {
            _global_object_index  = 0;
            _global_cluster_index = 1;

            var result = ParseNode(start);

            Objects   = result.Objects;
            Clusters  = result.Clusters;
            Relations = result.Relations;

            if (result.Element is GraphCluster)
            {
                var cc = result.Element as GraphCluster;
                Clusters.Add(cc);
            }
            else
            {
                Objects.Add(result.Element as GraphObject);
            }
        }
Ejemplo n.º 19
0
        public void PaintWorld(WorldLayer layer)
        {
            if ((Hud.Game.SpecialArea != SpecialArea.Rift) && (Hud.Game.SpecialArea != SpecialArea.GreaterRift) && (Hud.Game.SpecialArea != SpecialArea.ChallengeRift))
            {
                return;
            }

            var monsters = Hud.Game.AliveMonsters.Where(x => (x.SnoMonster != null) && (IncludeOffScreen || x.IsOnScreen) && !((x.SummonerAcdDynamicId != 0) && (x.Rarity == ActorRarity.RareMinion)));

            foreach (var monster in monsters)
            {
                var nearMe = monsters.Where(x => x != monster && x.FloorCoordinate.XYDistanceTo(monster.FloorCoordinate) <= Range);
                Clusters.Add(monster, nearMe.Sum(x => x.SnoMonster.RiftProgression) + monster.SnoMonster.RiftProgression);
            }

            var clusters = 0;

            while (Clusters.Count > 0 && clusters < ClustersMax)
            {
                var cluster = Clusters.Aggregate((l, r) => l.Value > r.Value ? l : r);

                if ((cluster.Value / Hud.Game.MaxQuestProgress * 100d) >= ProgressMin)
                {
                    Decorator.Paint(layer, cluster.Key, cluster.Key.FloorCoordinate, (cluster.Value / Hud.Game.MaxQuestProgress * 100d).ToString("F2", CultureInfo.InvariantCulture) + "%");

                    var nearMeAgain = monsters.Where(x => x.FloorCoordinate.XYDistanceTo(cluster.Key.FloorCoordinate) <= Range * 2f);
                    foreach (var monster in nearMeAgain)
                    {
                        Clusters.Remove(monster);
                    }
                    clusters++;
                }
                else
                {
                    clusters = ClustersMax;
                }
            }

            Clusters.Clear();
        }
Ejemplo n.º 20
0
        public scenario_structure_bsp(CacheBase Cache, int Address)
        {
            cache = Cache;
            EndianReader Reader = Cache.Reader;

            Reader.SeekTo(Address);

            #region sldt ID
            //sldt's sections address will be used instead of the one in sbsp
            int sectionAddress = 0;
            foreach (var item in Cache.IndexItems)
            {
                if (item.ClassCode == "scnr")
                {
                    Reader.SeekTo(item.Offset + 20);
                    int cnt = Reader.ReadInt32();
                    int ptr = Reader.ReadInt32() - Cache.Magic;

                    int bspIndex = 0;

                    for (int i = 0; i < cnt; i++)
                    {
                        Reader.SeekTo(ptr + 108 * i + 12);
                        if (Cache.IndexItems.GetItemByID(Reader.ReadInt32()).Offset == Address)
                        {
                            bspIndex = i;
                            break;
                        }
                    }

                    Reader.SeekTo(item.Offset + 1776 + 12);
                    int sldtID      = Reader.ReadInt32();
                    int sldtAddress = Cache.IndexItems.GetItemByID(sldtID).Offset;

                    Reader.SeekTo(sldtAddress + 4);
                    cnt = Reader.ReadInt32();
                    ptr = Reader.ReadInt32() - Cache.Magic;

                    for (int i = 0; i < cnt; i++)
                    {
                        Reader.SeekTo(ptr + 436 * i + 2);

                        if (Reader.ReadInt16() != bspIndex)
                        {
                            continue;
                        }

                        Reader.SeekTo(ptr + 436 * i + 312);
                        sectionAddress = Reader.ReadInt32() - Cache.Magic;

                        Reader.SeekTo(ptr + 436 * i + 428);
                        geomRawID = Reader.ReadInt32();
                    }

                    break;
                }
            }
            #endregion

            Reader.SeekTo(Address + 60);
            XBounds = new RealBounds(Reader.ReadSingle(), Reader.ReadSingle());
            YBounds = new RealBounds(Reader.ReadSingle(), Reader.ReadSingle());
            ZBounds = new RealBounds(Reader.ReadSingle(), Reader.ReadSingle());

            #region Clusters Block
            Reader.SeekTo(Address + 180);
            int iCount  = Reader.ReadInt32();
            int iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Clusters.Add(new Cluster(Cache, iOffset + 220 * i));
            }
            #endregion

            #region Shaders Block
            Reader.SeekTo(Address + 192);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Shaders.Add(new Halo3Beta.render_model.Shader(Cache, iOffset + 36 * i));
            }
            #endregion

            #region GeometryInstances Block
            Reader.SeekTo(Address + 432);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                GeomInstances.Add(new InstancedGeometry(Cache, iOffset + 120 * i));
            }
            #endregion

            Reader.SeekTo(Address + 580);
            RawID1 = Reader.ReadInt32();

            #region ModelSections Block
            Reader.SeekTo(Address + 740);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                ModelSections.Add(new Halo3Beta.render_model.ModelSection(Cache, sectionAddress + 76 * i));
            }
            #endregion

            #region Bounding Boxes Block
            Reader.SeekTo(Address + 752);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                BoundingBoxes.Add(new Halo3Beta.render_model.BoundingBox(Cache, iOffset + 44 * i));
            }
            #endregion

            Reader.SeekTo(Address + 860);
            RawID2 = Reader.ReadInt32();

            Reader.SeekTo(Address + 892);
            RawID3 = Reader.ReadInt32();
        }
Ejemplo n.º 21
0
 public virtual void AddCluster(ItemCluster <T> input)
 {
     Clusters.Add(input);
 }
Ejemplo n.º 22
0
        public scenario_structure_bsp(CacheBase Cache, int Address)
        {
            cache = Cache;
            EndianReader Reader = Cache.Reader;

            Reader.SeekTo(Address);

            #region sldt/lbsp ID
            //lbsp's sections address will be used instead of the one in sbsp
            int sectionAddress = 0;
            int sectionCount   = 0;
            foreach (var item in Cache.IndexItems)
            {
                if (item.ClassCode == "scnr")
                {
                    Reader.SeekTo(item.Offset + 76);
                    int cnt = Reader.ReadInt32();
                    int ptr = Reader.ReadInt32() - Cache.Magic;

                    int bspIndex = 0;

                    for (int i = 0; i < cnt; i++)
                    {
                        Reader.SeekTo(ptr + 172 * i + 12);
                        if (Cache.IndexItems.GetItemByID(Reader.ReadInt32()).Offset == Address)
                        {
                            bspIndex = i;
                            break;
                        }
                    }

                    Reader.SeekTo(item.Offset + 1844 + 12);
                    int sldtID      = Reader.ReadInt32();
                    int sldtAddress = Cache.IndexItems.GetItemByID(sldtID).Offset;

                    Reader.SeekTo(sldtAddress + 4);
                    cnt = Reader.ReadInt32();
                    ptr = Reader.ReadInt32() - Cache.Magic;

                    Reader.SeekTo(ptr + 32 * bspIndex + 12);
                    int lbspID      = Reader.ReadInt32();
                    int lbspAddress = Cache.IndexItems.GetItemByID(lbspID).Offset;

                    Reader.SeekTo(lbspAddress + 124);
                    sectionCount   = Reader.ReadInt32();
                    sectionAddress = Reader.ReadInt32() - Cache.Magic;

                    Reader.SeekTo(lbspAddress + 268);
                    geomRawID = Reader.ReadInt32();
                    break;
                }
            }
            #endregion

            Reader.SeekTo(Address + 236);
            XBounds = new RealBounds(Reader.ReadSingle(), Reader.ReadSingle());
            YBounds = new RealBounds(Reader.ReadSingle(), Reader.ReadSingle());
            ZBounds = new RealBounds(Reader.ReadSingle(), Reader.ReadSingle());

            #region Clusters Block
            Reader.SeekTo(Address + 308);
            int iCount  = Reader.ReadInt32();
            int iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Clusters.Add(new Cluster(Cache, iOffset + 140 * i));
            }
            #endregion

            #region Shaders Block
            Reader.SeekTo(Address + 320);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Shaders.Add(new ReachRetail.render_model.Shader(Cache, iOffset + 44 * i));
            }
            #endregion

            #region GeometryInstances Block
            Reader.SeekTo(Address + 608);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                GeomInstances.Add(new InstancedGeometry(Cache, iOffset + 4 * i));
            }

            #region Load Fixup Data
            Reader.SeekTo(Address + 1298);
            int id    = Reader.ReadUInt16();
            var entry = Cache.zone.RawEntries[id];
            var er    = new EndianReader(new MemoryStream(Cache.zone.FixupData), EndianFormat.BigEndian);
            int addr  = entry.Fixups[entry.Fixups.Count - 10].Offset;

            for (int i = 0; i < GeomInstances.Count; i++)
            {
                er.SeekTo(entry.FixupOffset + addr + 156 * i);
                var geom = GeomInstances[i];

                geom.TransformScale = er.ReadSingle();

                geom.TransformMatrix.m11 = er.ReadSingle();
                geom.TransformMatrix.m12 = er.ReadSingle();
                geom.TransformMatrix.m13 = er.ReadSingle();

                geom.TransformMatrix.m21 = er.ReadSingle();
                geom.TransformMatrix.m22 = er.ReadSingle();
                geom.TransformMatrix.m23 = er.ReadSingle();

                geom.TransformMatrix.m31 = er.ReadSingle();
                geom.TransformMatrix.m32 = er.ReadSingle();
                geom.TransformMatrix.m33 = er.ReadSingle();

                geom.TransformMatrix.m41 = er.ReadSingle();
                geom.TransformMatrix.m42 = er.ReadSingle();
                geom.TransformMatrix.m43 = er.ReadSingle();

                er.ReadUInt16();
                er.ReadUInt16();
                er.ReadUInt16();
                geom.SectionIndex = er.ReadUInt16();
            }
            er.Close();
            er.Dispose();
            #endregion
            #endregion

            Reader.SeekTo(Address + 796);
            RawID1 = Reader.ReadInt32();

            Reader.SeekTo(Address + 976);
            RawID2 = Reader.ReadInt32();

            #region ModelParts Block
            Reader.SeekTo(Address + 1100);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            if (sectionAddress == -Cache.Magic)
            {
                sectionAddress = iOffset;                                 //null address in lbsp
            }
            for (int i = 0; i < iCount; i++)
            {
                ModelSections.Add(new ReachRetail.render_model.ModelSection(Cache, sectionAddress + 92 * i));
            }
            #endregion

            #region Bounding Boxes Block
            Reader.SeekTo(Address + 1112);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                BoundingBoxes.Add(new ReachRetail.render_model.BoundingBox(Cache, iOffset + 52 * i));
            }
            #endregion

            Reader.SeekTo(Address + 1244);
            RawID3 = Reader.ReadInt32();
        }
Ejemplo n.º 23
0
        public scenario_structure_bsp(CacheBase Cache, int Address)
        {
            cache = Cache;
            EndianReader Reader = Cache.Reader;

            Reader.SeekTo(Address);

            #region sldt/lbsp ID
            //lbsp's sections address will be used instead of the one in sbsp
            int sectCount = 0, sectionAddress = 0, bbCount = 0, bbAddr = 0;
            foreach (var item in Cache.IndexItems)
            {
                if (item.ClassCode == "scnr")
                {
                    Reader.SeekTo(item.Offset + 160);
                    int cnt = Reader.ReadInt32();
                    int ptr = Reader.ReadInt32() - Cache.Magic;

                    int bspIndex = 0;

                    for (int i = 0; i < cnt; i++)
                    {
                        Reader.SeekTo(ptr + 336 * i + 12);
                        if (Cache.IndexItems.GetItemByID(Reader.ReadInt32()).Offset == Address)
                        {
                            bspIndex = i;
                            break;
                        }
                    }

                    Reader.SeekTo(item.Offset + 1896 + 12);
                    int sldtID      = Reader.ReadInt32();
                    int sldtAddress = Cache.IndexItems.GetItemByID(sldtID).Offset;

                    Reader.SeekTo(sldtAddress + 4);
                    cnt = Reader.ReadInt32();
                    ptr = Reader.ReadInt32() - Cache.Magic;

                    Reader.SeekTo(ptr + 32 * bspIndex + 12);
                    int lbspID      = Reader.ReadInt32();
                    int lbspAddress = Cache.IndexItems.GetItemByID(lbspID).Offset;

                    Reader.SeekTo(lbspAddress + 320); //320, 512, 692
                    sectCount      = Reader.ReadInt32();
                    sectionAddress = Reader.ReadInt32() - Cache.Magic;

                    Reader.SeekTo(lbspAddress + 344); //344, 536, 716
                    bbCount = Reader.ReadInt32();
                    bbAddr  = Reader.ReadInt32() - Cache.Magic;

                    Reader.SeekTo(lbspAddress + 464); //464, 656, 836
                    geomRawID = Reader.ReadInt32();
                    break;
                }
            }
            #endregion

            Reader.SeekTo(Address + 268);
            XBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            YBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            ZBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());

            #region Clusters Block
            Reader.SeekTo(Address + 340);
            int iCount  = Reader.ReadInt32();
            int iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < 1; i++)
            {
                Clusters.Add(new Cluster(Cache, iOffset + 140 * i));
            }
            #endregion

            #region Shaders Block
            Reader.SeekTo(Address + 352);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Shaders.Add(new Halo4Retail.render_model.Shader(Cache, iOffset + 44 * i));
            }
            #endregion

            #region GeometryInstances Block
            Reader.SeekTo(Address + 640);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                GeomInstances.Add(new InstancedGeometry(Cache, iOffset + 4 * i));
            }

            #region Load Fixup Data
            Reader.SeekTo(Address + 1364);
            int id    = Reader.ReadInt32();
            var entry = Cache.zone.RawEntries[id & 0xFFFF];
            var er    = new EndianReader(new MemoryStream(Cache.GetRawFromID(id)), EndianFormat.Big);
            int addr  = entry.Fixups[entry.Fixups.Count - 10].Offset;

            for (int i = 0; i < GeomInstances.Count; i++)
            {
                er.SeekTo(addr + 148 * i);
                var geom = GeomInstances[i];

                geom.TransformScale = er.ReadSingle();

                geom.TransformMatrix = Matrix4x3.Read(er);

                er.ReadUInt16();
                er.ReadUInt16();
                er.ReadInt32();
                er.ReadUInt16();
                geom.SectionIndex = er.ReadUInt16();
            }
            er.Close();
            er.Dispose();
            #endregion
            #endregion

            Reader.SeekTo(Address + 844);
            RawID1 = Reader.ReadInt32();

            Reader.SeekTo(Address + 1048);
            RawID2 = Reader.ReadInt32();

            #region ModelSections Block
            Reader.SeekTo(Address + 1144);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            if (sectionAddress == -Cache.Magic)
            {
                sectionAddress = iOffset;                                 //null address in lbsp
            }
            for (int i = 0; i < sectCount; i++)
            {
                ModelSections.Add(new Halo4Retail.render_model.ModelSection(Cache, sectionAddress + 112 * i));
            }
            #endregion

            #region Bounding Boxes Block
            Reader.SeekTo(Address + 1168);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < bbCount; i++)
            {
                BoundingBoxes.Add(new Halo4Retail.render_model.BoundingBox(Cache, bbAddr + 52 * i));
            }
            #endregion

            Reader.SeekTo(Address + 1288);
            RawID3 = Reader.ReadInt32();
        }
Ejemplo n.º 24
0
        private async Task _setSampledCenters()
        {
            double sum = 0;
            Random r   = new Random();

            Clusters.Add(new Cluster()
            {
                Center = AllPoints[0]
            });
            Clusters.Add(new Cluster()
            {
                Center = AllPoints[1]
            });
            double centerDist = await _getDistance(Clusters[0].Center, Clusters[1].Center);

            for (int i = 0; i < AllPoints.Count - 1; i++)
            {
                for (int j = i + 1; j < AllPoints.Count; j++)
                {
                    var norm = await _getDistance(AllPoints[i], AllPoints[j]);

                    if (norm > centerDist)
                    {
                        AllPoints[i].Distance = norm;
                        sum       += norm;
                        centerDist = norm;
                    }
                }
            }
            var rnd = (double)r.Next(0, 100000) / 100000;

            rnd = rnd * sum;
            sum = 0;
            foreach (var point in AllPoints)
            {
                if (sum < rnd)
                {
                    sum += point.Distance;
                }
                else
                {
                    Clusters[0].Center = point;
                    break;
                }
            }
            sum = 0;
            foreach (var point in AllPoints)
            {
                if (sum < rnd)
                {
                    sum += point.Distance;
                }
                else
                {
                    Clusters[1].Center = point;
                    break;
                }
            }

            while (Clusters.Count < k)
            {
                sum = 0;
                double min = double.NegativeInfinity;
                foreach (var point in AllPoints)
                {
                    point.Distance = 0;
                    foreach (var cluster in Clusters)
                    {
                        var norm = await _getDistance(point, cluster.Center);

                        if (norm > min)
                        {
                            min            = norm;
                            point.Distance = norm;
                            sum           += norm;
                        }
                    }
                }
                rnd = (double)r.Next(0, 100000) / 100000;
                rnd = rnd * sum;
                sum = 0;
                foreach (var point in AllPoints)
                {
                    if (sum < rnd)
                    {
                        sum += point.Distance;
                    }
                    else
                    {
                        Clusters.Add(new Cluster()
                        {
                            Center = point
                        });
                        break;
                    }
                }
            }
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Adds or updates a kubecontext.
        /// </summary>
        /// <param name="context">The new context.</param>
        /// <param name="cluster">The context cluster information.</param>
        /// <param name="user">The context user information.</param>
        /// <param name="noSave">Optionally prevent context save after the change.</param>
        public void SetContext(KubeConfigContext context, KubeConfigCluster cluster, KubeConfigUser user, bool noSave = false)
        {
            Covenant.Requires <ArgumentNullException>(context != null, nameof(context));
            Covenant.Requires <ArgumentNullException>(cluster != null, nameof(cluster));
            Covenant.Requires <ArgumentNullException>(user != null, nameof(user));
            Covenant.Requires <ArgumentNullException>(context.Properties.Cluster == cluster.Name, nameof(context));
            Covenant.Requires <ArgumentNullException>(context.Properties.User == user.Name, nameof(context));

            var updated = false;

            for (int i = 0; i < Contexts.Count; i++)
            {
                if (Contexts[i].Name == context.Name)
                {
                    Contexts[i] = context;
                    updated     = true;
                    break;
                }
            }

            if (!updated)
            {
                Contexts.Add(context);
            }

            // We also need to add or update the referenced cluster and user properties.

            updated = false;

            for (int i = 0; i < Clusters.Count; i++)
            {
                if (Clusters[i].Name == context.Properties.Cluster)
                {
                    Clusters[i] = cluster;
                    updated     = true;
                    break;
                }
            }

            if (!updated)
            {
                Clusters.Add(cluster);
            }

            updated = false;

            for (int i = 0; i < Users.Count; i++)
            {
                if (Users[i].Name == context.Properties.User)
                {
                    Users[i] = user;
                    updated  = true;
                    break;
                }
            }

            if (!updated)
            {
                Users.Add(user);
            }

            // Persist as required.

            if (!noSave)
            {
                Save();
            }
        }
Ejemplo n.º 26
0
        private void ClusterMulticastClientReceive(IAsyncResult ar)
        {
            byte[] received = null;

            try
            {
                // Closing?
                if (clusterMulticastClient == null)
                {
                    return;
                }

                // Receive message
                try
                {
                    received = clusterMulticastClient.EndReceive(ar, ref clusterMulticastClientEndPoint);
                    //	if (log != null && log.IsDebugEnabled) log.Info("Multicast received from " + clusterMulticastClientEndPoint.Address.ToString() + ": " + received.GetString());
                }
                catch (NullReferenceException) { }
                catch (ObjectDisposedException) { return; }
                catch (Exception ex) { if (log != null && log.IsErrorEnabled)
                                       {
                                           log.Error("ClusterMulticastClientReceive() fail", ex);
                                       }
                }

                // This may fall thru here if disposing or quitting
                if (disposed)
                {
                    return;
                }

                // Empty? Quit.
                if (received == null)
                {
                    return;
                }

                try
                {
                    // Ignoring message?
                    if (!clientConfig.MulticastEnabled)
                    {
                        return;
                    }

                    // Process received message
                    // Message looks like the following:
                    //  HTTP/1.0 200 OK
                    //  Date: Wed, 30 Apr 2014 15:23:38 GMT
                    //  Sequence: 77
                    //  Digest: 29da46a8d26397116bcb0a8d06e73a89
                    //  Server: c70d84cb-5f51-8544-885d-b2a1451b9aba
                    //  X-Manager-Address: 127.0.0.1:6666
                    //  X-Manager-Url: /c70d84cb-5f51-8544-885d-b2a1451b9aba
                    //  X-Manager-Protocol: http
                    //  X-Manager-Host: myservername
                    string httpCode = received.GetString().Split('\n')[0];
                    if (!(httpCode.StartsWith("HTTP/1.0 200 OK") || httpCode.StartsWith("HTTP/1.1 200 OK")))
                    {
                        Dictionary <string, string> goneDataDict = received.ToDictionary();
                        Cluster goodByeCluster = Clusters.Where(c => c.MulticastServerId == goneDataDict["Server"]).FirstOrDefault();
                        if (goodByeCluster != null)
                        {
                            if (log.IsDebugEnabled)
                            {
                                log.Debug("ClusterMulticastClient caught server " + goodByeCluster.ClusterUri + " (" + goneDataDict["Server"] + ") is going away");
                            }
                            goodByeCluster.RouteRegistered = false;
                        }
                        else
                        {
                            if (log.IsDebugEnabled)
                            {
                                log.Debug("ClusterMulticastClient caught server " + goneDataDict["Server"] + " is going away");
                            }
                        }
                        return;
                    }
                    Dictionary <string, string> dataDict = received.ToDictionary();
                    Uri clusterUri = null;
                    try { clusterUri = dataDict.GetUriFromBroadcast(); }
                    catch (Exception ex)
                    {
                        if (log.IsDebugEnabled)
                        {
                            log.Debug("ClusterMulticastClient got data that created an invalid uri. Cannot autoregister.", ex);
                        }
                        return;
                    }

                    // Scan to see if we need to add it
                    if (Clusters.Count(c => c.ClusterUri.ToString() == clusterUri.ToString()) > 0)
                    {
                        return;
                    }
                    if (log != null && log.IsInfoEnabled)
                    {
                        log.Info("Multicast received, registering to " + clusterUri);
                    }

                    lock (_globalLockObject)
                    {
                        // Do not start on cluster if no contexts are registered
                        if (clientConfig.RegisteredContexts.Count() + clientConfig.RegisteredContextsFromConfig.Count() == 0)
                        {
                            if (log.IsDebugEnabled)
                            {
                                log.Debug("ClusterMulticastClient did not auto-register cluster " + clusterUri
                                          + " because there are no contexts to register, will try again on next multicast receive");
                            }
                            return;
                        }

                        // Initialize New Cluster
                        try
                        {
                            Cluster cluster = new Cluster(clientConfig)
                            {
                                ClusterUri = clusterUri, MulticastServerId = dataDict["Server"]
                            };
                            cluster.RegisterRoute(clientConfig.RegisteredContexts.Union(clientConfig.RegisteredContextsFromConfig).Distinct());
                            Clusters.Add(cluster);
                        }
                        catch (Exception ex)
                        {
                            log.Error("ClusterMulticastClient could not auto-register cluster " + clusterUri + ", will try again on next multicast receive", ex);
                            return;
                        }
                    }
                }
                finally
                {
                    // Listen for the next message
                    clusterMulticastClient.BeginReceive(new AsyncCallback(ClusterMulticastClientReceive), null);
                }
            }
            catch (Exception ex)
            {
                if (log != null && log.IsErrorEnabled)
                {
                    log.Error("ClusterMulticastClientReceive() unhandled exception", ex);
                }
            }
        }
Ejemplo n.º 27
0
        private bool TryMergeClusters(int slaMaxPing)
        {
            if (Clusters.Count < 2)
            {
                return(false);
            }

            //perhaps work with average ping from one's members to the other's's?
            //remove doubles that are reversed
            //and try to implement the "geo-near" bit here to reduce all the possible combos
            var closestOrdered = Clusters.SelectMany(cl1 => Clusters.Select(cl2 => new Tuple <double, Cluster, Cluster>(cl1.FogNode.Distance(cl2.FogNode), cl1, cl2))).Where(t => t.Item2 != t.Item3 && t.Item1 < slaMaxPing).OrderBy(t => t.Item1).ToList();

            var idx    = 0;
            var merged = false;

            while (!merged && idx < closestOrdered.Count())
            {
                //Console.WriteLine("Trying to merge cluster " + closestOrdered[idx].Item2 + " and " + closestOrdered[idx].Item3);
                var mergedCluster1 = SimulateMerge(closestOrdered[idx].Item2, closestOrdered[idx].Item3, slaMaxPing);
                var mergedCluster2 = SimulateMerge(closestOrdered[idx].Item3, closestOrdered[idx].Item2, slaMaxPing);

                Cluster mergedCluster = null;
                //determine best avg ping between the 2
                if (mergedCluster1 != null && mergedCluster2 != null)
                {
                    if (mergedCluster1.Nodes.Count == 0)
                    {
                        mergedCluster = mergedCluster1;
                    }
                    else
                    {
                        //Console.WriteLine("Both recombinations possible, finding best avg ping");
                        var avgCluster1Ping = mergedCluster1.Nodes.Average(n => n.Pings[mergedCluster1.FogNode]);
                        var avgCluster2Ping = mergedCluster2.Nodes.Average(n => n.Pings[mergedCluster2.FogNode]);
                        //Console.WriteLine("Avg ping combo 1 " + avgCluster1Ping + " Avg ping combo 2 " + avgCluster2Ping);
                        if (avgCluster1Ping < avgCluster2Ping)
                        {
                            mergedCluster = mergedCluster1;
                        }
                        else
                        {
                            mergedCluster = mergedCluster2;
                        }
                    }
                }
                else
                {
                    //otherwise take the one not null, or either one if both null
                    mergedCluster = mergedCluster1 == null ? mergedCluster2 : mergedCluster1;
                }

                if (mergedCluster != null)
                {
                    //Console.WriteLine("Merge successful, merging into " + mergedCluster);
                    merged = true;
                    Clusters.Remove(closestOrdered[idx].Item2);
                    Clusters.Remove(closestOrdered[idx].Item3);
                    Clusters.Add(mergedCluster);
                }
                idx++;
            }
            return(merged);
        }
Ejemplo n.º 28
0
        public scenario_structure_bsp(CacheBase Cache, int Address)
        {
            cache = Cache;
            EndianReader Reader = Cache.Reader;

            Reader.SeekTo(Address);

            #region sldt/lbsp ID
            //lbsp's sections address will be used instead of the one in sbsp
            int sectionAddress = 0;
            foreach (var item in Cache.IndexItems)
            {
                if (item.ClassCode == "scnr")
                {
                    Reader.SeekTo(item.Offset + 68);
                    int cnt = Reader.ReadInt32();
                    int ptr = Reader.ReadInt32() - Cache.Magic;

                    int bspIndex = 0;

                    for (int i = 0; i < cnt; i++)
                    {
                        Reader.SeekTo(ptr + 168 * i + 12);
                        if (Cache.IndexItems.GetItemByID(Reader.ReadInt32()).Offset == Address)
                        {
                            bspIndex = i;
                            break;
                        }
                    }

                    Reader.SeekTo(item.Offset + 1828 + 12);
                    int sldtID      = Reader.ReadInt32();
                    var sldt        = Cache.IndexItems.GetItemByID(sldtID);
                    int sldtAddress = Cache.IndexItems.GetItemByID(sldtID).Offset;

                    Reader.SeekTo(sldtAddress + 4);
                    cnt = Reader.ReadInt32();
                    ptr = Reader.ReadInt32() - Cache.Magic;

                    Reader.SeekTo(ptr + 32 * bspIndex + 12);
                    int lbspID      = Reader.ReadInt32();
                    var lbsp        = Cache.IndexItems.GetItemByID(lbspID);
                    int lbspAddress = Cache.IndexItems.GetItemByID(lbspID).Offset;

                    Reader.SeekTo(lbspAddress + 116);
                    sectionAddress = Reader.ReadInt32() - Cache.Magic;

                    Reader.SeekTo(lbspAddress + 244);
                    geomRawID = Reader.ReadInt32();
                    break;
                }
            }
            #endregion

            Reader.SeekTo(Address + 236);
            XBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            YBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());
            ZBounds = new Range <float>(Reader.ReadSingle(), Reader.ReadSingle());

            #region Clusters Block
            Reader.SeekTo(Address + 308);
            int iCount  = Reader.ReadInt32();
            int iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Clusters.Add(new Cluster(Cache, iOffset + 288 * i));
            }
            #endregion

            #region Shaders Block
            Reader.SeekTo(Address + 320);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                Shaders.Add(new ReachBeta.render_model.Shader(Cache, iOffset + 44 * i));
            }
            #endregion

            #region GeometryInstances Block
            Reader.SeekTo(Address + 620);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                GeomInstances.Add(new InstancedGeometry(Cache, iOffset + 168 * i));
            }
            #endregion

            Reader.SeekTo(Address + 796);
            RawID1 = Reader.ReadInt32();

            Reader.SeekTo(Address + 976);
            RawID2 = Reader.ReadInt32();

            #region ModelParts Block
            Reader.SeekTo(Address + 1112);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                ModelSections.Add(new ReachBeta.render_model.ModelSection(Cache, sectionAddress + 92 * i));
            }
            #endregion

            #region Bounding Boxes Block
            Reader.SeekTo(Address + 1124);
            iCount  = Reader.ReadInt32();
            iOffset = Reader.ReadInt32() - Cache.Magic;
            for (int i = 0; i < iCount; i++)
            {
                BoundingBoxes.Add(new ReachBeta.render_model.BoundingBox(Cache, iOffset + 52 * i));
            }
            #endregion

            Reader.SeekTo(Address + 1244);
            RawID3 = Reader.ReadInt32();
        }