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.NewPrefabActorAsync(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.World.AddEditorActor(mPreviewActor.mPreviewActor); //foreach (var actor in mPreviewActor.mPreviewActor.Children) //{ // actor.SetParent(mPreviewActor.mPreviewActor); // viewport.World.AddActor(actor); // viewport.World.DefaultScene.AddActor(actor); //} }
public async Task OnDragEnterViewport(ViewPort.ViewPortControl viewport, System.Windows.Forms.DragEventArgs e) { if (mPreviewActor != null) { await mPreviewActor.AwaitLoad(); } else { mPreviewActor = new ViewPort.PreviewActorContainer(); var item = System.Activator.CreateInstance(ItemType) as EngineNS.Editor.IPlantable; if (item == null) { throw new InvalidOperationException("使用 EngineNS.Editor.Editor_PlantAbleActor 需要继承自 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, }; mPreviewActor.mPreviewActor = await item.CreateActor(param); mPreviewActor.mPreviewActor.Placement.Location = pos; mPreviewActor.ReleaseWaitContext(); } viewport.World.AddActor(mPreviewActor.mPreviewActor); viewport.World.DefaultScene.AddActor(mPreviewActor.mPreviewActor); }
public async System.Threading.Tasks.Task OnDragEnterViewport(EditorCommon.ViewPort.ViewPortControl viewport, System.Windows.Forms.DragEventArgs e) { if (mPreviewActor != null) { await mPreviewActor.AwaitLoad(); } else { mPreviewActor = new EditorCommon.ViewPort.PreviewActorContainer(); GParticleComponent component = new GParticleComponent(); var param = new EngineNS.Editor.PlantableItemCreateActorParam() { Location = new EngineNS.Vector3(0, 0, 0), }; mPreviewActor.mPreviewActor = await component.CreateActor(param, 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 EditorCommon.Controls.Outliner.InvisibleInOutliner(); viewport.AddActor(mPreviewActor.mPreviewActor); }