Example #1
0
        public static void StartNonNewtTranslation(Entity entity)
        {
            var moveDB     = entity.GetDataBlob <WarpMovingDB>();
            var warpDB     = entity.GetDataBlob <WarpAbilityDB>();
            var positionDB = entity.GetDataBlob <PositionDB>();
            var maxSpeedMS = warpDB.MaxSpeed;
            var powerDB    = entity.GetDataBlob <EnergyGenAbilityDB>();

            EnergyGenProcessor.EnergyGen(entity, entity.StarSysDateTime);
            positionDB.SetParent(null);
            Vector3 targetPosMt       = moveDB.ExitPointAbsolute;
            Vector3 currentPositionMt = positionDB.AbsolutePosition_m;

            Vector3 postionDelta  = currentPositionMt - targetPosMt;
            double  totalDistance = postionDelta.Length();

            var    creationCost = warpDB.BubbleCreationCost;
            var    t            = totalDistance / warpDB.MaxSpeed;
            var    tcost        = t * warpDB.BubbleSustainCost;
            double estored      = powerDB.EnergyStored[warpDB.EnergyType];

            if (creationCost <= estored)
            {
                var currentVelocityMS = Vector3.Normalise(targetPosMt - currentPositionMt) * maxSpeedMS;
                warpDB.CurrentVectorMS             = currentVelocityMS;
                moveDB.CurrentNonNewtonionVectorMS = currentVelocityMS;
                moveDB.LastProcessDateTime         = entity.Manager.ManagerSubpulses.StarSysDateTime;

                //estore = (estore.stored - creationCost, estore.maxStore);
                powerDB.AddDemand(creationCost, entity.StarSysDateTime);
                powerDB.AddDemand(-creationCost, entity.StarSysDateTime + TimeSpan.FromSeconds(1));
                powerDB.AddDemand(warpDB.BubbleSustainCost, entity.StarSysDateTime + TimeSpan.FromSeconds(1));
                //powerDB.EnergyStore[warpDB.EnergyType] = estore;
            }
        }
Example #2
0
 private void ManagerSubpulses_SystemDateChangedEvent(DateTime newdate)
 {
     //if we are looking at this, then we should process it even if nothing has changed.
     if (IsActive && CanActive)
     {
         if (_energyGenDB.dateTimeLastProcess != newdate)
         {
             EnergyGenProcessor.EnergyGen(_entityState.Entity, newdate);
         }
     }
 }
Example #3
0
 public override void OnSystemTickChange(DateTime newDateTime)
 {
     //if we are looking at this, then we should process it even if nothing has changed.
     if (IsActive && CanActive)
     {
         if (_energyGenDB.dateTimeLastProcess != newDateTime)
         {
             EnergyGenProcessor.EnergyGen(_entityState.Entity, newDateTime);
         }
     }
 }