Exemple #1
0
        private void GetRoomAndSpawnID(WScene scene, out byte room, out byte spawn)
        {
            room  = 0;
            spawn = 0;

            Selection <WDOMNode> selected = null;

            if (scene.World.CurrentMode is ActorMode)
            {
                ActorMode mode = scene.World.CurrentMode as ActorMode;
                selected = mode.EditorSelection;
            }

            if (selected != null && selected.PrimarySelectedObject is SpawnPoint)
            {
                SpawnPoint spawn_pt = (SpawnPoint)selected.PrimarySelectedObject;

                room  = spawn_pt.Room;
                spawn = spawn_pt.SpawnIndex;
            }
            else
            {
                room = GetRoomNumberFromSceneName(scene.Name);
            }
        }
Exemple #2
0
        private void Select_Button_Click(object sender, RoutedEventArgs e)
        {
            if (ActorReference == null || ActorReference.World.CurrentMode.GetType() != typeof(ActorMode))
            {
                return;
            }

            ActorMode mode = ActorReference.World.CurrentMode as ActorMode;
            var       s    = mode.EditorSelection;

            s.ClearSelection();
            s.AddToSelection(ActorReference);
        }
Exemple #3
0
        private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            if (m_ignoreSelectionChange || e.NewValue == null || m_viewModel.WindEditor.MainWorld.CurrentMode.GetType() != typeof(ActorMode))
            {
                return;
            }

            ActorMode mode      = m_viewModel.WindEditor.MainWorld.CurrentMode as ActorMode;
            var       selection = mode.EditorSelection;

            m_ignoreSelectionChange = true;
            selection.ClearSelection();
            selection.AddToSelection(e.NewValue as WDOMNode);
            m_ignoreSelectionChange = false;
        }
Exemple #4
0
        public WWorld()
        {
            m_dtStopwatch     = new System.Diagnostics.Stopwatch();
            m_persistentLines = new WLineBatcher();
            m_undoStack       = new WUndoStack();
            //m_actorEditor = new WActorEditor(this);

            m_ActorMode     = new ActorMode(this);
            m_CollisionMode = new CollisionMode(this);

            CurrentMode = m_ActorMode;

            m_sceneViews = new List <WSceneView>();

            WSceneView perspectiveView = new WSceneView();

            m_sceneViews.AddRange(new[] { perspectiveView });
        }
 public ActorPropertyAbility(Serializable.EntityPropertyInfomation property , Serializable.EntityLookInfomation look)
 {
     _Property = property;
     _Look = look;
     _Mode = ActorMode.Explore;
     _Updater = new Utility.Updater();
     _ExpendEnergy = false;
 }
 void IActorPropertyAbility.ChangeMode()
 {
     if (_Mode == ActorMode.Alert)
         _Mode = ActorMode.Explore;
     else
         _Mode = ActorMode.Alert;
 }
        private void _LeftMouseButtonDown( MouseEventArgs e )
        {
            ActorEd actor;

            if( !Global.SelectedLevel2.SelectedLayer.Locked )
            {
                if( Global.Tools.IsSelectionMode )
                {
                    actor = GetActor( e.X, e.Y );

                    if( actor != null )
                    {
                        if( Control.ModifierKeys == Keys.Shift )
                        {
                            if( _selectedActors.Contains( actor ) )
                                UnselectActor( actor );
                            else
                                SelectActor( actor, true );
                        }
                        else if( !_selectedActors.Contains( actor ) )
                            SelectActor( actor, false );

                        _moveMode = MouseMoveMode.Actor;

                        _actorMode = GetActorMode( actor, e.X, e.Y );
                        _mouseFirstPos = new Point( e.X, e.Y );
                        _actorInitialScale = actor.Scale;
                        Vector2 mousePos = Helper.ScreenToWorldPosition( Camera, e.X, e.Y );
                        _actorPrevRotation = (float)Math.Atan2( actor.Position.Y - mousePos.Y, actor.Position.X - mousePos.X );
                    }
                    else
                    {
                        UnselectAllActors( );
                        _moveMode = MouseMoveMode.Selection;
                        Vector2 pos = Helper.ScreenToWorldPosition( Camera, e.X, e.Y );
                        _selectionBox.X = (int)pos.X;
                        _selectionBox.Y = (int)pos.Y;
                    }
                }
                else
                {
                    _moveMode = MouseMoveMode.Create;
                }
            }
        }
        private void GetRoomAndSpawnID(WScene scene, out int room, out int spawn)
        {
            room  = 0;
            spawn = 0;

            Selection <WDOMNode> selected = null;

            if (scene.World.CurrentMode is ActorMode)
            {
                ActorMode mode = scene.World.CurrentMode as ActorMode;
                selected = mode.EditorSelection;
            }

            room = GetRoomNumberFromSceneName(scene.Name);
            if (selected != null && selected.PrimarySelectedObject is SpawnPoint)
            {
                // If the user has a spawn point selected, spawn the player at that spawn point.
                SpawnPoint spawn_pt = (SpawnPoint)selected.PrimarySelectedObject;

                room  = spawn_pt.Room;
                spawn = spawn_pt.SpawnID;
            }
            else if (selected != null && selected.PrimarySelectedObject != null)
            {
                // If the user has something besides a spawn point selected, spawn the player at the first spawn point in the room that the selected object is in.
                WDOMNode cur_object = selected.PrimarySelectedObject;
                while (cur_object.Parent != null)
                {
                    cur_object = cur_object.Parent;
                }
                WRoom room_node;
                if (cur_object is WRoom)
                {
                    room_node = cur_object as WRoom;
                }
                else
                {
                    // A stage entity is selected. Use whatever spawn point is physically closest to the selected entity, regardless of what scene that spawn is in.
                    List <SpawnPoint> allSpawnPts = new List <SpawnPoint>();
                    foreach (WScene scn in scene.World.Map.SceneList)
                    {
                        allSpawnPts.AddRange(scn.GetChildrenOfType <SpawnPoint>());
                    }

                    SpawnPoint closestSpawnPt = allSpawnPts.OrderBy(spawnPt => (spawnPt.Transform.Position - selected.PrimarySelectedObject.Transform.Position).Length).First();
                    room  = closestSpawnPt.Room;
                    spawn = closestSpawnPt.SpawnID;
                    return;
                }

                SpawnPoint spawn_pt = room_node.GetChildrenOfType <SpawnPoint>().FirstOrDefault();
                if (spawn_pt != null)
                {
                    room  = spawn_pt.Room;
                    spawn = spawn_pt.SpawnID;
                }
                else
                {
                    WStage stage = room_node.World.Map.SceneList.First(x => x.GetType() == typeof(WStage)) as WStage;
                    spawn_pt = stage.GetChildrenOfType <SpawnPoint>().FirstOrDefault(x => x.Room == room_node.RoomIndex);
                    if (spawn_pt != null)
                    {
                        room  = spawn_pt.Room;
                        spawn = spawn_pt.SpawnID;
                    }
                }
            }
        }
Exemple #9
0
 /// <summary>
 /// 初始化一个新的<see cref="ActorAttribute"/>实例
 /// </summary>
 /// <param name="mode">要设置的行为模式, 默认为 <see cref="ActorMode.None"/></param>
 public ActorAttribute(ActorMode mode = ActorMode.None)
 {
     Mode = mode;
 }