/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.GetBoundingCube ()"/> /// </summary> /// <returns></returns> public override BoundingCube GetBoundingCube() { if (!extent.HasValue) { extent = Flattened.GetBoundingCube(); } return(extent.Value); }
public static T Inflate <T>(this Flattened <T> flattened) where T : class { flattened.Require("flattened"); var serializer = new DataContractSerializer(typeof(T)); var sourceStream = new MemoryStream(flattened.Data); sourceStream.TryToRewind(); return(serializer.ReadObject(sourceStream) as T); }
private void CreateRooms() { int roomCount = UnityEngine.Random.Range(MIN_ROOM_NUM, MAX_ROOM_NUM); var blocksFlattened = new Flattened <Block>(blocks); var blocksOfRooms = blocksFlattened.TakeRandomN(roomCount).ToList(); rooms = blocksOfRooms .Select(block => MakeRoomInBlock(block.rect)) .ToList(); foreach (var(block, room) in blocksOfRooms.Zip(rooms, System.ValueTuple.Create)) { block.room = room; } }
/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.Position (GeoPoint, GeoVector, double)"/> /// </summary> /// <param name="fromHere"></param> /// <param name="direction"></param> /// <param name="precision"></param> /// <returns></returns> public override double Position(GeoPoint fromHere, GeoVector direction, double precision) { return(Flattened.Position(fromHere, direction, precision)); }
/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.HitTest (Projection.PickArea, bool)"/> /// </summary> /// <param name="area"></param> /// <param name="onlyInside"></param> /// <returns></returns> public override bool HitTest(Projection.PickArea area, bool onlyInside) { return(Flattened.HitTest(area, onlyInside)); }
/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.HitTest (Projection, BoundingRect, bool)"/> /// </summary> /// <param name="projection"></param> /// <param name="rect"></param> /// <param name="onlyInside"></param> /// <returns></returns> public override bool HitTest(Projection projection, BoundingRect rect, bool onlyInside) { return(Flattened.HitTest(projection, rect, onlyInside)); }
/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.HitTest (ref BoundingCube, double)"/> /// </summary> /// <param name="cube"></param> /// <param name="precision"></param> /// <returns></returns> public override bool HitTest(ref BoundingCube cube, double precision) { return(Flattened.HitTest(ref cube, precision)); }
/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.GetExtent (Projection, ExtentPrecision)"/> /// </summary> /// <param name="projection"></param> /// <param name="extentPrecision"></param> /// <returns></returns> public override BoundingRect GetExtent(Projection projection, ExtentPrecision extentPrecision) { return(Flattened.GetExtent(projection, extentPrecision)); }
/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.FindSnapPoint (SnapPointFinder)"/> /// </summary> /// <param name="spf"></param> public override void FindSnapPoint(SnapPointFinder spf) { // besser wäre es den SnapPointFinder mit einer ModOp auszustatten, die überschrieben werden kann Flattened.FindSnapPoint(spf); }
/// <summary> /// Overrides <see cref="CADability.GeoObject.IGeoObjectImpl.PrepareDisplayList (double)"/> /// </summary> /// <param name="precision"></param> public override void PrepareDisplayList(double precision) { Flattened.PrepareDisplayList(precision); // kann halt wieder verloren gehen, wird wohl bis zum Paint halten??? }