fBaseXtensions.Cache.Internal.Objects.CacheObject.UpdatePosition C# (CSharp) Method

UpdatePosition() public method

public UpdatePosition ( bool force = false ) : void
force bool
return void
        public virtual void UpdatePosition(bool force = false)
        {
            if (!force || (UnitPropertyFlags.HasValue && ObjectCache.CheckFlag(UnitPropertyFlags.Value, UnitFlags.Stationary)))
            {
                double lastUpdated=DateTime.Now.Subtract(lastUpdatedPosition).TotalMilliseconds;

                if (UnitPropertyFlags.HasValue && ObjectCache.CheckFlag(UnitPropertyFlags.Value, UnitFlags.Stationary) && lastUpdated < 100000)
                    return;

                if (lastUpdated < 150)
                    return;
            }

            using (ZetaDia.Memory.AcquireFrame())
            {

                try
                {
                    Position = ref_DiaObject.Position;
                }
                catch
                {
                    Logger.Write(LogLevel.Cache, "Safely Handled Updating Position for Object {0}", InternalName);
                }
                lastUpdatedPosition = DateTime.Now;
                positionUpdated = true;
            }

            //Special Position Adjustment!
            if (UnitPropertyFlags.HasValue && ObjectCache.CheckFlag(UnitPropertyFlags.Value, UnitFlags.Stationary))
            {
                UpdateRotation();

                float distance = ActorSphereRadius.HasValue ? ActorSphereRadius.Value
                                      : CollisionRadius.HasValue ? CollisionRadius.Value : Radius;

                Vector3 curPosition = Position;
                Position=MathEx.GetPointAt(curPosition, distance, Rotation);
            }
        }