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);
            //}
        }
Beispiel #2
0
        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);
        }