Esempio n. 1
0
        public void Init()
        {
            string filename = "TopView";

            //Encoding encode = Encoding.GetEncoding(936);
            byte[] byteArr = EditorLayer.Encode936.GetBytes(filename);
            m_pEditor.AddOutputWindow(byteArr, (int)this.Handle, OUTPUTWND_SCENEEDITOR_TOPVIEW, 0, ref m_OutputWindowID);

            m_pEditor.GetScene(ref m_pScene);
            m_pScene.OnResizeWindow(0);

            _AtlVector3 vCameraPos = m_pEditor.GetCameraMainPos();

            m_pEditor.SetCameraTopPos(vCameraPos.x, vCameraPos.z);
        }
Esempio n. 2
0
        private void MoveCameraToRepresentObj(int representObjPtr)
        {
            _AtlVector3 objPos = new _AtlVector3();

            EngineLayer.ATLBase.GetRepresentObjTranslation(representObjPtr, ref objPos);

            MoveCameraToPosition(objPos);

            //_AtlVector3 oldpos = new _AtlVector3(), oldlookat = new _AtlVector3();
            //SceneSceneEditor.GetCameraPosLookat(ref oldpos, ref oldlookat);
            //_AtlVector3 delta = new _AtlVector3();
            //delta.x = oldlookat.x - oldpos.x; delta.y = oldlookat.y - oldpos.y; delta.z = oldlookat.z - oldpos.z;
            //_AtlVector3 newpos = new _AtlVector3();
            //newpos.x = objPos.x - delta.x; newpos.y = objPos.y - delta.y; newpos.z = objPos.z - delta.z;
            //SceneSceneEditor.SetCameraPosLookat(ref newpos, ref objPos);

            SceneSceneEditor.UpdateSelectableEntityList(5);
        }
Esempio n. 3
0
        /// <summary>
        /// 设置相机坐标 ahpho suntao
        /// </summary>
        /// <param name="x">x坐标</param>
        /// <param name="y">y坐标</param>
        /// <param name="z">z坐标</param>
        public void SetCameraFocus(int x, int y, int z)
        {
            _AtlVector3 cameraLocation = new _AtlVector3();
            _AtlVector3 cameraLookAt   = new _AtlVector3();
            _AtlVector3 delta          = new _AtlVector3();

            SceneSceneEditor.GetCameraPosLookat(ref cameraLocation, ref cameraLookAt);

            delta.x = cameraLookAt.x - cameraLocation.x;
            delta.y = cameraLookAt.y - cameraLocation.y;
            delta.z = cameraLookAt.z - cameraLocation.z;

            cameraLookAt.x = x;
            cameraLookAt.y = y;
            cameraLookAt.z = z;

            cameraLocation.x = x - delta.x;
            cameraLocation.y = y - delta.y;
            cameraLocation.z = z - delta.z;

            SceneSceneEditor.SetCameraPosLookat(ref cameraLocation, ref cameraLookAt);
        }
Esempio n. 4
0
        private void panel1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right) // 右双击切换scale
            {
                this.m_panel1.scale          = 1.0f;
                this.m_panel1.start_adjust_x = 0.0f;
                this.m_panel1.start_adjust_y = 0.0f;
                this.Refresh();
            }
            else if (e.Button == MouseButtons.Left) // 左双击飞镜头到鼠标处
            {
                _AtlVector3 vecOldPos = new _AtlVector3(), vecOldLookAt = new _AtlVector3(), delta = new _AtlVector3();
                SceneSceneEditor.GetCameraPosLookat(ref vecOldPos, ref vecOldLookAt);
                delta.x = vecOldLookAt.x - vecOldPos.x; delta.y = vecOldLookAt.y - vecOldPos.y; delta.z = vecOldLookAt.z - vecOldPos.z;

                _AtlVector3 vecNewPos = this.m_panel1.LogicToScene(new Point((int)mouse_map_x, (int)mouse_map_y));
                vecNewPos.y = vecOldPos.y;
                _AtlVector3 vecNewLookAt = new _AtlVector3();
                vecNewLookAt.x = vecNewPos.x + delta.x; vecNewLookAt.y = vecNewPos.y + delta.y; vecNewLookAt.z = vecNewPos.z + delta.z;

                SceneSceneEditor.SetCameraPosLookat(ref vecNewPos, ref vecNewLookAt);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 获取摄像机坐标 ahpho suntao
        /// </summary>
        /// <returns>摄像机坐标字符串</returns>
        private string GetCameraLookAt()
        {
            _AtlVector3 cameraLocation = new _AtlVector3();
            _AtlVector3 cameraLookAt = new _AtlVector3();
            SceneSceneEditor.GetCameraPosLookat(ref cameraLocation, ref cameraLookAt);
            string cameraLookAtString = string.Format("{0},{1},{2}", (int)cameraLookAt.x, (int)cameraLookAt.y, (int)cameraLookAt.z);

            return cameraLookAtString;
        }
Esempio n. 6
0
        /// <summary>
        /// 设置相机坐标 ahpho suntao
        /// </summary>
        /// <param name="x">x坐标</param>
        /// <param name="y">y坐标</param>
        /// <param name="z">z坐标</param>
        public void SetCameraFocus(int x, int y, int z)
        {
            _AtlVector3 cameraLocation = new _AtlVector3();
            _AtlVector3 cameraLookAt = new _AtlVector3();
            _AtlVector3 delta = new _AtlVector3();
            
            SceneSceneEditor.GetCameraPosLookat(ref cameraLocation, ref cameraLookAt);

            delta.x = cameraLookAt.x - cameraLocation.x; 
            delta.y = cameraLookAt.y - cameraLocation.y; 
            delta.z = cameraLookAt.z - cameraLocation.z;

            cameraLookAt.x = x;
            cameraLookAt.y = y;
            cameraLookAt.z = z;

            cameraLocation.x = x - delta.x;
            cameraLocation.y = y - delta.y;
            cameraLocation.z = z - delta.z;

            SceneSceneEditor.SetCameraPosLookat(ref cameraLocation, ref cameraLookAt);
        }
Esempio n. 7
0
        /// <summary>
        /// 将摄像机移动到对象所在的位置
        /// </summary>
        /// <param name="objectInfo">对象信息</param>
        private void MoveCameraToObject(_AtlObjInfo objectInfo)
        {
            // 移动镜头
            Hashtable infoTable = Helper.GetInfoTable(objectInfo);
            string positionStr = infoTable["vPosition"] as string;

            if (positionStr != null) // 有效的坐标
            {
                string[] positionData = positionStr.Split(new char[] { ',' });
                float positionX = float.Parse(positionData[0]);
                float positionY = float.Parse(positionData[1]);
                float positionZ = float.Parse(positionData[2]);

                _AtlVector3 objPos = new _AtlVector3();
                objPos.x = positionX;
                objPos.y = positionY;
                objPos.z = positionZ;

                _AtlVector3 oldpos = new _AtlVector3(), oldlookat = new _AtlVector3();
                SceneSceneEditor.GetCameraPosLookat(ref oldpos, ref oldlookat);
                _AtlVector3 delta = new _AtlVector3();
                delta.x = oldlookat.x - oldpos.x; delta.y = oldlookat.y - oldpos.y; delta.z = oldlookat.z - oldpos.z;
                _AtlVector3 newpos = new _AtlVector3();
                newpos.x = objPos.x - delta.x; newpos.y = objPos.y - delta.y; newpos.z = objPos.z - delta.z;
                SceneSceneEditor.SetCameraLocation(newpos.x, newpos.y, newpos.z, objPos.x, objPos.y, objPos.z);
            }            
        }
Esempio n. 8
0
        private void panel1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                switch (m_editState)
                {
                    case STATE_SELECTING:
                        break;
                    case STATE_ADDPOLYVERTEX:
                        break;
                    case STATE_SELECTLOGICREGION:
                        {
                            _AtlVector3 vPos = new _AtlVector3();
                            vPos.x = e.Location.X;
                            vPos.y = 0;
                            vPos.z = e.Location.Y;
                            MousePosToScene(ref vPos);

                            int nX_End, nZ_End;
                            int nX = 0, nZ = 0;
                            SceneSceneEditor.GetAppointLogicalRegion(ref m_nRegionXStart, ref m_nRegionZStart, ref m_nCountRegionX, ref m_nCountRegionZ);
                            nX = (int)(vPos.x / 3200.0f);
                            nZ = (int)(vPos.z / 3200.0f);
                            nX_End = m_nRegionXStart > nX ? m_nRegionXStart : nX;
                            nZ_End = m_nRegionZStart > nZ ? m_nRegionZStart : nZ;
                            m_nRegionXStart = m_nRegionXStart < nX ? m_nRegionXStart : nX;
                            m_nRegionZStart = m_nRegionZStart < nZ ? m_nRegionZStart : nZ;
                            m_nCountRegionX = nX_End - m_nRegionXStart + 1;
                            m_nCountRegionZ = nZ_End - m_nRegionZStart + 1;
                            SceneSceneEditor.SetAppointLogicalRegion(m_nRegionXStart, m_nRegionZStart, m_nCountRegionX, m_nCountRegionZ);
                            
                            // update UI
                            m_bAutoFillParam = true;
                            this.textXStart.Text = m_nRegionXStart.ToString();
                            this.textZStart.Text = m_nRegionZStart.ToString();
                            this.textXCount.Text = m_nCountRegionX.ToString();
                            this.textZCount.Text = m_nCountRegionZ.ToString();
                            m_bAutoFillParam = false;
                            break;
                        }
                    default:
                        break;
                }
            }
            else if (e.Button == MouseButtons.Middle)
            {
            }
            else if (e.Button == MouseButtons.Right)
            {
            }
        }
Esempio n. 9
0
 private void MousePosToScene(ref _AtlVector3 vPos)
 {
     float CX = 0.5f * (this.ClientRectangle.Right + this.ClientRectangle.Left);
     float CZ = 0.5f * (this.ClientRectangle.Bottom + this.ClientRectangle.Top);
     m_CameraPos = m_pEditor.GetCameraTopPos();
     vPos.x = m_CameraPos.x + (vPos.x - CX) * EngineLayer.ATLBase.GetSceneEditorCameraTopScale();
     vPos.z = m_CameraPos.z - (vPos.z - CZ) * EngineLayer.ATLBase.GetSceneEditorCameraTopScale();
 }
Esempio n. 10
0
        private void TopViewForm_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                _AtlVector3 vPos = new _AtlVector3();
                vPos.x = e.Location.X;
                vPos.y = 0;
                vPos.z = e.Location.Y;
                MousePosToScene(ref vPos);

                if (m_bSelecting)
                {
                    //m_pEditor.AddSelectRegionPoint(1, vPos);
                    if ((GetAsyncKeyState(VK_CONTROL) & 0x8000) != 0)
                    {
                        //m_pEditor.EndSelectRegion(1, 1);
                    }
                    else
                    {
                        //m_pEditor.EndSelectRegion(0, 1);
                    }
                }

            }
            else if (e.Button == MouseButtons.Middle)
            {
            }
            else if (e.Button == MouseButtons.Right)
            {
            }
        }
Esempio n. 11
0
        private void NodeMouseDbClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            m_SceneEditor.ClearSelectedEntityList();
            
            int i = -1;
            if (e.Node.Tag != null)
            { 
                i = Int32.Parse(e.Node.Tag.ToString());
            }

            int nCount = 0;
            m_DocLogical.GetObjCount("Doodad", -1, ref nCount);

            string name = string.Empty;
            string nickname = string.Empty;
            int hasscript = 0;
            int representObjPtr = 0;
            int logicObjPtr = 0;
            int templateID = 0;

            if (i > 0 && i < nCount)
            {
                m_DocLogical.GetObjDisplayInfo("Doodad", i, -1, ref name, ref nickname, ref hasscript, ref representObjPtr, ref logicObjPtr, ref templateID);
                //LogicObj Obj = new LogicObj(name, i, -1, name, nickname, hasscrtpt != 0 ? 1 : 0, representObjPtr, logicObjPtr, templateID);
                m_SceneEditor.AddSelectedRepresentObject(representObjPtr, 1);

                _AtlVector3 objPos = new _AtlVector3();
                EngineLayer.ATLBase.GetRepresentObjTranslation(representObjPtr, ref objPos);

                MoveCameraToPosition(objPos);

                //_AtlVector3 oldpos = new _AtlVector3(), oldlookat = new _AtlVector3();
                //SceneSceneEditor.GetCameraPosLookat(ref oldpos, ref oldlookat);
                //_AtlVector3 delta = new _AtlVector3();
                //delta.x = oldlookat.x - oldpos.x; delta.y = oldlookat.y - oldpos.y; delta.z = oldlookat.z - oldpos.z;
                //_AtlVector3 newpos = new _AtlVector3();
                //newpos.x = objPos.x - delta.x; newpos.y = objPos.y - delta.y; newpos.z = objPos.z - delta.z;
                //SceneSceneEditor.SetCameraPosLookat(ref newpos, ref objPos);

                m_SceneEditor.UpdateSelectableEntityList(5);

                //float x = 0;
                //float y = 0;
                //float z = 0;
                
                //m_DocLogical.GetDoodadPos(logicObjPtr, ref x, ref y, ref z);
            }
              
            //e.Node.Tag;
        }
Esempio n. 12
0
        private void advTreePoly_AfterNodeSelect(object sender, AdvTreeNodeEventArgs e)
        {
            Node selectedNode = this.advTreePoly.SelectedNode;
            if (selectedNode == null) return;

            if (selectedNode.Level == 0)
            {
                if (selectedNode.Text == "笔刷")
                    SceneSceneEditor.SetEditState(SCENESTATE_CELLLOGICAL);
                else if (selectedNode.Text == "多边形")
                    SceneSceneEditor.SetEditState(SCENESTATE_SELECT);
            }
            else if (selectedNode.Level == 1)
            {
                if (selectedNode.Parent.Text == "多边形")
                {
                    //SceneSceneEditor.SetEditState(SCENESTATE_SELECT);

                    _AtlObjInfo atlobj = (_AtlObjInfo)selectedNode.Tag;
                    ShowPolyInfoUI(atlobj);
                    this.buttonOK.Enabled = false;

                    if (atlobj.iRepresentObjPtr != 0)
                    {
                        if (SceneSceneEditor.GetEditState() != SCENESTATE_PLACEOBJ)
                            MoveCameraToRepresentObj(atlobj.iRepresentObjPtr);
                        SelectOnlyRepresentObj(atlobj.iRepresentObjPtr);
                    }
                }
                else if (selectedNode.Parent.Text == "笔刷")
                {
                    _AtlObjInfo atlobj = (_AtlObjInfo)selectedNode.Tag;
                    ShowBrushInfoUI(atlobj);
                    this.buttonOK.Enabled = false;
                    //set camera
                    string strPos = atlobj.strValues[5];
                    if (strPos != "0.000000,0.000000,0.000000")
                    {
                        string[] strPoses = strPos.Split(new char[] {','},StringSplitOptions.RemoveEmptyEntries);
                        float x = 0.0f, y = 0.0f, z = 0.0f;
                        if (Single.TryParse(strPoses[0], out x) && Single.TryParse(strPoses[1], out y) && Single.TryParse(strPoses[2], out z))
                        {
                            _AtlVector3 brushPos = new _AtlVector3();
                            brushPos.x = x; brushPos.y = y; brushPos.z = z;
                            MoveCameraToPosition(brushPos);
                        }
                    }

                    SetLogicSceneEditorBrushState(atlobj);
                }
            }

        }
Esempio n. 13
0
 public Point SceneToLogic(_AtlVector3 _3DPos)
 {
     return(new Point((int)((_3DPos.x - logicXStart) / 50.0f * 32), (int)((_3DPos.z - logicZStart) / 50.0f * 32)));
 }
Esempio n. 14
0
        private void panel1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right) // 右双击切换scale
            {
                this.m_panel1.scale = 1.0f;
                this.m_panel1.start_adjust_x = 0.0f;
                this.m_panel1.start_adjust_y = 0.0f;
                this.Refresh();
            }
            else if (e.Button == MouseButtons.Left) // 左双击飞镜头到鼠标处
            {
                _AtlVector3 vecOldPos = new _AtlVector3(), vecOldLookAt = new _AtlVector3(), delta = new _AtlVector3();
                SceneSceneEditor.GetCameraPosLookat(ref vecOldPos, ref vecOldLookAt);
                delta.x = vecOldLookAt.x - vecOldPos.x; delta.y = vecOldLookAt.y - vecOldPos.y; delta.z = vecOldLookAt.z - vecOldPos.z;

                _AtlVector3 vecNewPos = this.m_panel1.LogicToScene(new Point((int)mouse_map_x, (int)mouse_map_y));
                vecNewPos.y = vecOldPos.y;
                _AtlVector3 vecNewLookAt = new _AtlVector3();
                vecNewLookAt.x = vecNewPos.x + delta.x; vecNewLookAt.y = vecNewPos.y + delta.y; vecNewLookAt.z = vecNewPos.z + delta.z;

                SceneSceneEditor.SetCameraPosLookat(ref vecNewPos, ref vecNewLookAt);
            }
        }
Esempio n. 15
0
        private void advTreePoly_AfterNodeSelect(object sender, AdvTreeNodeEventArgs e)
        {
            Node selectedNode = this.advTreePoly.SelectedNode;

            if (selectedNode == null)
            {
                return;
            }

            if (selectedNode.Level == 0)
            {
                if (selectedNode.Text == "笔刷")
                {
                    SceneSceneEditor.SetEditState(SCENESTATE_CELLLOGICAL);
                }
                else if (selectedNode.Text == "多边形")
                {
                    SceneSceneEditor.SetEditState(SCENESTATE_SELECT);
                }
            }
            else if (selectedNode.Level == 1)
            {
                if (selectedNode.Parent.Text == "多边形")
                {
                    //SceneSceneEditor.SetEditState(SCENESTATE_SELECT);

                    _AtlObjInfo atlobj = (_AtlObjInfo)selectedNode.Tag;
                    ShowPolyInfoUI(atlobj);
                    this.buttonOK.Enabled = false;

                    if (atlobj.iRepresentObjPtr != 0)
                    {
                        if (SceneSceneEditor.GetEditState() != SCENESTATE_PLACEOBJ)
                        {
                            MoveCameraToRepresentObj(atlobj.iRepresentObjPtr);
                        }
                        SelectOnlyRepresentObj(atlobj.iRepresentObjPtr);
                    }
                }
                else if (selectedNode.Parent.Text == "笔刷")
                {
                    _AtlObjInfo atlobj = (_AtlObjInfo)selectedNode.Tag;
                    ShowBrushInfoUI(atlobj);
                    this.buttonOK.Enabled = false;
                    //set camera
                    string strPos = atlobj.strValues[5];
                    if (strPos != "0.000000,0.000000,0.000000")
                    {
                        string[] strPoses = strPos.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        float    x = 0.0f, y = 0.0f, z = 0.0f;
                        if (Single.TryParse(strPoses[0], out x) && Single.TryParse(strPoses[1], out y) && Single.TryParse(strPoses[2], out z))
                        {
                            _AtlVector3 brushPos = new _AtlVector3();
                            brushPos.x = x; brushPos.y = y; brushPos.z = z;
                            MoveCameraToPosition(brushPos);
                        }
                    }

                    SetLogicSceneEditorBrushState(atlobj);
                }
            }
        }
Esempio n. 16
0
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            SetMyCurrentWindow();

            if (e.Button == MouseButtons.Left)
            {
                switch (m_editState)
                {
                case STATE_SELECTING:
                {
                    //_AtlVector3 vPos = new _AtlVector3();
                    //vPos.x = e.Location.X;
                    //vPos.y = 0;
                    //vPos.z = e.Location.Y;
                    //MousePosToScene(ref vPos);
                    //SceneSceneEditor.AddSelectSceneBlockPoint
                    break;
                }

                case STATE_ADDPOLYVERTEX:
                {
                    //float X, Z;
                    //D3DXVECTOR3 vPos;
                    //MousePosToScene(X, Z, point);
                    //vPos.x = X; vPos.z = Z; vPos.y = 0;
                    //m_lpSceneEditor->AddPolyVetexInTopView(vPos);
                    break;
                }

                case STATE_SELECTLOGICREGION:
                {
                    _AtlVector3 vPos = new _AtlVector3();
                    vPos.x = e.Location.X;
                    vPos.y = 0;
                    vPos.z = e.Location.Y;
                    MousePosToScene(ref vPos);
                    int nX_Start, nZ_Start, nX_Count = 0, nZ_Count = 0;
                    nX_Start = (int)(vPos.x / 3200.0f) > 0 ? (int)(vPos.x / 3200.0f) : 0;
                    nZ_Start = (int)(vPos.z / 3200.0f) > 0 ? (int)(vPos.z / 3200.0f) : 0;
                    SceneSceneEditor.SetAppointLogicalRegion(nX_Start, nZ_Start, nX_Count, nZ_Count);
                    break;
                }

                default:
                    break;
                }
            }

            else if (e.Button == MouseButtons.Middle)
            {
                m_MouseLDown = e.Location;
                SceneSceneEditor.GetCameraTopPos(ref m_CameraPos);
            }

            else if (e.Button == MouseButtons.Right)
            {
                //if (m_bAddPolyVertex)
                //{
                //    m_pEditor.EndAddPolyVertex(0);
                //}
            }
        }
Esempio n. 17
0
 public Point SceneToLogic(_AtlVector3 _3DPos)
 {
     return new Point((int)((_3DPos.x - logicXStart) / 50.0f * 32), (int)((_3DPos.z - logicZStart) / 50.0f * 32));
 }
Esempio n. 18
0
 public _AtlVector3 LogicToScene(Point logicPos)
 {
     _AtlVector3 vec3 = new _AtlVector3();
     vec3.x = (float)(((double)logicPos.X) * 50.0f / 32 + logicXStart);
     vec3.y = 0;
     vec3.z = (float)(((double)logicPos.Y) * 50.0f / 32 + logicZStart);
     return vec3;
 }
Esempio n. 19
0
 private void MoveCameraToPosition(_AtlVector3 newPos)
 {
     _AtlVector3 oldpos = new _AtlVector3(), oldlookat = new _AtlVector3();
     m_SceneEditor.GetCameraPosLookat(ref oldpos, ref oldlookat);
     _AtlVector3 delta = new _AtlVector3();
     delta.x = oldlookat.x - oldpos.x; delta.y = oldlookat.y - oldpos.y; delta.z = oldlookat.z - oldpos.z;
     _AtlVector3 newpos = new _AtlVector3();
     newpos.x = newPos.x - delta.x; newpos.y = newPos.y - delta.y; newpos.z = newPos.z - delta.z;
     m_SceneEditor.SetCameraPosLookat(ref newpos, ref newPos);
 }
Esempio n. 20
0
        /// <summary>
        /// 重写的绘图方法
        /// </summary>
        /// <param name="e">绘图事件参数</param>
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics dc = e.Graphics;
            if (canvasWidth == 0 || canvasHeight == 0)
                return;

            Bitmap bufferBMP = new Bitmap(canvasWidth, canvasHeight); // 绘图的缓冲
            Graphics g = Graphics.FromImage(bufferBMP);
            g.Clear(this.BackColor);
            g.SmoothingMode =  SmoothingMode.HighQuality; //高质量
            g.PixelOffsetMode = PixelOffsetMode.HighQuality; //高像素偏移质量

            if (image != null) // 绘制图片
            {
                RectangleF destRect = new RectangleF(0, 0, canvasWidth, canvasHeight);
                RectangleF srcRect = new RectangleF((1.0f - scale) * image.Width / 2 + start_adjust_x, (1.0f - scale) * image.Height / 2 + start_adjust_y, image.Width * scale, image.Height * scale);
                g.DrawImage(image, destRect, srcRect, GraphicsUnit.Pixel);

                // 画镜头的位置和朝向
                _AtlVector3 cameraLocation = new _AtlVector3();
                _AtlVector3 cameraLookAt = new _AtlVector3();
                SceneSceneEditor.GetCameraPosLookat(ref cameraLocation, ref cameraLookAt);
                Point ptLogic = SceneToLogic(cameraLocation);
                ObjDrawInfo odi = new ObjDrawInfo(new PointF((ptLogic.X - middlemapStartX) / logicWidth, 1.0f - ((ptLogic.Y - middlemapStartY) / logicHeight)), 0, null);
                PointF ptDraw = GetODIClientPos(odi);
                g.DrawEllipse(redPen, ptDraw.X - 3, ptDraw.Y - 3, 7, 7);

//                 foreach (DictionaryEntry entry in m_ODIs)
//                 {
//                     ObjDrawInfo odi = entry.Value as ObjDrawInfo;
//                     PointF pointf = GetODIClientPos(odi);
//                     g.DrawEllipse(redPen, pointf.X - 3, pointf.Y - 3, 7, 7);
//                     int nDir = (int)(odi.nDir);
//                     if ((this.Parent as Preview).m_ShowDir && nDir != -1)
//                     {
//                         PointF adjustment = GetDirEndAdjustment(nDir);
//                         g.DrawLine(redPen, pointf.X, pointf.Y, pointf.X + adjustment.X, pointf.Y + adjustment.Y);
//                     }
//                     if ((this.Parent as Preview).m_ShowObjName)
//                     {
//                         LogicObj curObj = odi.lObj;
//                         string strODI = string.Format("{0}[{1}]", curObj.tyPe.ToLower().EndsWith("point") ? "Point" : (curObj.tyPe.ToLower().EndsWith("vertex") ? "Vertex" : curObj.values[0]), curObj.inDex);
//                         g.DrawString(strODI, timesFont, yellowBrush, pointf.X + 3, pointf.Y + 7);
//                     }
//                 }
            }

            // 从缓冲中绘制最终图像
            dc.DrawImage(bufferBMP, 0, 0); // g.DrawLine(greenPen, p, p + littileSize);
        }
Esempio n. 21
0
        private void TopViewForm_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                if (e.Location.Y < m_LastMousePos.Y)
                {
                    m_pEditor.SetCameraTopScale(EngineLayer.ATLBase.GetSceneEditorCameraTopScale() * 1.05f);
                }
                else
                {
                    float fScale = EngineLayer.ATLBase.GetSceneEditorCameraTopScale() * 0.95f;
                    if (fScale < 0.01f)
                        fScale = 0.01f;
                    m_pEditor.SetCameraTopScale(fScale);
                }
            }

            else if (e.Button == MouseButtons.Middle)
            {
                m_pEditor.SetCameraTopPos(m_CameraPos.x - (e.Location.X - m_MouseLDown.X) * EngineLayer.ATLBase.GetSceneEditorCameraTopScale(),
                    m_CameraPos.z + (e.Location.Y - m_MouseLDown.Y) * EngineLayer.ATLBase.GetSceneEditorCameraTopScale());
            }

            else if (e.Button == MouseButtons.Left)
            {
                if (m_bSelecting)
                {
                    _AtlVector3 vPos = new _AtlVector3();
                    vPos.x = e.Location.X;
                    vPos.y = 0;
                    vPos.z = e.Location.Y;
                    MousePosToScene(ref vPos);

                    //m_pEditor.AddSelectRegionPoint(1, vPos);
//                     if ((GetAsyncKeyState(VK_CONTROL) & 0x8000) != 0)
//                     {
//                         m_pEditor.EndSelectRegion(1, 0);
//                     }
//                     else
//                     {
//                         m_pEditor.EndSelectRegion(0, 0);
//                     }
                }
            }

            m_LastMousePos = e.Location;
        }
Esempio n. 22
0
        private void MoveCameraToRepresentObj(int representObjPtr)
        {
            _AtlVector3 objPos = new _AtlVector3();
            EngineLayer.ATLBase.GetRepresentObjTranslation(representObjPtr, ref objPos);

            MoveCameraToPosition(objPos);

            //_AtlVector3 oldpos = new _AtlVector3(), oldlookat = new _AtlVector3();
            //SceneSceneEditor.GetCameraPosLookat(ref oldpos, ref oldlookat);
            //_AtlVector3 delta = new _AtlVector3();
            //delta.x = oldlookat.x - oldpos.x; delta.y = oldlookat.y - oldpos.y; delta.z = oldlookat.z - oldpos.z;
            //_AtlVector3 newpos = new _AtlVector3();
            //newpos.x = objPos.x - delta.x; newpos.y = objPos.y - delta.y; newpos.z = objPos.z - delta.z;
            //SceneSceneEditor.SetCameraPosLookat(ref newpos, ref objPos);

            SceneSceneEditor.UpdateSelectableEntityList(5);
        }
Esempio n. 23
0
        private void TopViewForm_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                _AtlVector3 vPos = new _AtlVector3();
                vPos.x = e.Location.X;
                vPos.y = 0;
                vPos.z = e.Location.Y;
                MousePosToScene(ref vPos);

                if (m_bSelecting)
                {
                    //m_pEditor.AddSelectRegionPoint(0, vPos);
                }
                if (m_bAddPolyVertex)
                {
                    m_pEditor.AddPolyVetexInTopView(ref vPos);
                }
            }

            else if (e.Button == MouseButtons.Middle)
            {
                m_MouseLDown = e.Location;
                m_CameraPos = m_pEditor.GetCameraTopPos();
            }

            else if (e.Button == MouseButtons.Right)
            {
                if (m_bAddPolyVertex)
                {
                    m_pEditor.EndAddPolyVertex(0);
                }
            }
        }
Esempio n. 24
0
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            SetMyCurrentWindow();

            if (e.Button == MouseButtons.Left)
            {
                switch (m_editState)
                {
                    case STATE_SELECTING:
                        {
                            //_AtlVector3 vPos = new _AtlVector3();
                            //vPos.x = e.Location.X;
                            //vPos.y = 0;
                            //vPos.z = e.Location.Y;
                            //MousePosToScene(ref vPos);
                            //SceneSceneEditor.AddSelectSceneBlockPoint
                            break;
                        }
                    case STATE_ADDPOLYVERTEX:
                        {
                            //float X, Z;
                            //D3DXVECTOR3 vPos;
                            //MousePosToScene(X, Z, point);
                            //vPos.x = X; vPos.z = Z; vPos.y = 0;
                            //m_lpSceneEditor->AddPolyVetexInTopView(vPos);
                            break;
                        }
                    case STATE_SELECTLOGICREGION:
                        {
                            _AtlVector3 vPos = new _AtlVector3();
                            vPos.x = e.Location.X;
                            vPos.y = 0;
                            vPos.z = e.Location.Y;
                            MousePosToScene(ref vPos);
                            int nX_Start, nZ_Start, nX_Count = 0, nZ_Count = 0;
                            nX_Start = (int)(vPos.x / 3200.0f) > 0 ? (int)(vPos.x / 3200.0f) : 0;
                            nZ_Start = (int)(vPos.z / 3200.0f) > 0 ? (int)(vPos.z / 3200.0f) : 0;
                            SceneSceneEditor.SetAppointLogicalRegion(nX_Start, nZ_Start, nX_Count, nZ_Count);
                            break;
                        }
                    default:
                        break;
                }
            }

            else if (e.Button == MouseButtons.Middle)
            {
                m_MouseLDown = e.Location;
                SceneSceneEditor.GetCameraTopPos(ref m_CameraPos);
            }

            else if (e.Button == MouseButtons.Right)
            {
                //if (m_bAddPolyVertex)
                //{
                //    m_pEditor.EndAddPolyVertex(0);
                //}
            }
        }