Example #1
0
        public void ProcessManager(EntityManager manager, int deltaSeconds)
        {
            var      orbits = manager.GetAllDataBlobsOfType <OrbitUpdateOftenDB>(OrbitTypeIndex);
            DateTime toDate = manager.ManagerSubpulses.StarSysDateTime + TimeSpan.FromSeconds(deltaSeconds);

            foreach (var orbit in orbits)
            {
                UpdateOrbit(orbit, toDate);
            }
        }
Example #2
0
        public void ProcessManager(EntityManager manager, int deltaSeconds)
        {
            var blobs = manager.GetAllDataBlobsOfType <GenericFiringWeaponsDB>();

            //when firing weapons we need to have the parent in the right place.
            //orbits don't update every subtick, so we update just this entity for this tick, if it's an orbiting entity.
            foreach (var blob in blobs)
            {
                var entity = blob.OwningEntity; //
                if (entity.HasDataBlob <OrbitDB>())
                {
                    var fastBlob = new OrbitUpdateOftenDB(entity.GetDataBlob <OrbitDB>());
                    entity.RemoveDataBlob <OrbitDB>();
                    entity.SetDataBlob(fastBlob);
                }
                List <Entity> targets = new List <Entity>();
                for (int i = 0; i < blob.FireControlStates.Length; i++)
                {
                    var tgt = blob.FireControlStates[i].Target;
                    if (!targets.Contains(tgt))
                    {
                        targets.Add(tgt);
                    }
                }
                foreach (var tgt in targets)
                {
                    if (tgt.HasDataBlob <OrbitDB>())
                    {
                        var fastBlob = new OrbitUpdateOftenDB(tgt.GetDataBlob <OrbitDB>());
                        tgt.RemoveDataBlob <OrbitDB>();
                        tgt.SetDataBlob(fastBlob);
                    }
                }
            }

            foreach (GenericFiringWeaponsDB blob in blobs)
            {
                ProcessReloadWeapon(blob);
            }
            foreach (GenericFiringWeaponsDB blob in blobs)
            {
                ProcessWeaponFire(blob);
            }

            foreach (var blob in blobs)
            {
                UpdateReloadState(blob);
            }
        }