public byte[] GetBytes() { List <byte> bytes = new List <byte>(0x40) { (byte)CamType, Priority, (byte)AdjustType, (byte)CollisionType }; unchecked { bytes.AddRange(BitConverter.GetBytes((ushort)Rotation.X)); bytes.AddRange(BitConverter.GetBytes((ushort)Rotation.Y)); } bytes.AddRange(Position.GetBytes()); bytes.AddRange(Scale.GetBytes()); bytes.AddRange(BitConverter.GetBytes(CameraAngleX)); bytes.AddRange(BitConverter.GetBytes(CameraAngleY)); bytes.AddRange(PointA.GetBytes()); bytes.AddRange(PointB.GetBytes()); bytes.AddRange(BitConverter.GetBytes(Variable)); return(bytes.ToArray()); }
private void Submit() { if (!PointA.HasValue() && !PointB.HasValue()) { base.ShowPopup(CustomPopupMessageType.Error, AppResources.MapPointSelectionNoPointsPlacedPopupText, AppResources.CustomPopupGenericOkMessage, null); return; } if (fromWhereTo) { WhereToMessage.Send(new WhereToModel(PointA.Name, PointB.Name, PointA.Location, PointB.Location)); NavigationService.GoBack(); } else { if (PointA.HasValue() && PointB.HasValue()) { NavigationService.NavigateTo(string.Format("/Views/WhereTo.xaml?startname={0}&endname={1}&startlat={2}&startlon={3}&endlat={4}&endlon={5}", PointA.Name, PointB.Name, PointA.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointA.Location.Longitude.ToString(CultureInfo.InvariantCulture), PointB.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointB.Location.Longitude.ToString(CultureInfo.InvariantCulture))); } else if (PointA.HasValue() && !PointB.HasValue()) { NavigationService.NavigateTo(string.Format("/Views/WhereTo.xaml?startname={0}&startlat={1}&startlon={2}", PointA.Name, PointA.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointA.Location.Longitude.ToString(CultureInfo.InvariantCulture))); } else if (!PointA.HasValue() && PointB.HasValue()) { NavigationService.NavigateTo(string.Format("/Views/WhereTo.xaml?endname={0}&endlat={1}&endlon={2}", PointB.Name, PointB.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointB.Location.Longitude.ToString(CultureInfo.InvariantCulture))); } } }
private void SwitchToStations() { isStopSearch = true; StationsVisibility = Visibility.Visible; SearchVisibility = Visibility.Collapsed; SelectedStationVisibility = Visibility.Collapsed; SelectedCustomPointVisibility = Visibility.Collapsed; SelectedSearchItemVisibility = Visibility.Collapsed; if (isPointA) { PointA.Hide(); } else { PointB.Hide(); } MapSearchResults.Clear(); ClearSearchTextBox(); ShowStopsList(); }
private void BreakLink() { PointA.DisconnectFrom(PointB); PointB.DisconnectFrom(PointA); PointA = null; PointB = null; }
private Block DeterminateOre(PointB point, PointI chunkPosition) { const float coeff = 0.9f; var noiseValue = Get3DNoise( point.X * coeff + chunkPosition.X * Chunk <Block> .XLength, point.Y * coeff, point.Z * coeff + chunkPosition.Z * Chunk <Block> .ZLength); if (noiseValue >= 0.7 && noiseValue < 0.72) { return(new Block(BaseBlocks.CoalOre, point)); } if (noiseValue >= 0.01 && noiseValue < 0.015 && point.Y <= 60) { return(new Block(BaseBlocks.GoldOre, point)); } if (noiseValue >= 0.8 && noiseValue < 0.82) { return(new Block(BaseBlocks.IronOre, point)); } if (noiseValue >= -0.307 && noiseValue < -0.3 && point.Y <= 35) { return(new Block(BaseBlocks.DiamondOre, point)); } return(null); }
public override void RemoveItem(ref List <UndoRedoAction> undoPipe) { base.RemoveItem(ref undoPipe); PointA.RemoveItem(ref undoPipe); PointB.RemoveItem(ref undoPipe); PointC.RemoveItem(ref undoPipe); PointD.RemoveItem(ref undoPipe); }
public Vector2[] GetAdjustedPointPositions(Vector2 position, float rotation) { Vector2[] points = new Vector2[3]; points[0] = PointA.Rotate(rotation) + position; points[1] = PointB.Rotate(rotation) + position; points[2] = PointC.Rotate(rotation) + position; return(points); }
/// <summary> /// override method get square for simple triangle /// </summary> /// <returns>Value of the square simple triangle</returns> public override double GetSquare() { double sizeSideAB = PointA.GetDistance(PointB); double sizeSideAC = PointA.GetDistance(PointC); double sizeSideBC = PointB.GetDistance(PointC); double poluPim = (sizeSideAB + sizeSideAC + sizeSideBC) / 2; return(Math.Sqrt(poluPim * (poluPim - sizeSideAB) * (poluPim - sizeSideAC) * (poluPim - sizeSideBC))); }
public virtual void RemoveItem(List <UndoRedoAction> undoPipe) { lock (board.ParentControl) { PointA.RemoveItem(undoPipe); PointB.RemoveItem(undoPipe); PointC.RemoveItem(undoPipe); PointD.RemoveItem(undoPipe); } }
private void RemovePointB() { PointB.ClearValues(); if (!isPointA) { SelectedStationVisibility = Visibility.Collapsed; SelectedSearchItemVisibility = Visibility.Collapsed; SelectedCustomPointVisibility = Visibility.Collapsed; } }
public override void OnItemPlaced(List <UndoRedoAction> undoPipe) { lock (board.ParentControl) { base.OnItemPlaced(undoPipe); PointA.OnItemPlaced(undoPipe); PointB.OnItemPlaced(undoPipe); PointC.OnItemPlaced(undoPipe); PointD.OnItemPlaced(undoPipe); } }
public override void RemoveItem(List <UndoRedoAction> undoPipe) { lock (board.ParentControl) { base.RemoveItem(undoPipe); PointA.RemoveItem(undoPipe); PointB.RemoveItem(undoPipe); PointC.RemoveItem(undoPipe); PointD.RemoveItem(undoPipe); } }
public void Add_Should() { var point1 = new PointB(1, 1, 1); var point123 = new PointB(1, 2, 3); Assert.AreEqual(new PointB(2, 3, 4), point1.Add(point123)); var pointMax = new PointB(byte.MaxValue, byte.MaxValue, byte.MaxValue); Assert.AreEqual(new PointB(0, 1, 2), pointMax.Add(point123)); }
public override int GetHashCode() { unchecked { var hashCode = PointA.GetHashCode(); hashCode = (hashCode * 397) ^ PointB.GetHashCode(); hashCode = (hashCode * 397) ^ PointC.GetHashCode(); hashCode = (hashCode * 397) ^ PointD.GetHashCode(); return(hashCode); } }
private void EnforceConnection() { if (LinkEstablished && LinkActive) { PointA.ConnectTo(PointB, NavNodeConnection.NavConnectionType.Standard); if (Bidirectional) { PointB.ConnectTo(PointA, NavNodeConnection.NavConnectionType.Standard); } } }
public void Distant_Should() { var point1 = new PointB(1, 1, 1); var point3 = new PointB(3, 3, 3); var point123 = new PointB(1, 2, 3); Assert.AreEqual(0, point1.GetDistance(point1)); Assert.AreEqual(2, point1.GetDistance(point3)); Assert.AreEqual(point1.GetDistance(point123), point123.GetDistance(point1)); }
private void PointAClick() { if (!this.isPointA) { PointA.Select(); this.isPointA = true; PointB.Deselect(); if (PointA.HasValue()) { if (PointA.Station == null && PointA.CustomPoint == null) { SelectedSearchItemForView = PointA.SearchItem; SelectedStationVisibility = Visibility.Collapsed; SelectedCustomPointVisibility = Visibility.Collapsed; SelectedSearchItemVisibility = Visibility.Visible; } else if (PointA.SearchItem == null && PointA.CustomPoint == null) { SelectedStationForView = PointA.Station; SelectedSearchItemVisibility = Visibility.Collapsed; SelectedCustomPointVisibility = Visibility.Collapsed; SelectedStationVisibility = Visibility.Visible; } else { SelectedCustomPointForView = PointA.CustomPoint; SelectedSearchItemVisibility = Visibility.Collapsed; SelectedStationVisibility = Visibility.Collapsed; SelectedCustomPointVisibility = Visibility.Visible; } PointA.Show(); } else { PointA.Hide(); SelectedStationVisibility = Visibility.Collapsed; SelectedSearchItemVisibility = Visibility.Collapsed; SelectedCustomPointVisibility = Visibility.Collapsed; } } }
public Chunk <Block> Generate(Chunk <Block> chunk) { for (byte i = 0; i < Chunk <Block> .XLength; i++) { for (byte k = 0; k < Chunk <Block> .ZLength; k++) { var innerPoint = PointF.CreateXZ(chunk.Position.X * Chunk <Block> .XLength + i, chunk.Position.Z * Chunk <Block> .ZLength + k); var value = (int)(highGenerator.Generate(innerPoint) + 3); for (var y = value; y >= 0; y--) { var position = new PointB(i, (byte)y, k); chunk[position] = new Block(BaseBlocks.Bedrock, position); } } } return(chunk); }
public T this[PointB position] { get { if (!CheckBounds(position)) { throw new ArgumentException("Значение не попадает в диапазон чанка: " + position); } return(blocks[position.X, position.Y, position.Z]); } set { if (!CheckBounds(position)) { throw new ArgumentException("Значение не попадает в диапазон чанка: " + position); } blocks[position.X, position.Y, position.Z] = value; } }
/// <summary> /// override method get square for right triangle /// </summary> /// <returns>Value of the square right triangle</returns> public override double GetSquare() { double sizeSideAB = PointA.GetDistance(PointB); double sizeSideAC = PointA.GetDistance(PointC); double sizeSideBC = PointB.GetDistance(PointC); if (sizeSideAB < sizeSideBC && sizeSideAC < sizeSideBC) { return(sizeSideAB * sizeSideAC / 2); } else { if (sizeSideAB < sizeSideBC && sizeSideBC < sizeSideAC) { return(sizeSideAB * sizeSideBC / 2); } } return(sizeSideAC * sizeSideBC / 2); }
public Chunk <Block> Generate(PointI point) { var chunk = new Chunk <Block>(point); for (byte i = 0; i < Chunk <Block> .XLength; i++) { for (byte k = 0; k < Chunk <Block> .ZLength; k++) { var innerPoint = PointF.CreateXZ(point.X * Chunk <Block> .XLength + i, point.Z * Chunk <Block> .ZLength + k); var value = (int)(highGenerator.Generate(innerPoint) * 22f + 100); for (var j = value; j >= 0; j--) { var position = new PointB(i, (byte)j, k); chunk[position] = new Block(j == value ? BaseBlocks.Grass : BaseBlocks.Dirt, position); } } } return(chunk); }
void EstablishLink() { _lastPointAPos = transform.TransformPoint(PointAPos); _lastPointBPos = transform.TransformPoint(PointBPos); _lastBidirectional = Bidirectional; PointA = NavMesh2D.ClosestNodeTo(transform.TransformPoint(PointAPos)); PointB = NavMesh2D.ClosestNodeTo(transform.TransformPoint(PointBPos)); if (PointA == null || PointB == null) { PointA = NavMesh2D.ActualClosestNodeTo(transform.TransformPoint(PointAPos)); PointB = NavMesh2D.ActualClosestNodeTo(transform.TransformPoint(PointBPos)); if (PointA == null || PointB == null) { return; } } if (Bidirectional && PointA.IsConnectedTo(PointB) && PointB.IsConnectedTo(PointA)) { PointA = null; PointB = null; return; } if (!Bidirectional && PointA.IsConnectedTo(PointB)) { PointA = null; PointB = null; return; } PointA.ConnectTo(PointB, NavNodeConnection.NavConnectionType.Standard); if (Bidirectional) { PointB.ConnectTo(PointA, NavNodeConnection.NavConnectionType.Standard); } }
public Chunk <Block> Generate(PointI point) { var chunk = new Chunk <Block>(point); for (byte i = 0; i < Chunk <Block> .XLength; i++) { for (byte k = 0; k < Chunk <Block> .ZLength; k++) { var innerPoint = PointF.CreateXZ(point.X * Chunk <Block> .XLength + i, point.Z * Chunk <Block> .ZLength + k); var value = (int)(highGenerator.Generate(innerPoint) * 22f + 100); var acme = new PointB(i, (byte)value, k); chunk[acme] = new Block(BaseBlocks.Grass, acme); for (var y = value - 1; y >= 0; y--) { var position = new PointB(i, (byte)y, k); chunk[position] = new Block(BaseBlocks.Dirt, position); } } } return(chunk); }
public Chunk <Block> Generate(PointI point) { const float coeff = 0.9f; var chunk = new Chunk <Block>(point); for (var i = 0; i < Chunk <Block> .XLength; i++) { for (var j = 0; j < Chunk <Block> .YLength; j++) { for (var k = 0; k < Chunk <Block> .ZLength; k++) { if (Get3DNoise(i * coeff + point.X * Chunk <Block> .XLength, j * coeff, k * coeff + point.Z * Chunk <Block> .ZLength) >= 0.2) { var position = new PointB((byte)i, (byte)j, (byte)k); chunk[position] = new Block(BaseBlocks.Grass, position); } } } } return(chunk); }
public Chunk <Block> Generate(PointI point) { var rnd = new Random(); var chunk = new Chunk <Block>(point); var allBlocks = BaseBlocks.AllBlocks; for (byte i = 0; i < Chunk <Block> .XLength; i++) { for (byte j = 0; j < Chunk <Block> .YLength - 1; j++) { for (byte k = 0; k < Chunk <Block> .ZLength; k++) { var position = new PointB(i, j, k); var rndValue = rnd.Next(0, allBlocks.Count * 2); if (rndValue < allBlocks.Count) { chunk[position] = new Block(allBlocks[rndValue], position); } } } } return(chunk); }
private PointF DefineSpawn(PointI ready) { var chunk = World[ready]; for (byte x = 0; x < Chunk <Block> .XLength; x++) { for (byte z = 0; z < Chunk <Block> .ZLength; z++) { for (byte y = 253; y > 0; y--) { var p0 = new PointB(x, y, z); var p1 = new PointB(x, (byte)(y + 1), z); var p2 = new PointB(x, (byte)(y + 2), z); if (chunk[p0] != null && chunk[p1] == null && chunk[p2] == null) { return((BlockWorld.GetAbsolutePosition(p1, ready).AsVector() + new Vector3(0.5f, 0, 0.5f)) .AsPointF()); } } } } throw new ArgumentException("Не удалось найти подходящего для спавна места", ready.ToString()); }
public byte[] GetBytes() { List <byte> bytes = new List <byte>(0x40) { CamType, Unknown, PanSpeed, Priority }; unchecked { bytes.AddRange(BitConverter.GetBytes((ushort)Unknown_2)); bytes.AddRange(BitConverter.GetBytes((ushort)Rotation.Y)); } bytes.AddRange(Position.GetBytes()); bytes.AddRange(Scale.GetBytes()); bytes.AddRange(BitConverter.GetBytes(NotUsed)); bytes.AddRange(PointA.GetBytes()); bytes.AddRange(PointB.GetBytes()); bytes.AddRange(BitConverter.GetBytes(Variable)); return(bytes.ToArray()); }
public Chunk <Block> Generate(PointI point) { var chunk = new Chunk <Block>(point); for (byte i = 0; i < Chunk <Block> .XLength; i++) { for (byte j = 0; j < 5; j++) { for (byte k = 0; k < Chunk <Block> .ZLength; k++) { var position = new PointB(i, j, k); chunk[position] = j switch { 0 => new Block(BaseBlocks.Bedrock, position), 4 => new Block(BaseBlocks.Grass, position), _ => new Block(BaseBlocks.Dirt, position) }; } } } return(chunk); } }
public override double GetArea() { double p = this.GetPerimeter() / 2.0; return(Math.Sqrt(p * (p - PointA.GetDistance(PointB)) * (p - PointA.GetDistance(PointC)) * (p - PointB.GetDistance(PointC)))); }
public override double GetPerimeter() { return(PointA.GetDistance(PointB) + PointA.GetDistance(PointC) + PointB.GetDistance(PointC)); }