WorldWind源码剖析系列:可渲染对象列表类RenderableObjectList

可渲染对象列表类RenderableObjectList用来存储与一个星球体相关联的全部的可渲染对象,继承自可渲染对象类RenderableObject。RenderableObjectList的类图如下所示。

WorldWind源码剖析系列:可渲染对象列表类RenderableObjectList 

该类所包含的主要的字段、属性和方法如下:

           protected ArrayList m_children = new ArrayList();//存可渲染的子对象的列表,对应属性ChildObjects不可浏览,属性Count返回可渲染的子对象的个数

           string m_DataSource = null; //数据源

           TimeSpan m_RefreshInterval = TimeSpan.MaxValue; //刷新时间间隔

           World m_ParentWorld = null; //该可渲染对象列表类所从属的星球父类

           Cache m_Cache = null; //缓冲区

           System.Timers.Timer m_RefreshTimer = null; //刷新定时器

           public bool ShowOnlyOneLayer; //是否只显示一个图层

      private bool m_disableExpansion = false; //是否禁用扩展

bool hasSkippedFirstRefresh = false;//是否已经跳过了第一次刷新

两个构造函数RenderableObjectList()主要完成成员初始化工作

public void StartRefreshTimer()方法用来启动和刷新定时器

public virtual RenderableObject GetObject(string name)根据名称返回可渲染子对象

public virtual bool Enable(string name)禁用或启动指定名称的图层,内部通过递归的方式调用自身完成禁用或启动。其中用到的as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null(PS:is运算符可以检查对象是否与特定的类型兼容,“兼容”表示对象是该类型,或者派生于该类型)

public virtual void RemoveAll()逐个地移除全部的可渲染的子对象

public virtual void TurnOffAllChildren()关闭即禁用全部的可渲染的子对象所对应的图层

public override void Initialize(DrawArgs drawArgs)初始化

public override void Update(DrawArgs drawArgs)更新

public override void Render(DrawArgs drawArgs)渲染

public override bool PerformSelectionAction(DrawArgs drawArgs)执行选取可渲染的子对象的动作

public override void Dispose()释放全部的可渲染的子对象

public virtual void Add(RenderableObject ro) 添加一个可渲染的子对象

public virtual void Remove(string objectName) 移除一个指定名称的可渲染的子对象

public virtual void Remove(RenderableObject layer) 移除一个指定可渲染的子对象

public virtual void SortChildren()根据渲染的优先级对可渲染的子对象排序

private void UpdateRenderable(RenderableObject oldRenderable, RenderableObject newRenderable)更新可渲染的子对象的可渲染状态

private void compareRefreshLists(RenderableObjectList newList, RenderableObjectList curList) 比较一个新的和当前的可渲染的子对象列表,被UpdateRenderable()函数调用

private void m_RefreshTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 刷新定时器绑定的处理事件,内部调用ConfigurationLoader.getRenderableFromLayerFile()函数。

你可能感兴趣的:(object)