/// <summary> /// Called when node gets loaded and should be added to the surface. Creates node elements from the archetype. /// </summary> /// <param name="node">The node.</param> public virtual void OnNodeLoaded(SurfaceNode node) { // Create child elements of the node based on it's archetype int elementsCount = node.Archetype.Elements?.Length ?? 0; for (int i = 0; i < elementsCount; i++) { // ReSharper disable once PossibleNullReferenceException node.AddElement(node.Archetype.Elements[i]); } // Load metadata var meta = node.Meta.GetEntry(11); if (meta.Data != null) { var meta11 = Utils.ByteArrayToStructure <VisjectSurface.Meta11>(meta.Data); node.Location = meta11.Position; //node.IsSelected = meta11.Selected; } }
/// <summary> /// Called when node gets loaded and should be added to the surface. Creates node elements from the archetype. /// </summary> /// <param name="node">The node.</param> public virtual void OnNodeLoaded(SurfaceNode node) { // Create child elements of the node based on it's archetype int elementsCount = node.Archetype.Elements?.Length ?? 0; for (int i = 0; i < elementsCount; i++) { // ReSharper disable once PossibleNullReferenceException var arch = node.Archetype.Elements[i]; ISurfaceNodeElement element = null; switch (arch.Type) { case NodeElementType.Input: element = new InputBox(node, arch); break; case NodeElementType.Output: element = new OutputBox(node, arch); break; case NodeElementType.BoolValue: element = new BoolValue(node, arch); break; case NodeElementType.FloatValue: element = new FloatValue(node, arch); break; case NodeElementType.IntegerValue: element = new IntegerValue(node, arch); break; case NodeElementType.ColorValue: element = new ColorValue(node, arch); break; case NodeElementType.ComboBox: element = new ComboBoxElement(node, arch); break; case NodeElementType.Asset: element = new AssetSelect(node, arch); break; case NodeElementType.Text: element = new TextView(node, arch); break; case NodeElementType.TextBox: element = new TextBoxView(node, arch); break; case NodeElementType.SkeletonNodeSelect: element = new SkeletonNodeSelectElement(node, arch); break; } if (element != null) { // Link element node.AddElement(element); } } // Load metadata var meta = node.Meta.GetEntry(11); if (meta.Data != null) { var meta11 = Utils.ByteArrayToStructure <VisjectSurface.Meta11>(meta.Data); node.Location = meta11.Position; //node.IsSelected = meta11.Selected; } }