public IntPtr GetInstanceFromNodeIndex(int index) { var instanceIndex = NodeIndexToInstanceIndex.GetOrDefault(index, -1); if (instanceIndex <= 0) { return(IntPtr.Zero); } return(Instances[instanceIndex]); }
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(); }
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(); }
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); }