// 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); } } } }
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)); }
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); } }
void DeselectCurrentCell() { if (SelectedCell != null) { SelectedCell.Deselect(); SelectedCell = null; } HandlesDisplayed = false; }
void SelectCell(MapEditorCell cell) { if (SelectedCell != cell) { DeselectCurrentCell(); SelectedCell = cell; SelectedCell.Select(); } HandlesDisplayed = true; }
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; } } }