private static List <MFW3D.Renderable.RenderableObject> getActiveLayers(MFW3D.Renderable.RenderableObject renderable) { List <MFW3D.Renderable.RenderableObject> renderableList = new List <MFW3D.Renderable.RenderableObject>(); if (renderable.IsOn) { if (renderable is MFW3D.Renderable.RenderableObjectList) { MFW3D.Renderable.RenderableObjectList rol = (MFW3D.Renderable.RenderableObjectList)renderable; for (int i = 0; i < rol.ChildObjects.Count; i++) { MFW3D.Renderable.RenderableObject childRenderable = (MFW3D.Renderable.RenderableObject)rol.ChildObjects[i]; List <MFW3D.Renderable.RenderableObject> childList = getActiveLayers(childRenderable); if (childList != null && childList.Count > 0) { for (int j = 0; j < childList.Count; j++) { renderableList.Add(childList[j]); } } } } else { renderableList.Add(renderable); } } return(renderableList); }
private void getRenderButtons(MFW3D.Renderable.RenderableObject ro, System.Collections.ArrayList renderList, System.Collections.ArrayList roList) { if (ro.MetaData != null) { string toolbarImagePath = (string)ro.MetaData["ToolBarImagePath"]; if (toolbarImagePath != null) { ResourceCacheEntry cacheEntry = (ResourceCacheEntry)m_ResourceCache[toolbarImagePath]; if (cacheEntry == null) { if (System.IO.File.Exists(toolbarImagePath)) { renderList.Add(toolbarImagePath); roList.Add(ro); } } else { renderList.Add(toolbarImagePath); roList.Add(ro); } } } if (ro is MFW3D.Renderable.RenderableObjectList) { MFW3D.Renderable.RenderableObjectList rol = (MFW3D.Renderable.RenderableObjectList)ro; for (int i = 0; i < rol.Count; i++) { MFW3D.Renderable.RenderableObject childRo = (MFW3D.Renderable.RenderableObject)rol.ChildObjects[i]; getRenderButtons(childRo, renderList, roList); } } }
static void node_OnCheckStateChanged(object o, bool state) { SimpleTreeNodeWidget node = (SimpleTreeNodeWidget)o; if (node != null && node.Tag != null && node.Tag is MFW3D.Renderable.RenderableObject) { MFW3D.Renderable.RenderableObject renderable = (MFW3D.Renderable.RenderableObject)node.Tag; renderable.IsOn = state; } }
private string getZOrderStringFromIRenderable(MFW3D.Renderable.RenderableObject renderable) { if (renderable.ParentList != null) { return(getZOrderStringFromIRenderable(renderable.ParentList) + "." + getIRenderableIndexFromParent(renderable).ToString().PadLeft(5, '0')); } else { return(""); } }
private static bool IsRenderableVisible(MFW3D.Renderable.RenderableObject renderable) { if (!renderable.IsOn) { return(false); } else if (renderable.ParentList != null) { return(IsRenderableVisible(renderable.ParentList)); } else { return(true); } }
public SurfaceImage( string imageFilePath, double north, double south, double west, double east, Texture texture, MFW3D.Renderable.RenderableObject parentRenderable) { m_ParentRenderable = parentRenderable; m_ImageFilePath = imageFilePath; m_North = north; m_South = south; m_West = west; m_East = east; m_Texture = texture; }
private static void UpdateAllLayers(SimpleTreeNodeWidget node, MFW3D.Renderable.RenderableObject renderable) { MFW3D.Renderable.RenderableObject nodeRenderable = (MFW3D.Renderable.RenderableObject)node.Tag; if (nodeRenderable != renderable) { node.Name = renderable.Name; node.Tag = renderable; } if (node.Enabled != renderable.IsOn) { node.Enabled = renderable.IsOn; } if (renderable is MFW3D.Renderable.RenderableObjectList) { MFW3D.Renderable.RenderableObjectList rol = (MFW3D.Renderable.RenderableObjectList)renderable; for (int i = 0; i < rol.ChildObjects.Count; i++) { MFW3D.Renderable.RenderableObject childRenderable = (MFW3D.Renderable.RenderableObject)rol.ChildObjects[i]; if (node.ChildWidgets.Count == i) { SimpleTreeNodeWidget childNode = new SimpleTreeNodeWidget(childRenderable.Name); childNode.Tag = childRenderable; childNode.ParentWidget = node; childNode.OnCheckStateChanged += new CheckStateChangedHandler(node_OnCheckStateChanged); node.ChildWidgets.Add(childNode); } UpdateAllLayers((SimpleTreeNodeWidget)node.ChildWidgets[i], childRenderable); } while (node.ChildWidgets.Count > rol.ChildObjects.Count) { rol.ChildObjects.RemoveAt(rol.ChildObjects.Count - 1); } } else if (node.ChildWidgets.Count > 0) { node.ChildWidgets.Clear(); } }
private int getIRenderableIndexFromParent(MFW3D.Renderable.RenderableObject renderable) { if (renderable.ParentList == null) { return(-1); } else { for (int index = 0; index < renderable.ParentList.ChildObjects.Count; index++) { if (renderable == renderable.ParentList.ChildObjects[index]) { return(index); } } } return(-1); }
//Point mp = new Point(); protected override void OnMouseUp(MouseEventArgs e) { if (e.Button == MouseButtons.Left) { m_LastMousePosition = new Point(e.X, e.Y); System.Collections.ArrayList renderList = new ArrayList(); System.Collections.ArrayList roList = new ArrayList(); if (m_WorldWindow.CurrentWorld != null) { for (int i = 0; i < m_WorldWindow.CurrentWorld.RenderableObjects.Count; i++) { MFW3D.Renderable.RenderableObject ro = (MFW3D.Renderable.RenderableObject)m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects[i]; getRenderButtons(ro, renderList, roList); } } int xIncr = 0; int buttonSize = Height / 2; int totalWidth = buttonSize * renderList.Count; xIncr += Width / 2 - totalWidth / 2; if (m_LastMousePosition != Point.Empty && m_LastMousePosition.X >= xIncr && m_LastMousePosition.X <= xIncr + totalWidth) { int closestIcon = (m_LastMousePosition.X - xIncr) / buttonSize; MFW3D.Renderable.RenderableObject curRo = (MFW3D.Renderable.RenderableObject)roList[closestIcon]; if (curRo != null) { curRo.IsOn = !curRo.IsOn; } } } base.OnMouseUp(e); }
private void RenderToolbar() { System.Collections.ArrayList renderList = new ArrayList(); System.Collections.ArrayList roList = new ArrayList(); if (m_WorldWindow.CurrentWorld != null) { for (int i = 0; i < m_WorldWindow.CurrentWorld.RenderableObjects.Count; i++) { MFW3D.Renderable.RenderableObject ro = (MFW3D.Renderable.RenderableObject)m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects[i]; getRenderButtons(ro, renderList, roList); } } int xIncr = 0; int buttonSize = Height / 2; int mouseoverIcon = -1; int totalWidth = buttonSize * renderList.Count; xIncr += Width / 2 - totalWidth / 2; double d = 0; int t = buttonSize; if (m_LastMousePosition != Point.Empty && m_LastMousePosition.X >= xIncr && m_LastMousePosition.X <= xIncr + totalWidth) { int closestIcon = (m_LastMousePosition.X - xIncr) / buttonSize; d = 1.0 - Math.Abs((double)(double)m_LastMousePosition.X - (closestIcon * buttonSize + xIncr)) / ((double)buttonSize); d *= (int)((Height - buttonSize)); mouseoverIcon = closestIcon; d = Height - buttonSize - 10; } if (mouseoverIcon >= 0) { buttonSize = (totalWidth - (buttonSize + (int)d)) / (renderList.Count - 1); d += totalWidth - (renderList.Count - 1) * buttonSize - buttonSize - d; } for (int i = 0; i < renderList.Count; i++) { string buttonKey = (string)renderList[i]; MFW3D.Renderable.RenderableObject curRo = (MFW3D.Renderable.RenderableObject)roList[i]; int sizeIncr = 0; int yOffset = 7 + Height / 2 - t / 2; if (mouseoverIcon == i) { sizeIncr = (int)d; yOffset += (int)d / 2 - 2; this.m_DrawingFont.DrawText( null, curRo.Name, new Rectangle( (xIncr < Width / 2 ? xIncr + buttonSize + sizeIncr + 5 : xIncr - 5 - Width), yOffset + 5, //+ buttonSize / 2 + 5, Width, Height), (xIncr < Width / 2 ? DrawTextFormat.NoClip : DrawTextFormat.Right), System.Drawing.Color.White); } RenderButton(buttonKey, xIncr + (buttonSize + sizeIncr) / 2, yOffset, buttonSize + sizeIncr, buttonSize + sizeIncr, (curRo != null ? curRo.IsOn : false)); xIncr += buttonSize + sizeIncr; } }
void m_updateTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { List <MFW3D.Renderable.RenderableObject> activeList = new List <MFW3D.Renderable.RenderableObject>(); for (int i = 0; i < Global.worldWindow.CurrentWorld.RenderableObjects.ChildObjects.Count; i++) { MFW3D.Renderable.RenderableObject renderable = (MFW3D.Renderable.RenderableObject)Global.worldWindow.CurrentWorld.RenderableObjects.ChildObjects[i]; List <MFW3D.Renderable.RenderableObject> childActiveList = getActiveLayers(renderable); for (int j = 0; j < childActiveList.Count; j++) { activeList.Add(childActiveList[j]); } } for (int i = 0; i < activeList.Count; i++) { if (m_activeLayersNode.ChildWidgets.Count == i) { SimpleTreeNodeWidget node = new SimpleTreeNodeWidget(activeList[i].Name); node.Tag = activeList[i]; node.ParentWidget = m_activeLayersNode; node.OnCheckStateChanged += new CheckStateChangedHandler(node_OnCheckStateChanged); m_activeLayersNode.ChildWidgets.Add(node); } else { SimpleTreeNodeWidget currentNode = (SimpleTreeNodeWidget)m_activeLayersNode.ChildWidgets[i]; MFW3D.Renderable.RenderableObject nodeRenderable = (MFW3D.Renderable.RenderableObject)currentNode.Tag; if (activeList[i] != nodeRenderable) { SimpleTreeNodeWidget node = new SimpleTreeNodeWidget(activeList[i].Name); node.Tag = activeList[i]; node.ParentWidget = m_activeLayersNode; node.OnCheckStateChanged += new CheckStateChangedHandler(node_OnCheckStateChanged); m_activeLayersNode.ChildWidgets.Insert(node, i); } } } if (m_activeLayersNode.ChildWidgets.Count != activeList.Count) { while (m_activeLayersNode.ChildWidgets.Count > activeList.Count) { m_activeLayersNode.ChildWidgets.RemoveAt(m_activeLayersNode.ChildWidgets.Count - 1); } } for (int i = 0; i < Global.worldWindow.CurrentWorld.RenderableObjects.ChildObjects.Count; i++) { MFW3D.Renderable.RenderableObject renderable = (MFW3D.Renderable.RenderableObject)Global.worldWindow.CurrentWorld.RenderableObjects.ChildObjects[i]; if (m_allLayersNode.ChildWidgets.Count == i) { SimpleTreeNodeWidget childNode = new SimpleTreeNodeWidget(renderable.Name); childNode.Tag = renderable; childNode.ParentWidget = m_allLayersNode; childNode.OnCheckStateChanged += new CheckStateChangedHandler(node_OnCheckStateChanged); m_allLayersNode.Add(childNode); } UpdateAllLayers((SimpleTreeNodeWidget)m_allLayersNode.ChildWidgets[i], renderable); } while (m_allLayersNode.ChildWidgets.Count > Global.worldWindow.CurrentWorld.RenderableObjects.ChildObjects.Count) { m_allLayersNode.ChildWidgets.RemoveAt(Global.worldWindow.CurrentWorld.RenderableObjects.ChildObjects.Count - 1); } }