private void WriteChildren(ChildPosition position, TextWriter writer) { foreach (IElement child in _data.Children .Where(x => x.Position == position) .Select(x => x.Element)) { child.Write(writer); } }
public void AddChild(Gtk.Widget child, ChildPosition position) { child.Parent = this; child.Show(); children.Add(new SmartScrolledWindowContainerChild(this, child) { ChildPosition = position }); }
public Segment(Planet planetInfo, TriangleD noElevationRange, Segment parentChunk, ulong id, ChildPosition childPosition = ChildPosition.NoneNoParent) { ID = id; this.planetInfo = planetInfo; this.parent = parentChunk; this.childPosition = childPosition; this.NoElevationRange = noElevationRange; this.rangeToCalculateScreenSizeOn = noElevationRange; }
void AddChild(Vector3d a, Vector3d b, Vector3d c, ChildPosition cp, ulong id) { var range = new TriangleD() { a = a, b = b, c = c }; var child = new Segment(planetInfo, range, this, this.ID << 2 | id); Children.Add(child); child.subdivisionDepth = subdivisionDepth + 1; child.rangeToCalculateScreenSizeOn = range; }
private void AddChild(Vector3 a, Vector3 b, Vector3 c, Vector3 d, ChildPosition cp, ushort index) { var range = new Range() { a = a, b = b, c = c, d = d, }; var child = Create( planet: planet, parent: this, range: range, id: id << 2 | index, treeDepth: treeDepth + 1, childPosition: cp ); children.Add(child); }
public static Chunk Create(Planet planet, Range range, ulong id, Chunk parent = null, int treeDepth = 0, ChildPosition childPosition = ChildPosition.NoneNoParent) { MyProfiler.BeginSample("Procedural Planet / Create chunk"); var chunk = new Chunk(); chunk.planet = planet; chunk.id = id; chunk.parent = parent; chunk.treeDepth = treeDepth; chunk.childPosition = childPosition; chunk.rangeUnitCubePosRealSubdivided = range; //chunk.rangePosToGenerateInto = new Range //{ // a = chunk.rangeUnitCubePos.a.normalized * planet.planetConfig.radiusStart, // b = chunk.rangeUnitCubePos.b.normalized * planet.planetConfig.radiusStart, // c = chunk.rangeUnitCubePos.c.normalized * planet.planetConfig.radiusStart, // d = chunk.rangeUnitCubePos.d.normalized * planet.planetConfig.radiusStart, //}; if (chunk.chunkConfig.useSkirts) { var ratio = ((chunk.chunkConfig.numberOfVerticesOnEdge - 1) / 2.0f) / ((chunk.chunkConfig.numberOfVerticesOnEdge - 1 - 2) / 2.0f); var center = chunk.rangeUnitCubePosRealSubdivided.CenterPos; var a = chunk.rangeUnitCubePosRealSubdivided.a - center; var b = chunk.rangeUnitCubePosRealSubdivided.b - center; var c = chunk.rangeUnitCubePosRealSubdivided.c - center; var d = chunk.rangeUnitCubePosRealSubdivided.d - center; chunk.rangeUnitCubePosToGenerateInto.a = a * ratio + center; chunk.rangeUnitCubePosToGenerateInto.b = b * ratio + center; chunk.rangeUnitCubePosToGenerateInto.c = c * ratio + center; chunk.rangeUnitCubePosToGenerateInto.d = d * ratio + center; } else { chunk.rangeUnitCubePosToGenerateInto = chunk.rangeUnitCubePosRealSubdivided; } chunk.rangePosToCalculateScreenSizeOn = new Range { a = chunk.rangeUnitCubePosToGenerateInto.a.normalized * planet.planetConfig.radiusStart, b = chunk.rangeUnitCubePosToGenerateInto.b.normalized * planet.planetConfig.radiusStart, c = chunk.rangeUnitCubePosToGenerateInto.c.normalized * planet.planetConfig.radiusStart, d = chunk.rangeUnitCubePosToGenerateInto.d.normalized * planet.planetConfig.radiusStart, }; chunk.chunkRadius = chunk.rangePosToCalculateScreenSizeOn.ToBoundingSphere().radius; //chunk.rangeDirToGenerateInto = new Range //{ // a = chunk.rangePosToGenerateInto.a.normalized, // b = chunk.rangePosToGenerateInto.b.normalized, // c = chunk.rangePosToGenerateInto.c.normalized, // d = chunk.rangePosToGenerateInto.d.normalized, //}; //chunk.rangeLocalPosToGenerateInto = new Range //{ // a = chunk.rangePosToGenerateInto.a - chunk.offsetFromPlanetCenter, // b = chunk.rangePosToGenerateInto.b - chunk.offsetFromPlanetCenter, // c = chunk.rangePosToGenerateInto.c - chunk.offsetFromPlanetCenter, // d = chunk.rangePosToGenerateInto.d - chunk.offsetFromPlanetCenter, //}; chunk.chunkRangeMaxAngleDeg = Mathf.Max( Vector3.Angle(chunk.rangeUnitCubePosToGenerateInto.a, chunk.rangeUnitCubePosToGenerateInto.b), Vector3.Angle(chunk.rangeUnitCubePosToGenerateInto.b, chunk.rangeUnitCubePosToGenerateInto.c), Vector3.Angle(chunk.rangeUnitCubePosToGenerateInto.c, chunk.rangeUnitCubePosToGenerateInto.d), Vector3.Angle(chunk.rangeUnitCubePosToGenerateInto.d, chunk.rangeUnitCubePosToGenerateInto.a), Vector3.Angle(chunk.rangeUnitCubePosToGenerateInto.a, chunk.rangeUnitCubePosToGenerateInto.c), Vector3.Angle(chunk.rangeUnitCubePosToGenerateInto.b, chunk.rangeUnitCubePosToGenerateInto.d) ); chunk.offsetFromPlanetCenter = chunk.rangeUnitCubePosToGenerateInto.CenterPos.normalized * planet.planetConfig.radiusStart; MyProfiler.EndSample(); return(chunk); }
public bool UnregisterElement( ChildPosition positionToRemove, IHighlightableElement element ) { if( positionToRemove == ChildPosition.Pre ) { return _preChildren.Remove( element ); } else if( positionToRemove == ChildPosition.Post ) { return _postChildren.Remove( element ); } return false; }
/// <summary> /// Adds an element at the beginning or the end of the child list. /// An element can be added only once for a given position. /// </summary> /// <remarks>For ChildPosition.Pre, the element is added to the position 0 of the list, for ChildPosition.Post is added at the end</remarks> /// <param name="position"></param> /// <param name="child"></param> /// <returns>Returns true if the element could be added and did not exist yet. Otherwise false</returns> public bool RegisterElementAt( ChildPosition position, IHighlightableElement child ) { if( child == null ) throw new ArgumentNullException( "child" ); if( position == ChildPosition.Pre ) { if( _preChildren.Contains( child ) ) return false; _preChildren.Insert( 0, child ); return true; } else if( position == ChildPosition.Post ) { if( _postChildren.Contains( child ) ) return false; _postChildren.Add( child ); return true; } return false; }
/// <summary> /// Enables unregistering a tree node (and its children) that had been registered inside an already registered module (see <see cref="RegisterInRegisteredElementAt"/> ) /// </summary> /// <param name="targetModuleName">The name of the target module</param> /// <param name="extensibleElementName">The name of the target node</param> /// <param name="position"></param> /// <param name="element">The element to unregister</param> /// <returns></returns> public bool UnregisterInRegisteredElement( string targetModuleName, string extensibleElementName, ChildPosition position, IHighlightableElement element ) { IHighlightableElement registeredElement; if( _registeredElements.TryGetValue( targetModuleName, out registeredElement ) ) { _scrollingStrategy.ElementUnregistered( element ); return BrowseTree( registeredElement, e => { IExtensibleHighlightableElement extensibleElement = e as IExtensibleHighlightableElement; if( extensibleElement != null && extensibleElement.Name == extensibleElementName ) return extensibleElement.UnregisterElement( position, element ); else return false; } ); } return false; }
public ElementChild(IElement element, ChildPosition position) { Element = element ?? throw new ArgumentNullException(nameof(element)); Position = position; }
public IElement <TTag> Html(string html, ChildPosition position = ChildPosition.AfterOpening) => Clone(_data.Child(new ContentElement(Tag.Helper.Adapter.Writer, html, false), position));
public IElement <TTag> Text(object text, ChildPosition position = ChildPosition.AfterOpening) => Clone(_data.Child(new ContentElement(Tag.Helper.Adapter.Writer, text?.ToString(), true), position));
public IElement <TTag> Child(IElement child, ChildPosition position = ChildPosition.AfterOpening) => Clone(_data.Child(child, position));
public void AddChild(Widget child, ChildPosition position) { AddChild(child); positions[child] = position; }
public ParentIndiciesEnumerator(Segment parentChunk, ChildPosition myPos) { this.parentChunk = parentChunk; this.myPos = myPos; Reset(); }
public void AddChild (Gtk.Widget child, ChildPosition position) { child.Parent = this; child.Show (); children.Add (new SmartScrolledWindowContainerChild (this, child) { ChildPosition = position }); }
public ElementData Child(IElement child, ChildPosition position) => child == null ? this : new ElementData(this, children: Children.Add(new ElementChild(child, position)));