Пример #1
0
 public void EditTerrain(MapEditorOperation operation, Vector3 MousePos, MOIS.MouseButtonID id)
 {
     if (!Edit) return;
     float intens = 0;
     if (operation == MapEditorOperation.TERRAIN_DEFFORM)
     {
         intens = 0.05f;
         if (id == MOIS.MouseButtonID.MB_Right) intens = -intens;
         Map.mTMgr.Deform((int)MousePos.x, (int)MousePos.z, EditingBrush, intens);
         //DrawEditCursor();
     }
     if (operation == MapEditorOperation.TERRAIN_TEXTURING)
     {
         intens = 0.5f;
         Map.mSMgr.Paint(BufferTextureNumber, (int)MousePos.x, (int)MousePos.z, EditingBrush, intens);
     }
 }
Пример #2
0
        public Vector3 GetCursorPosition(MapEditorOperation operation)
        {
            Vector3 ret = Vector3.ZERO;
            Mogre.Ray ray = OgreEngine.mCam.GetCameraToViewportRay(0.5f, 0.5f);
            Mogre.Vector3 result = Map.mTInfo.RayIntersects(ray);

            if (result != null)
            {
                if (operation == MapEditorOperation.TERRAIN_DEFFORM)
                {
                    ret.x = Map.mTInfo.PosToVertexX(result.x);
                    ret.z = Map.mTInfo.PosToVertexZ(result.z);
                }
                if (operation == MapEditorOperation.TERRAIN_TEXTURING)
                {
                    ret.x = (float)System.Math.Round(result.x / Map.Size.x * Map.TerrainTextureSize - 0.5);
                    ret.z = (float)System.Math.Round(result.z / Map.Size.z * Map.TerrainTextureSize - 0.5);
                }
                if (operation == MapEditorOperation.OBJECT)
                {
                    ret = result;
                }

                /*if (operation == MapEditorOperation.VEGETATION)
                {
                    /*float snapDelta = (OgreEngine.mCam.Position - result).Length / 10f;
                    MousePosInTerrain.X = result.x;
                    MousePosInTerrain.Y = result.z;
                    RbVegetation oldSelVeg = SelectedVegetation;
                    SelectedVegetation = null;
                    float distanceToClosesVegetation = ActiveLand.RubikonLand.SizeX * 2; //big value
                    foreach (RbVegetation veg in ActiveLand.RubikonLand.VegetationList)
                    {
                        float dist = veg.Position.GetDistanceTo(MousePosInTerrain);
                        if (dist < distanceToClosesVegetation && dist < snapDelta)
                        {
                            distanceToClosesVegetation = dist;
                            SelectedVegetation = veg;
                            MousePosInTerrain = veg.Position.Clone();
                            break;
                        }
                    }

                    // deselect
                    if (SelectedVegetation != oldSelVeg && oldSelVeg != null)
                        foreach (RbVegetationSegment seg in oldSelVeg.Segments)
                        {
                            if (VisibleTrees.Contains(seg))
                            {
                                foreach (RbVegetationElement tree in seg.Trees)
                                {
                                    ActiveLand.Manager.GetEntity(tree.TreeUniqueName()).ParentSceneNode.ShowBoundingBox = false;
                                }
                            }
                        }

                    // select
                    if (SelectedVegetation != null && SelectedVegetation != oldSelVeg)
                        foreach (RbVegetationSegment seg in SelectedVegetation.Segments)
                        {
                            if (VisibleTrees.Contains(seg))
                            {
                                foreach (RbVegetationElement tree in seg.Trees)
                                {
                                    ActiveLand.Manager.GetEntity(tree.TreeUniqueName()).ParentSceneNode.ShowBoundingBox = true;
                                }
                            }
                        }
                }

                DrawEditCursor();
                }
                else
                {

                }*/
            }
            return ret;
        }
Пример #3
0
        public void KeyPressed(MOIS.KeyEvent arg)
        {
            if (Edit)
            {
                #region Textures
                if (arg.key == MOIS.KeyCode.KC_F1)
                {
                    BufferTextureNumber = 0;
                }

                if (arg.key == MOIS.KeyCode.KC_F2)
                {
                    BufferTextureNumber = 1;
                }

                if (arg.key == MOIS.KeyCode.KC_F3)
                {
                    BufferTextureNumber = 2;
                }

                if (arg.key == MOIS.KeyCode.KC_F4)
                {
                    BufferTextureNumber = 3;
                }

                if (arg.key == MOIS.KeyCode.KC_F5)
                {
                    BufferTextureNumber = 4;
                }

                if (arg.key == MOIS.KeyCode.KC_F6)
                {
                    BufferTextureNumber = 5;
                }
                #endregion

                if (arg.key == MOIS.KeyCode.KC_U)
                {
                    Map.UpdateLightMap();
                    Map.UpdateTerrain();
                }

                if (arg.key == MOIS.KeyCode.KC_SUBTRACT)
                {
                    SetEditingBrush((ushort)(EditingBrush.Width / 2));
                }

                if (arg.key == MOIS.KeyCode.KC_ADD)
                {
                    SetEditingBrush((ushort)(EditingBrush.Width * 2));
                }

                if (arg.key == MOIS.KeyCode.KC_F8)
                {
                    SaveTerrain(true);
                }

                if (arg.key == MOIS.KeyCode.KC_PGDOWN)
                {
                    Map.mWater.Position += new Vector3(0, -1, 0);
                }

                if (arg.key == MOIS.KeyCode.KC_PGUP)
                {
                    Map.mWater.Position += new Vector3(0, +1, 0);
                }

                if (arg.key == MOIS.KeyCode.KC_F7)
                {
                    SaveTerrain(false);
                }

                if (arg.key == MOIS.KeyCode.KC_TAB)
                {
                    Operation = Operation == MapEditorOperation.TERRAIN_DEFFORM ? MapEditorOperation.TERRAIN_TEXTURING : MapEditorOperation.TERRAIN_DEFFORM;
                }
            }
        }