Exemple #1
0
        public IntPtr GetInstanceFromNodeIndex(int index)
        {
            var instanceIndex = NodeIndexToInstanceIndex.GetOrDefault(index, -1);

            if (instanceIndex <= 0)
            {
                return(IntPtr.Zero);
            }
            return(Instances[instanceIndex]);
        }
Exemple #2
0
        public VimHelper(IRenderApi api, VimScene vim)
        {
            (Vim, Api) = (vim, api);
            Api.Scene.GetNodeToInstanceTable(ref NodeIndices, ref Instances);
            Debug.Assert(NodeIndices.Length == Instances.Length);
            Flags = new bool[NodeIndices.Length];
            for (var i = 0; i < NodeIndices.Length; ++i)
            {
                NodeIndexToInstanceIndex.Add(NodeIndices[i], i);
                InstanceToNodeIndex.Add(Instances[i], NodeIndices[i]);
            }

            ElementIndexToSceneNode = Vim.GetElementIndexToSceneNodeMap();
        }
Exemple #3
0
 public void IsolateNodes(IEnumerable <VimSceneNode> nodes)
 {
     for (var i = 0; i < Flags.Length; ++i)
     {
         Flags[i] = true;
     }
     foreach (var n in nodes)
     {
         var index = NodeIndexToInstanceIndex.GetOrDefault(n.Id, -1);
         if (index >= 0)
         {
             Flags[index] = false;
         }
     }
     UpdateVisibility();
 }
Exemple #4
0
 public void HighlightNodes(IEnumerable <VimSceneNode> nodes, int colorIndex)
 {
     for (var i = 0; i < Flags.Length; ++i)
     {
         Flags[i] = false;
     }
     foreach (var n in nodes)
     {
         var index = NodeIndexToInstanceIndex.GetOrDefault(n.Id, -1);
         if (index >= 0)
         {
             Flags[index] = true;
         }
     }
     UpdateHighlighting(colorIndex);
 }