public async System.Threading.Tasks.Task OnDragDropViewport(ViewPort.ViewPortControl viewport, System.Windows.Forms.DragEventArgs e) { var dropActor = await EngineNS.GamePlay.Actor.GActor.NewPrefabActorAsync(this.ResourceName); string sname = this.ResourceName.GetFileName(); //dropActor.SpecialName = sname; MapPrefabActor(dropActor); var viewPortPos = viewport.PointFromScreen(new System.Windows.Point(e.X, e.Y)); var pos = viewport.GetPickRayLineCheckPosition((float)viewPortPos.X, (float)viewPortPos.Y); dropActor.Placement.Location = pos; var selActors = new List <ViewPort.ViewPortControl.SelectActorData>(viewport.GetSelectedActors()); var redoAction = new Action <object>((obj) => { viewport.AddActor(dropActor); }); redoAction.Invoke(null); EditorCommon.UndoRedo.UndoRedoManager.Instance.AddCommand("WorldEditOperation", null, redoAction, null, (obj) => { viewport.World.RemoveActor(dropActor.ActorId); viewport.World.DefaultScene.RemoveActor(dropActor.ActorId); //for (int i = dropActor.Children.Count - 1; i >= 0; i--) //{ // EngineNS.GamePlay.Actor.GActor actor = dropActor.Children[i]; // actor.Parent.SetParent(null); // viewport.World.RemoveActor(actor.ActorId); // viewport.World.DefaultScene.RemoveActor(actor.ActorId); //} dropActor.Selected = false; viewport.SelectActors(selActors.ToArray()); }, "添加对象"); if (mPreviewActor == null || mPreviewActor.mPreviewActor == null) { return; } await mPreviewActor.AwaitLoad(); viewport.World.RemoveEditorActor(mPreviewActor.mPreviewActor.ActorId); //if (mPreviewActor.mPreviewActor.Children.Count > 0) //{ // for (int i = mPreviewActor.mPreviewActor.Children.Count - 1; i >= 0; i --) // { // EngineNS.GamePlay.Actor.GActor actor = mPreviewActor.mPreviewActor.Children[i]; // actor.Parent.SetParent(null); // viewport.World.RemoveActor(actor.ActorId); // viewport.World.DefaultScene.RemoveActor(actor.ActorId); // } //} }
public async Task OnDragDropViewport(ViewPort.ViewPortControl viewport, System.Windows.Forms.DragEventArgs e) { var item = System.Activator.CreateInstance(ItemType) as EngineNS.Editor.IPlantable; var viewPortPos = viewport.PointFromScreen(new System.Windows.Point(e.X, e.Y)); var pos = viewport.GetPickRayLineCheckPosition((float)viewPortPos.X, (float)viewPortPos.Y); var param = new EngineNS.Editor.PlantableItemCreateActorParam() { View = viewport.RPolicy.BaseSceneView, Location = pos, }; var dropActor = await item.CreateActor(param); if (string.IsNullOrEmpty(dropActor.SpecialName)) { dropActor.SpecialName = EngineNS.GamePlay.SceneGraph.GSceneGraph.GeneratorActorSpecialNameInEditor(ItemName, viewport.World); } viewport.AddActor(dropActor); }
public async System.Threading.Tasks.Task OnDragEnterViewport(ViewPort.ViewPortControl viewport, System.Windows.Forms.DragEventArgs e) { if (mPreviewActor != null) { await mPreviewActor.AwaitLoad(); } else { mPreviewActor = new EditorCommon.ViewPort.PreviewActorContainer(); mPreviewActor.mPreviewActor = await EngineNS.GamePlay.Actor.GActor.NewMeshActorAsync(this.ResourceName); var viewPortPos = viewport.PointFromScreen(new System.Windows.Point(e.X, e.Y)); var pos = viewport.GetPickRayLineCheckPosition((float)viewPortPos.X, (float)viewPortPos.Y); mPreviewActor.mPreviewActor.Placement.Location = pos; mPreviewActor.ReleaseWaitContext(); } mPreviewActor.mPreviewActor.Tag = new Controls.Outliner.InvisibleInOutliner(); viewport.AddActor(mPreviewActor.mPreviewActor); }