示例#1
0
        public void CalculateAValues()
        {
            NeedCalculate = false;

            AValueStruct vs = m_NodeVS;

            if (m_NodeMask.CalculateAll)
            {
                m_NodeMask.CalculateAll = false;
                m_NodeMask = null;
            }

            // 重置标脏的属性数据
            vs.Reset(m_NodeMask);

            // 合并子节点的数值
            for (int i = 0; i < m_nChildNodeCnt; i++)
            {
                AValueNode pNode = m_pChildNode[i];
                if (null != pNode)
                {
                    if (pNode.NeedCalculate)
                    {
                        pNode.CalculateAValues(); // 如果子节点需要重新计算...
                    }
                    // 合并子节点的当前属性结构
                    pNode.CombineAValues(vs, m_NodeMask, true);
                }
            }

            // 合并本节点的属性结构
            AddupAValues(vs, m_NodeMask);

            ExNodeCalculate(vs, m_NodeMask);

            ExportResult(vs, m_NodeMask);

            m_NodeMask.Reset(); // 复位
        }