コード例 #1
0
 /// <summary>
 /// 帧更新接口
 /// </summary>
 /// <param name="deltaTime"></param>
 public void Update(float deltaTime, NViewport view)
 {
     foreach (var frame in currentFrames)
     {
         frame.Update(deltaTime, view);
     }
 }
コード例 #2
0
 /// <summary>
 /// Update
 /// </summary>
 public void Update(float deltaTime, NViewport view)
 {
     if (DamageListener != null)
     {
         DamageListener.UpdateElement(deltaTime, view);
     }
 }
コード例 #3
0
 public void Update(float deltaTime, NViewport view)
 {
     // 更新进度条进度
     if (prepareProgressBar.Visible && prepareMaxTime > 0.0f)
     {
         prepareTime -= deltaTime;
         prepareProgressBar.Progress = prepareTime / prepareMaxTime;
     }
 }
コード例 #4
0
        public void Update(float deltaTime, NViewport view)
        {
            //计算角色在小地图中的坐标
            Vector3 pos = GameEngine.EngineInstance.LocalPlayer.Location;

            playerLocation2D = WorldToMiniMap(new Vector2(pos.x, pos.z));

            Vector2 mapCenter = playerLocation2D;

            if (mapCenter.x < minimapRange.x)
            {
                mapCenter.x = minimapRange.x;
            }
            if (mapCenter.x > miniMapSize.x - minimapRange.x)
            {
                mapCenter.x = miniMapSize.x - minimapRange.x;
            }

            if (mapCenter.y < minimapRange.y)
            {
                mapCenter.y = minimapRange.y;
            }
            if (mapCenter.y > miniMapSize.y - minimapRange.y)
            {
                mapCenter.y = miniMapSize.y - minimapRange.y;
            }

            //改变小地图的显示范围
            Rect rc = new Rect(mapCenter.x - minimapRange.x, mapCenter.y - minimapRange.y,
                               mapCenter.x + minimapRange.x, mapCenter.y + minimapRange.y);

            miniMap.BackgroundRenderComp.TextureRect = rc;

            //旋转小地图
            miniMap.BackgroundRenderComp.Rotation = GameEngine.EngineInstance.LocalPlayer.GameplayCamera.Yaw + (float)Math.PI;
            Rect   mmrc     = miniMap.BackgroundRenderComp.TargetRect;
            Matrix trans    = Matrix.Translation(mmrc.left + mmrc.Width * 0.5f, mmrc.top + mmrc.Height * 0.5f, 0);
            Matrix invTrans = trans;

            invTrans.Invert();
            miniMapRotation = Matrix.RotationAxis(new Vector3(0, 0, 1), miniMap.BackgroundRenderComp.Rotation);
            miniMapRotation = invTrans * miniMapRotation * trans;

            //显示当前坐标
            if (coordLabel != null)
            {
                int    x    = (int)pos.x;
                int    y    = (int)pos.z;
                String text = x.ToString();
                text += ",";
                text += y.ToString();
                coordLabel.TextRenderComp.Text = text;
            }
        }
コード例 #5
0
        /// <summary>
        /// 逻辑层的Tick机会
        /// </summary>
        /// <param name="gameTime"></param>
        public override void Update(float deltaTime, NViewport vp)
        {
            if (localPlayer != null)
            {
                localPlayer.Update(deltaTime, vp);
            }

            // 给所有的GameActor一次逻辑层更新机会
            foreach (var item in remoteCCs)
            {
                item.Value.Update(deltaTime);
            }
            base.Update(deltaTime, vp);
        }
コード例 #6
0
        public void CreateViewport()
        {
            // initialize Viewport
            int w = NEditorEngine.Instance().Config.ClientWidth;
            int h = NEditorEngine.Instance().Config.ClientHeight;

            m_viewport = new NViewport();
            m_viewport.Camera.SetPerspective(MathConst.PI / 4, w, h, 20, 500000);
            m_viewport.HandleWnd  = this.Handle;
            m_viewport.RenderMode = ERenderMode.Unlit;
            this.NRenderContorl_SizeChanged(null, null);

            // create render element
            NWidgetsRender widgetsRender = new NWidgetsRender();

            m_viewport.WidgetsRender = widgetsRender;
            widgetsRender.AddRenderControl(this);

            // 创建UI系统
            new GUISystem(widgetsRender.UICanvas);
            // 签署事件
            this.KeyDown          += new System.Windows.Forms.KeyEventHandler(NRenderControl_KeyDown);
            this.KeyPress         += new System.Windows.Forms.KeyPressEventHandler(NRenderControl_KeyPress);
            this.KeyUp            += new System.Windows.Forms.KeyEventHandler(NRenderControl_KeyUp);
            this.MouseClick       += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseClick);
            this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseDoubleClick);
            this.MouseDown        += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseDown);
            this.MouseUp          += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseUp);
            this.MouseWheel       += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseWheel);
            this.MouseMove        += new System.Windows.Forms.MouseEventHandler(NRenderControl_MouseMove);
            //加载程序集,注册内置窗口类型
            Assembly executingAssembly = Assembly.GetExecutingAssembly();

            WindowManager.Instance.LoadAssembly(Path.GetDirectoryName(executingAssembly.Location) + System.IO.Path.DirectorySeparatorChar + @"Nexus.GUI.dll");
            // 加载当前执行文件中窗口类型
            WindowManager.Instance.AttachAssembly(executingAssembly);
            // 创建一个缺省的唯一父窗口
            GUISystem.Instance.RootWindow = WindowManager.Instance.CreateWindow("Nexus.GUI.Widgets.GUISheet", "root", null);


            PostInitialize();

            // create game timer
            m_gameTimer = new NGameTimer();
            m_gameTimer.Reset();
        }
コード例 #7
0
        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }

                if (m_viewport != null)
                {
                    m_viewport.Destroy();
                    m_viewport = null;
                }
            }
            base.Dispose(disposing);
        }
コード例 #8
0
        public void Update(float deltaTime, NViewport vp)
        {
            // 更新输入
            PlayerInput.UpdateInput(deltaTime);
            PreProcessInput(PlayerInput, deltaTime);

            GameplayCamera.UpdateCamera(this, vp.Camera, deltaTime);
            foreach (var camera in CameraModifiers)
            {
                camera.UpdateCamera(this, vp.Camera, deltaTime);
            }
            PlayerMove(deltaTime, vp.Camera);

            Update(deltaTime);

            PlayerInput.ResetInput();
            PressJump = false;
        }
コード例 #9
0
        public NEViewport()
        {
            m_view = new NViewport();
            int w = NEditorEngine.Instance().Config.ClientWidth;
            int h = NEditorEngine.Instance().Config.ClientHeight;

            m_minCameraSight = 500;
            m_maxCameraSight = 300000;
            m_Sight          = 0.25f;
            m_cameraSight    = m_minCameraSight * (1 - m_Sight * m_Sight) + m_maxCameraSight * (m_Sight * m_Sight);
            m_view.Camera.SetPerspective(MathConst.PI / 4, w, h, 1.0f, m_cameraSight);
            m_cameraCtrl = new NPerspectiveCameraController();
            InitializeComponent();
            this.Dock = DockStyle.Fill;
            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);

            m_view.HandleWnd  = this.Handle;
            m_view.RenderMode = ERenderMode.Unlit;
            this.NEViewPort_SizeChanged(this, null); // set view pos/size

            NEWidgetsRender widgets = CreateWidgetsRender();

            m_view.WidgetsRender = widgets;
            widgets.AddViewport(this);

            //-- context menu
            m_menu = new ContextMenuStrip();
            ToolStripMenuItem viewMenu = new ToolStripMenuItem("Render mode");

            foreach (ERenderMode rm in Enum.GetValues(typeof(ERenderMode)))
            {
                ToolStripItem item = viewMenu.DropDownItems.Add(rm.ToString());
                item.Click += new EventHandler(this.OnMenuClickRenderMode);
            }
            m_menu.Items.Add(viewMenu);

            ToolStripItem cameraItem = m_menu.Items.Add("Reset camera");

            //--
            m_mainTimer = new NGameTimer();
            m_mainTimer.Reset();
        }
コード例 #10
0
        public void UpdateElement(float deltaTime, NViewport vp)
        {
            int index = damageInfos.FindLastIndex(x => (x.CountTime > DefaultShowInfoTime));

            if (index >= 0)
            {
                damageInfos.RemoveRange(0, index + 1);
            }

            foreach (var item in damageInfos)
            {
                item.CountTime += deltaTime;

                // 更新屏幕位置
                Vector4 screenLocation = vp.Camera.WorldToScreenWithDepth(item.TargetCC.Location);

                screenLocation.x += item.CountTime * item.CountTime * DefaultMovement.x;
                screenLocation.y += item.CountTime * item.CountTime * DefaultMovement.y;

                item.ScreenPosition = screenLocation;
            }
        }
コード例 #11
0
 public void Update(float deltaTime, NViewport view)
 {
 }
コード例 #12
0
 public void Update(float deltaTime, NViewport view)
 {
     UpdateMessageTipsStatck(deltaTime);
 }