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); } }
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); }
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; }
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; } } } }
/// <summary> /// 初始化一个新的<see cref="ActorAttribute"/>实例 /// </summary> /// <param name="mode">要设置的行为模式, 默认为 <see cref="ActorMode.None"/></param> public ActorAttribute(ActorMode mode = ActorMode.None) { Mode = mode; }