public void DestroyChildActor(EditorActor inDestroyTarget) { EditorRendererPINVOKE.EditorActor_DestroyChildActor(swigCPtr, EditorActor.getCPtr(inDestroyTarget)); if (EditorRendererPINVOKE.SWIGPendingException.Pending) { throw EditorRendererPINVOKE.SWIGPendingException.Retrieve(); } }
private void OnActorAdded(EditorActor obj) { conRenderer.Actor = obj; pgGrid.SelectedObject = obj; Globals.SaveProject.Invoke(false); Globals.RefreshSequenceDropDown.Invoke(false); }
protected override void SpawnEntities() { PUActor = World.CreateActor("PUActor"); PUComponent = PUActor.CreatePUSystemComponent("PUSystem", PUSystemName, true); PUComponent.PlaySystem(); distance = 50; zoomdistance = 5; VP.SetCameraYawPitchDistance(yaw, pitch, distance); }
public EditorActor GetChildActorByName(string inName) { EditorActor ret = new EditorActor(EditorRendererPINVOKE.EditorActor_GetChildActorByName(swigCPtr, inName), false); if (EditorRendererPINVOKE.SWIGPendingException.Pending) { throw EditorRendererPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
public EditorCollisionFilterActor(EditorLevel level, XElement data) : base(level, data) { _selectedPoints = new List<PointListNode>(); if (data.Attribute("actor_a").Value != "-1") _actorA = level.getActor(int.Parse(data.Attribute("actor_a").Value)); if (data.Attribute("actor_b").Value != "-1") _actorB = level.getActor(int.Parse(data.Attribute("actor_b").Value)); initializeControls(Vector2.Zero, Vector2.Zero); }
public EditorActor CreateActor(string inName) { EditorActor ret = new EditorActor(EditorRendererPINVOKE.EditorWorld_CreateActor(swigCPtr, inName), false); if (EditorRendererPINVOKE.SWIGPendingException.Pending) { throw EditorRendererPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }
private void btnSubmit_Click(object sender, EventArgs e) { Globals.IsDialogWindowOpen = false; if (Globals.RenderWindow.CurrentSelectedObject is EditorSprite) { EditorSprite s = Globals.RenderWindow.CurrentSelectedObject as EditorSprite; { s.ObjectTypeName = lsTypes.Text; s.ObjectType = lsTypes.SelectedItem.GetType(); } Service.CloseDropDown(); } if (Globals.RenderWindow.CurrentSelectedObject is EditorActor) { EditorActor s = Globals.RenderWindow.CurrentSelectedObject as EditorActor; { s.ObjectTypeName = lsTypes.Text; s.ObjectType = lsTypes.SelectedItem.GetType(); } Service.CloseDropDown(); } if (Globals.RenderWindow.CurrentSelectedObject is EditorEmitter) { EditorEmitter s = Globals.RenderWindow.CurrentSelectedObject as EditorEmitter; { s.ObjectTypeName = lsTypes.Text; s.ObjectType = lsTypes.SelectedItem.GetType(); } Service.CloseDropDown(); } if (Globals.RenderWindow.CurrentSelectedObject is EditorGroup) { EditorGroup s = Globals.RenderWindow.CurrentSelectedObject as EditorGroup; { s.ObjectTypeName = lsTypes.Text; s.ObjectType = lsTypes.SelectedItem.GetType(); } Service.CloseDropDown(); } }
protected virtual void SpawnEntities() { if (meshname != null) { if (meshname != "") { MainActor = World.CreateActor("Model"); if (MainActor != null) { MainActor.SetMesh(GetTrueFileName(meshname)); distance = MainActor.GetBoundingRadius() * 1.25f; zoomdistance = distance * 0.1f; VP.SetCameraDistance(distance); } } } }
public EditorPrismaticActor(EditorLevel level, XElement data) : base(level, data) { int actorIdA = Loader.loadInt(data.Attribute("actor_a"), -1); int actorIdB = Loader.loadInt(data.Attribute("actor_b"), -1); _position = Loader.loadVector2(data.Attribute("position"), Vector2.Zero); _actorA = actorIdA == -1 ? null : level.getActor(actorIdA); _actorB = actorIdB == -1 ? null : level.getActor(actorIdB); Vector2 axis = Loader.loadVector2(data.Attribute("axis"), new Vector2(1, 0)); _angle = (float)Math.Atan2(axis.Y, axis.X); lowerLimit = Loader.loadFloat(data.Attribute("lower_limit"), 0f); upperLimit = Loader.loadFloat(data.Attribute("upper_limit"), 0f); _autoCalculateForce = Loader.loadBool(data.Attribute("auto_calculate_force"), false); _autoForceDifference = Loader.loadFloat(data.Attribute("auto_force_difference"), 0f); _motorSpeed = Loader.loadFloat(data.Attribute("motor_speed"), 0f); _motorEnabled = Loader.loadBool(data.Attribute("motor_enabled"), false); _maxMotorForce = Loader.loadFloat(data.Attribute("max_motor_force"), 0f); initializeControls(); }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(EditorActor obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }
public void OnObjectRemoved(VisualObject obj) { Actor = null; Manager.CurrentScreen.VisualObjects.Remove(obj); }
public override void handleSelectedClick(System.Windows.Forms.MouseButtons button) { if ((_selectedConnectionA || _selectedConnectionB) && !_moveActor) { foreach (List<EditorActor> actors in _level.sortedActors.Values) { foreach (EditorActor actor in actors) { if (actor.type == ActorType.Box || actor.type == ActorType.Circle || actor.type == ActorType.Terrain) { PointListNode connectionControl = _selectedConnectionA ? _connectionA : _connectionB; if (actor.hitTest(connectionControl.position, (results) => { if (results.Count > 0) { if (_selectedConnectionA) _actorA = actor; else _actorB = actor; return true; } return false; })) { break; } } } } } deselect(); }
// Create actor from toolbar public void createActorFromToolbar(string buttonName) { // Create actor controller based on button name EditorActor actor = null; switch (buttonName) { case "boxButton": actor = new EditorBoxActor(_level); break; case "circleButton": actor = new EditorCircleActor(_level); break; case "terrainButton": actor = new EditorTerrainActor(_level); break; case "ropeButton": actor = new EditorRopeActor(_level); break; case "fluidButton": actor = new EditorFluidActor(_level); break; case "playerSpawnButton": // Remove existing player spawns before adding a new one List <EditorPlayerSpawnActor> results = _level.getActors <EditorPlayerSpawnActor>(ActorType.PlayerSpawn); if (results.Count > 0) { _level.removeActor(results[0]); } actor = new EditorPlayerSpawnActor(_level); break; case "plantsButton": PlantSelectBox plantSelectBox = new PlantSelectBox(); if (plantSelectBox.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // Adjust mouse position since movement isn't tracked when a form is open _mouse = _levelView.PointToClient(System.Windows.Forms.Cursor.Position); _oldMouse = _mouse; PlantType selectedPlantType = plantSelectBox.selectedPlantType; switch (selectedPlantType) { case PlantType.Tree: actor = new EditorTreeActor(_level); break; } } break; case "itemsButton": SelectItem selectItemForm = new SelectItem(_editorController); if (selectItemForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { actor = new EditorItemActor(_level, selectItemForm.uid); } break; case "circuitsButton": SelectCircuit selectCircuitForm = new SelectCircuit(_editorController.circuitController); if (selectCircuitForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { actor = new EditorCircuitActor(_level, selectCircuitForm.circuitUID); } break; case "revoluteButton": actor = new EditorRevoluteActor(_level); break; case "prismaticButton": actor = new EditorPrismaticActor(_level); break; case "collisionFilterButton": actor = new EditorCollisionFilterActor(_level); break; case "regionButton": actor = new EditorRegionActor(_level); break; case "decalsButton": actor = new EditorDecalActor(_level); break; case "levelTransitionButton": actor = new EditorLevelTransitionActor(_level); break; case "tooltipButton": actor = new EditorTooltipActor(_level); break; case "waypointButton": actor = new EditorWaypointActor(_level); break; case "edgeBoundaryButton": actor = new EditorEdgeBoundaryActor(_level); break; } if (actor != null) { _editorController.view.selectLevelTab(); _level.addActor(actor); _selectedActor = actor; } }
private void btnSubmit_Click(object sender, EventArgs e) { if (lsSceneObjects.SelectedItem != null && lsAvailablePaths.SelectedItem != null) { if (lsSceneObjects.SelectedItem is EditorGroup) { EditorGroup vo = lsSceneObjects.SelectedItem as EditorGroup; LedgeBuilder bo = lsAvailablePaths.SelectedItem as LedgeBuilder; if (bo != null) { vo.AttachedPathingNode = bo; vo.CurrentPathNodeIndex = Convert.ToInt16(tbNodeIndex.Text); vo.AttachedPathingNodeName = bo.Name; foreach (LedgeNodeDisplay node in bo.Nodes) { node.Scale = vo.Scale; } Globals.IsDialogWindowOpen = false; Dispose(); } } if (lsSceneObjects.SelectedItem is EditorSprite) { EditorSprite vo = lsSceneObjects.SelectedItem as EditorSprite; LedgeBuilder bo = lsAvailablePaths.SelectedItem as LedgeBuilder; if (bo != null) { vo.AttachedPathingNode = bo; vo.CurrentPathNodeIndex = Convert.ToInt16(tbNodeIndex.Text); vo.AttachedPathingNodeName = bo.Name; foreach (LedgeNodeDisplay node in bo.Nodes) { node.Scale = vo.Scale; } Globals.IsDialogWindowOpen = false; Dispose(); } } if (lsSceneObjects.SelectedItem is EditorEmitter) { EditorEmitter vo = lsSceneObjects.SelectedItem as EditorEmitter; LedgeBuilder bo = lsAvailablePaths.SelectedItem as LedgeBuilder; if (bo != null) { vo.AttachedPathingNode = bo; vo.CurrentPathNodeIndex = Convert.ToInt16(tbNodeIndex.Text); vo.AttachedPathingNodeName = bo.Name; foreach (LedgeNodeDisplay node in bo.Nodes) { node.Scale = vo.Scale; } Globals.IsDialogWindowOpen = false; Dispose(); } } if (lsSceneObjects.SelectedItem is EditorActor) { EditorActor vo = lsSceneObjects.SelectedItem as EditorActor; LedgeBuilder bo = lsAvailablePaths.SelectedItem as LedgeBuilder; if (bo != null) { vo.AttachedPathingNode = bo; vo.CurrentPathNodeIndex = Convert.ToInt16(tbNodeIndex.Text); vo.AttachedPathingNodeName = bo.Name; // Store these in the pathing node bo.Sequences = vo.Sequences; foreach (LedgeNodeDisplay node in bo.Nodes) { node.AnimationSequence = vo.ClipPlayer.CurrentSequence; node.Scale = vo.Scale; } Globals.IsDialogWindowOpen = false; Dispose(); } } } else { MessageBox.Show(@"Please select a scene object and an available pathing node to attach it to."); } }
// Create actor from toolbar public void createActorFromToolbar(string buttonName) { // Create actor controller based on button name EditorActor actor = null; switch (buttonName) { case "boxButton": actor = new EditorBoxActor(_level); break; case "circleButton": actor = new EditorCircleActor(_level); break; case "terrainButton": actor = new EditorTerrainActor(_level); break; case "ropeButton": actor = new EditorRopeActor(_level); break; case "fluidButton": actor = new EditorFluidActor(_level); break; case "playerSpawnButton": // Remove existing player spawns before adding a new one List<EditorPlayerSpawnActor> results = _level.getActors<EditorPlayerSpawnActor>(ActorType.PlayerSpawn); if (results.Count > 0) { _level.removeActor(results[0]); } actor = new EditorPlayerSpawnActor(_level); break; case "plantsButton": PlantSelectBox plantSelectBox = new PlantSelectBox(); if (plantSelectBox.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // Adjust mouse position since movement isn't tracked when a form is open _mouse = _levelView.PointToClient(System.Windows.Forms.Cursor.Position); _oldMouse = _mouse; PlantType selectedPlantType = plantSelectBox.selectedPlantType; switch (selectedPlantType) { case PlantType.Tree: actor = new EditorTreeActor(_level); break; } } break; case "itemsButton": SelectItem selectItemForm = new SelectItem(_editorController); if (selectItemForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { actor = new EditorItemActor(_level, selectItemForm.uid); } break; case "circuitsButton": SelectCircuit selectCircuitForm = new SelectCircuit(_editorController.circuitController); if (selectCircuitForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { actor = new EditorCircuitActor(_level, selectCircuitForm.circuitUID); } break; case "revoluteButton": actor = new EditorRevoluteActor(_level); break; case "prismaticButton": actor = new EditorPrismaticActor(_level); break; case "collisionFilterButton": actor = new EditorCollisionFilterActor(_level); break; case "regionButton": actor = new EditorRegionActor(_level); break; case "decalsButton": actor = new EditorDecalActor(_level); break; case "levelTransitionButton": actor = new EditorLevelTransitionActor(_level); break; case "tooltipButton": actor = new EditorTooltipActor(_level); break; case "waypointButton": actor = new EditorWaypointActor(_level); break; case "edgeBoundaryButton": actor = new EditorEdgeBoundaryActor(_level); break; } if (actor != null) { _editorController.view.selectLevelTab(); _level.addActor(actor); _selectedActor = actor; } }
private void btnAddActor_Click(object sender, EventArgs e) { if ( MessageBox.Show("Are you sure you want to add this to the scene?", "Add Actor Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } // Disable all thse tbName.Enabled = false; cbRole.Enabled = false; gbSequences.Enabled = false; gbPreview.Enabled = false; btnSave.Enabled = false; pgBar.Style = ProgressBarStyle.Continuous; // Create our actor Actor = new EditorActor(Globals.Game, string.Empty, string.Empty); if (tvSequences.Nodes.Count >= 0) { // Set our Actors Role switch (cbRole.Text) { case "Player": Actor.Role = ActorRole.Player; break; case "Enemy": Actor.Role = ActorRole.Enemy; break; case "NPC": Actor.Role = ActorRole.NPC; break; case "Prop": Actor.Role = ActorRole.Prop; break; } Actor.Name = tbName.Text; // Init our clip player Actor.ClipPlayer = new AnimationPlayer2D(Globals.Game); Actor.ClipPlayer.Initialize(); // Loop thru the Tree view controls Nodes adding our Key Frames to our Clip Player foreach (TreeNode node in tvSequences.Nodes) { // Reset our frame index { int endFrameIndex = (node.Nodes.Count - 1); Sequence2D sequence = new Sequence2D(node.Name); sequence.StartFrame = 0; sequence.EndFrame = endFrameIndex; // Add our Frames foreach (TreeNode child in tvSequences.Nodes[node.Name].Nodes) { KeyFrame2D frame = new KeyFrame2D(); frame.Duration = 1f; frame.AssetFilename = child.Tag.ToString(); sequence.Frames.Add(frame); } // Add our Sequence Actor.ClipPlayer.Sequences.Add(sequence); } } // Generate our Sprite Sheet for the Clip Player SpriteTools.GenerateSpriteSheet(Actor, Globals.AppSettings.ProjectPath, tbName.Text); Actor.ClipPlayer.Texture = Catalyst3D.XNA.Engine.UtilityClasses.Utilitys.TextureFromFile( Globals.Game.GraphicsDevice, Globals.AppSettings.ProjectPath + @"\" + Actor.SpriteSheetFileName); } // Default to the idle sequence if (Actor.Sequences.Count > 0) { Actor.Play(Actor.ClipPlayer.Sequences[0].Name, true); } // Add it to our Scene Globals.ActorAdded.Invoke(Actor); tvSequences.Nodes.Clear(); Close(); }
public CircuitOutputConnection(EditorCircuitActor circuitActor, EditorActor actor, Gate gate, GameEventType onEnabledEvent, GameEventType onDisabledEvent) : base(circuitActor, actor, gate, "output") { _onEnabledEvent = onEnabledEvent; _onDisabledEvent = onDisabledEvent; }
public override void update() { Vector2 worldDelta = _level.controller.worldDeltaMouse; float angleIncrement = _level.controller.isKeyHeld(Keys.LeftShift) ? 0.0001f : 0.0005f; float limitIncrement = _level.controller.isKeyHeld(Keys.LeftShift) ? 0.0001f : 0.0005f; // Update connections if (_actorA != null && !_level.containsActor(_actorA)) { _connectionA.position = _actorA.prismaticConnectionPosition; _actorA = null; } if (_actorB != null && !_level.containsActor(_actorB)) { _connectionB.position = _actorB.prismaticConnectionPosition; _actorB = null; } if (selected) { if (!_level.controller.isKeyHeld(Keys.LeftControl)) { if (_moveActor) _position += worldDelta; if (_selectedConnectionA) _connectionA.position += worldDelta; if (_selectedConnectionB) _connectionB.position += worldDelta; } if (_level.controller.isKeyHeld(Keys.Q)) _angle -= angleIncrement; if (_level.controller.isKeyHeld(Keys.E)) _angle += angleIncrement; if (_level.controller.isKeyHeld(Keys.W)) upperLimit += limitIncrement; if (_level.controller.isKeyHeld(Keys.S)) upperLimit -= limitIncrement; if (_level.controller.isKeyHeld(Keys.A)) lowerLimit -= limitIncrement; if (_level.controller.isKeyHeld(Keys.D)) lowerLimit += limitIncrement; if (_level.controller.isKeyPressed(Keys.Escape)) deselect(); else if (_level.controller.isKeyPressed(Keys.Delete)) delete(); } }
public override bool handleUnselectedClick(System.Windows.Forms.MouseButtons button) { if (button == System.Windows.Forms.MouseButtons.Left) { return hitTest(_level.controller.worldMouse, (results) => { if (results.Count == 1 && results[0] is PointListNode) { _selectedPoints.Add(results[0] as PointListNode); select(); return true; } else if (results.Count == 2 && _actorA == null && _actorB == null) { foreach (IActorComponent component in results) { if (component is PointListNode) _selectedPoints.Add(component as PointListNode); } select(); return true; } else if (results.Count == 2 && _actorA != null && _actorB != null) { _nodeA.position = _actorA.collisionFilterConnectionPosition; _nodeB.position = _actorB.collisionFilterConnectionPosition; _actorA = null; _actorB = null; _selectedPoints.Add(_nodeA); _selectedPoints.Add(_nodeB); select(); } return false; }); } else if (button == System.Windows.Forms.MouseButtons.Right) { return hitTest(_level.controller.worldMouse, (results) => { if (results.Count == 1) { _level.controller.openActorProperties(results[0]); return true; } return false; }); } return false; }
private void OnActorAdded(EditorActor actor) { Actor = actor; Globals.Renderer.AddVisualObject(actor); }
public override void handleSelectedClick(System.Windows.Forms.MouseButtons button) { if (_selectedPoints.Count == 1) { // Perform an actor hit test and form a connection if successful foreach (List<EditorActor> actors in _level.sortedActors.Values) { foreach (EditorActor actor in actors) { if (actor.type == ActorType.Box || actor.type == ActorType.Circle || actor.type == ActorType.Terrain) { bool connectionFormed = actor.hitTest(_selectedPoints[0].position, (results) => { if (results.Count > 0) { if (_selectedPoints[0] == _nodeA) _actorA = actor; else if (_selectedPoints[0] == _nodeB) _actorB = actor; return true; } return false; }); if (connectionFormed) { deselect(); return; } } } } } deselect(); }
private void LoadProject(bool showresult) { // Create our Open File Dialog OpenFileDialog dia = new OpenFileDialog(); dia.Filter = "Catalyst3D Actor File|*.a2d"; dia.InitialDirectory = Globals.AppSettings.ProjectPath; if (dia.ShowDialog() == DialogResult.OK) { try { if (Globals.IsProjectLoaded) { // Flush the sequencer drop down for available sequences tsSequence.Items.Clear(); conRenderer.Manager.CurrentScreen.VisualObjects.Clear(); } // Store our current projects path and file name Globals.AppSettings.ProjectPath = Path.GetDirectoryName(dia.FileName); Globals.AppSettings.ProjectFilename = Path.GetFileName(dia.FileName); Actor original = Serializer.Deserialize <Actor>(dia.FileName); EditorActor actor = new EditorActor(Globals.Game, string.Empty, original.AssetName) { AssetName = original.AssetName, SpriteSheetFileName = original.SpriteSheetFileName, Direction = original.Direction, DrawOrder = original.DrawOrder, UpdateOrder = original.UpdateOrder, Name = original.Name, PlayerIndex = original.PlayerIndex, Position = Vector2.Zero, Role = original.Role, Scale = original.Scale, Enabled = original.Enabled, Visible = original.Visible, GameScreen = Globals.Renderer }; actor.ClipPlayer = new AnimationPlayer2D(Globals.Game) { AssetName = original.ClipPlayer.AssetName, Sequences = original.ClipPlayer.Sequences, GameScreen = Globals.Renderer }; actor.ClipPlayer.Initialize(); actor.ClipPlayer.Texture = Catalyst3D.XNA.Engine.UtilityClasses.Utilitys.TextureFromFile(Globals.Game.GraphicsDevice, Globals.AppSettings.ProjectPath + @"\" + original.SpriteSheetFileName); // Play the first sequence by default after loading if (actor.ClipPlayer.Sequences.Count > 0) { actor.Play(actor.ClipPlayer.Sequences[0].Name, true); } actor.Initialize(); conRenderer.Actor = actor; pgGrid.SelectedObject = actor; Globals.Renderer.AddVisualObject(actor); Globals.RefreshSequenceDropDown.Invoke(false); Globals.IsProjectLoaded = true; } catch { MessageBox.Show("Error: Failed to load the sprite sheet for this actor project!"); Globals.IsProjectLoaded = false; conRenderer.Actor = null; if (conRenderer.Manager.CurrentScreen != null) { conRenderer.Manager.CurrentScreen.VisualObjects.Clear(); } } } }