List <CathodeResourceReference> resRef = new List <CathodeResourceReference>(); //FOR TESTING ONLY public CathodeEditorGUI_AddOrEditResource(CathodeEntity entity) { _ent = entity; //FOR TESTING ONLY resRef.AddRange(_ent.resources); cGUID resourceParamID = Utilities.GenerateGUID("resource"); CathodeLoadedParameter resourceParam = CurrentInstance.selectedEntity.parameters.FirstOrDefault(o => o.paramID == resourceParamID); if (resourceParam != null) { resRef.AddRange(((CathodeResource)resourceParam.content).value); } Setup(); }
/* Load a entity into the UI */ private void LoadEntity(CathodeEntity edit_node) { if (edit_node == null) { return; } ClearUI(false, false, true); CurrentInstance.selectedEntity = edit_node; Cursor.Current = Cursors.WaitCursor; //populate info labels selected_node_id.Text = edit_node.nodeID.ToString(); selected_node_type.Text = edit_node.variant.ToString(); string nodetypedesc = ""; switch (edit_node.variant) { case EntityVariant.FUNCTION: nodetypedesc = NodeDBEx.GetParameterName(((FunctionEntity)edit_node).function); node_to_flowgraph_jump.Visible = (CurrentInstance.commandsPAK.GetFlowgraph(((FunctionEntity)edit_node).function) != null); selected_node_name.Text = NodeDBEx.GetEntityName(edit_node.nodeID); #if DEBUG //TODO: PULL THIS INTO STABLE editCAGEAnimationKeyframes.Visible = nodetypedesc == "CAGEAnimation"; #endif break; case EntityVariant.DATATYPE: nodetypedesc = "DataType " + ((DatatypeEntity)edit_node).type.ToString(); selected_node_name.Text = NodeDBEx.GetParameterName(((DatatypeEntity)edit_node).parameter); break; case EntityVariant.PROXY: case EntityVariant.OVERRIDE: node_to_flowgraph_jump.Visible = true; selected_node_name.Text = NodeDBEx.GetEntityName(edit_node.nodeID); break; default: selected_node_name.Text = NodeDBEx.GetEntityName(edit_node.nodeID); break; } selected_node_type_description.Text = nodetypedesc; //show resource editor button if this node has a resource reference cGUID resourceParamID = Utilities.GenerateGUID("resource"); CathodeLoadedParameter resourceParam = CurrentInstance.selectedEntity.parameters.FirstOrDefault(o => o.paramID == resourceParamID); #if DEBUG //TODO: PULL THIS INTO STABLE editNodeResources.Visible = ((resourceParam != null) || CurrentInstance.selectedEntity.resources.Count != 0); #endif //populate parameter inputs int current_ui_offset = 7; for (int i = 0; i < edit_node.parameters.Count; i++) { if (edit_node.parameters[i].paramID == resourceParamID) { continue; //We use the resource editor button (above) for resource parameters } CathodeParameter this_param = edit_node.parameters[i].content; UserControl parameterGUI = null; switch (this_param.dataType) { case CathodeDataType.POSITION: parameterGUI = new GUI_TransformDataType(); ((GUI_TransformDataType)parameterGUI).PopulateUI((CathodeTransform)this_param, edit_node.parameters[i].paramID); break; case CathodeDataType.INTEGER: parameterGUI = new GUI_NumericDataType(); ((GUI_NumericDataType)parameterGUI).PopulateUI_Int((CathodeInteger)this_param, edit_node.parameters[i].paramID); break; case CathodeDataType.STRING: parameterGUI = new GUI_StringDataType(); ((GUI_StringDataType)parameterGUI).PopulateUI((CathodeString)this_param, edit_node.parameters[i].paramID); break; case CathodeDataType.BOOL: parameterGUI = new GUI_BoolDataType(); ((GUI_BoolDataType)parameterGUI).PopulateUI((CathodeBool)this_param, edit_node.parameters[i].paramID); break; case CathodeDataType.FLOAT: parameterGUI = new GUI_NumericDataType(); ((GUI_NumericDataType)parameterGUI).PopulateUI_Float((CathodeFloat)this_param, edit_node.parameters[i].paramID); break; case CathodeDataType.DIRECTION: parameterGUI = new GUI_VectorDataType(); ((GUI_VectorDataType)parameterGUI).PopulateUI((CathodeVector3)this_param, edit_node.parameters[i].paramID); break; case CathodeDataType.ENUM: parameterGUI = new GUI_EnumDataType(); ((GUI_EnumDataType)parameterGUI).PopulateUI((CathodeEnum)this_param, edit_node.parameters[i].paramID); break; case CathodeDataType.SHORT_GUID: parameterGUI = new GUI_HexDataType(); ((GUI_HexDataType)parameterGUI).PopulateUI((CathodeResource)this_param, edit_node.parameters[i].paramID, CurrentInstance.selectedFlowgraph); break; case CathodeDataType.SPLINE_DATA: parameterGUI = new GUI_SplineDataType(); ((GUI_SplineDataType)parameterGUI).PopulateUI((CathodeSpline)this_param, edit_node.parameters[i].paramID); break; } parameterGUI.Location = new Point(15, current_ui_offset); current_ui_offset += parameterGUI.Height + 6; NodeParams.Controls.Add(parameterGUI); } RefreshNodeLinks(); Cursor.Current = Cursors.Default; }