public void Load(MyObjectBuilder_AutomaticBehaviour objectBuilder, MyRemoteControl remoteControl)
        {
            MyObjectBuilder_DroneStrafeBehaviour builder = objectBuilder as MyObjectBuilder_DroneStrafeBehaviour;

            if (builder != null)
            {
                m_remoteControl = remoteControl;

                MySpaceStrafeData strafeData = MySpaceStrafeDataStatic.LoadPreset(builder.CurrentPreset);
                m_currentPreset = builder.CurrentPreset;
                LoadStrafeData(strafeData);

                m_lastTargetUpdate      = MySandboxGame.TotalGamePlayTimeInMilliseconds;
                m_lastWeaponUpdate      = m_lastTargetUpdate;
                m_waypointReachedTimeMs = m_lastTargetUpdate;

                m_forcedWaypoints   = new List <MyEntity>();
                m_loadWaypointList  = builder.WaypointList;
                m_targetsList       = new List <DroneTarget>();
                m_loadTargetList    = builder.TargetList;
                m_currentTarget     = null;
                m_loadCurrentTarget = builder.CurrentTarget;

                m_returnPosition              = builder.ReturnPosition;
                PlayerPriority                = builder.PlayerPriority;
                m_prioritizationStyle         = builder.PrioritizationStyle;
                MaxPlayerDistance             = builder.MaxPlayerDistance;
                m_cycleWaypoints              = builder.CycleWaypoints;
                m_alternativebehaviorSwitched = builder.AlternativebehaviorSwitched;
                CollisionAvoidance            = builder.CollisionAvoidance;
                m_canSkipWaypoint             = builder.CanSkipWaypoint;

                NeedUpdate     = builder.NeedUpdate;
                IsActive       = builder.IsActive;
                m_loadEntities = true;
            }
        }
        public MyObjectBuilder_AutomaticBehaviour GetObjectBuilder()
        {
            MyObjectBuilder_DroneStrafeBehaviour builder = new MyObjectBuilder_DroneStrafeBehaviour();

            builder.CollisionAvoidance  = CollisionAvoidance;
            builder.CurrentTarget       = m_currentTarget != null ? m_currentTarget.EntityId : 0;
            builder.CycleWaypoints      = m_cycleWaypoints;
            builder.IsActive            = IsActive;
            builder.MaxPlayerDistance   = m_maxPlayerDistance;
            builder.NeedUpdate          = NeedUpdate;
            builder.PlayerPriority      = PlayerPriority;
            builder.PrioritizationStyle = m_prioritizationStyle;
            builder.TargetList          = new List <VRage.Game.ObjectBuilders.AI.MyObjectBuilder_AutomaticBehaviour.DroneTargetSerializable>();
            foreach (var target in m_targetsList)
            {
                if (target.Target != null)
                {
                    builder.TargetList.Add(new VRage.Game.ObjectBuilders.AI.MyObjectBuilder_AutomaticBehaviour.DroneTargetSerializable(target.Target.EntityId, target.Priority));
                }
            }
            builder.WaypointList = new List <long>();
            foreach (var waypoint in m_forcedWaypoints)
            {
                if (waypoint != null)
                {
                    builder.WaypointList.Add(waypoint.EntityId);
                }
            }

            builder.CurrentPreset = m_currentPreset;
            builder.AlternativebehaviorSwitched = m_alternativebehaviorSwitched;
            builder.ReturnPosition  = m_returnPosition;
            builder.CanSkipWaypoint = m_canSkipWaypoint;

            return(builder);
        }