Beispiel #1
0
        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);
                }
            }
        }
Beispiel #3
0
        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;
            }
        }
Beispiel #4
0
 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);
     }
 }
Beispiel #6
0
 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;
 }
Beispiel #7
0
        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();
            }
        }
Beispiel #8
0
        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;
            }
        }
Beispiel #11
0
        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);
            }
        }