コード例 #1
0
 // Si target chevauche cette cellule, target voit sa position et la position de ses angles changer pour
 // éviter le chevauchement. Cette cellule garde ses coordonnées originales.
 void OnPushBack(MapEditorCell target)
 {
     // Si target a son angle nord ouest dans cette cellule
     if (IsInCell(target.transform, false))
     {
         // Déterminer s'il faudrait pousser target vers le sud ou l'est.
         float zDiff = EastCorner.position.z - target.transform.position.z;
         float xDiff = SouthCorner.position.x - target.transform.position.x;
         if (xDiff < zDiff)
         {
             if (Input.GetKey(KeyCode.LeftShift))
             {
                 SouthCorner.Translate(-xDiff, 0f, 0f);
             }
             else
             {
                 target.MovePosition(xDiff, 0f, 0f);
             }
         }
         else
         {
             if (Input.GetKey(KeyCode.LeftShift))
             {
                 EastCorner.Translate(0f, 0f, -zDiff);
             }
             else
             {
                 target.MovePosition(0f, 0f, zDiff);
             }
         }
     }
 }
コード例 #2
0
 public bool IsNeighbour(MapEditorCell otherCell)
 {
     return(otherCell.IsInCell(transform.position.x, transform.position.z) ||
            otherCell.IsInCell(EastCorner.position.x, EastCorner.position.z) ||
            otherCell.IsInCell(SouthCorner.position.x, SouthCorner.position.z) ||
            otherCell.IsInCell((EastCorner.position + SouthCorner.localPosition).x, (EastCorner.position + SouthCorner.localPosition).z));
 }
コード例 #3
0
    void LoadMap()
    {
        BinaryFormatter formatter = new BinaryFormatter();

        // Ouverture du fichier
        try
        {
            FileStream file = File.Open(MapEditorCellSystem.SAVE_FOLDER + ChosenMap.MapName + ".mapData", FileMode.Open, FileAccess.Read);
            // Code lecture

            float[] data;
            data = (float[])formatter.Deserialize(file);
            for (int cellID = 0; cellID < data.Length; cellID += 7)
            {
                MapEditorCell cell = CellSystem.AddCell();
                cell.transform.position = new Vector3(data[cellID], data[cellID + 1], data[cellID + 2]);
                cell.GetEastCorner().localPosition  = new Vector3(data[cellID], data[cellID + 5], data[cellID + 3]);
                cell.GetSouthCorner().localPosition = new Vector3(data[cellID + 4], data[cellID + 6], data[cellID + 2]);
            }

            //

            // Fermeture du fichier
            file.Close();
            file.Dispose();
        } catch (IOException e)
        {
            BloodAndBileEngine.Debugger.Log("Pas de données trouvées pour cette map !", Color.yellow);
        }
    }
コード例 #4
0
 void DeselectCurrentCell()
 {
     if (SelectedCell != null)
     {
         SelectedCell.Deselect();
         SelectedCell = null;
     }
     HandlesDisplayed = false;
 }
コード例 #5
0
 void SelectCell(MapEditorCell cell)
 {
     if (SelectedCell != cell)
     {
         DeselectCurrentCell();
         SelectedCell = cell;
         SelectedCell.Select();
     }
     HandlesDisplayed = true;
 }
コード例 #6
0
    void CameraControl()
    {
        if (Input.GetKeyDown(KeyCode.KeypadPlus))
        {
            speed += 1f;
        }
        else if (Input.GetKeyDown(KeyCode.KeypadMinus))
        {
            speed -= 1f;
        }
        float effectiveSpeed = speed;

        if (Input.GetKey(KeyCode.LeftShift))
        {
            effectiveSpeed *= 2;
        }

        float hTranslation = Input.GetAxis("Horizontal") * effectiveSpeed * Time.deltaTime;
        float vTranslation = Input.GetAxis("Vertical") * effectiveSpeed * Time.deltaTime;

        Quaternion yRotation = transform.rotation;

        yRotation.eulerAngles = new Vector3(0f, yRotation.eulerAngles.y, 0f);

        Vector3 translationVect = yRotation * new Vector3(hTranslation, 0f, vTranslation);

        transform.Translate(translationVect, Space.World);

        transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, TargetHeight, transform.position.z), Time.deltaTime);

        float middleMouseAxis = Input.GetAxis("Mouse ScrollWheel");

        Debug.Log(middleMouseAxis);
        TargetHeight += -middleMouseAxis * 6;

        if (TargetHeight < MinHeight)
        {
            TargetHeight = MinHeight;
        }
        else if (TargetHeight > MaxHeight)
        {
            TargetHeight = MaxHeight;
        }

        if (FreeView)
        {
            transform.Rotate(0f, Input.GetAxis("Mouse X"), 0, Space.World);
            transform.Rotate(-Input.GetAxis("Mouse Y"), 0f, 0f, Space.Self);
            if (Input.GetKeyDown(KeyCode.Tab))
            {
                FreeView         = false;
                Cursor.visible   = true;
                Cursor.lockState = CursorLockMode.None;
            }
        }
        else
        {
            if (Input.GetKeyDown(KeyCode.Tab))
            {
                FreeView         = true;
                Cursor.visible   = false;
                Cursor.lockState = CursorLockMode.Locked;
                SelectedCell     = null;
            }
        }
    }