public VFXBlackboardRow GetRowFromController(VFXParameterController controller) { VFXBlackboardRow row = null; m_Parameters.TryGetValue(controller, out row); return(row); }
public VFXBlackboardCategory AddCategory(string initialName) { var newCategoryName = VFXParameterController.MakeNameUnique(initialName, new HashSet <string>(m_Categories.Keys)); var newCategory = new VFXBlackboardCategory { title = newCategoryName }; newCategory.SetSelectable(); this.m_Categories.Add(newCategoryName, newCategory); this.Add(newCategory); return(newCategory); }
public VFXBlackboardRow GetRowFromController(VFXParameterController controller) { VFXBlackboardCategory cat = null; VFXBlackboardRow row = null; if (string.IsNullOrEmpty(controller.model.category)) { row = m_DefaultCategory.GetRowFromController(controller); } else if (m_Categories.TryGetValue(controller.model.category, out cat)) { row = cat.GetRowFromController(controller); } return row; }
public VFXSubParameterController(VFXParameterController parameter, IEnumerable <int> fieldPath, string memberPath) { m_Parameter = parameter; m_MemberPath = memberPath; //m_Field = field; System.Type type = m_Parameter.portType; m_FieldPath = fieldPath.ToArray(); m_FieldInfos = new FieldInfo[m_FieldPath.Length]; for (int i = 0; i < m_FieldPath.Length; ++i) { FieldInfo info = type.GetFields(BindingFlags.Public | BindingFlags.Instance)[m_FieldPath[i]]; m_FieldInfos[i] = info; type = info.FieldType; } m_CustomAttributes = m_FieldInfos[m_FieldInfos.Length - 1].GetCustomAttributes(true); m_Attributes = VFXPropertyAttribute.Create(m_CustomAttributes); }
internal ParameterGizmoContext(VFXParameterController controller) { m_Controller = controller; }
public VFXMinMaxParameterController(VFXParameterController owner, bool min) { m_Owner = owner; m_Min = min; }
public VFXParameterNodeController(VFXParameterController controller, VFXParameter.Node infos, VFXViewController viewController) : base(controller.model, viewController) { m_ParentController = controller; m_Id = infos.id; }
public VFXEnumParameterController(VFXParameterController owner) { m_Owner = owner; }
void TransfertOperatorOutputEdges() { var traversingOutEdges = new Dictionary <VFXDataAnchorController, List <VFXDataAnchorController> >(); foreach (var edge in m_SourceController.dataEdges.Where( t => { if (t.output.sourceNode is VFXParameterNodeController) { return(false); } var inputInControllers = m_SourceControllersWithBlocks.Contains(t.input.sourceNode); var outputInControllers = m_SourceControllersWithBlocks.Contains(t.output.sourceNode); return(!inputInControllers && outputInControllers); } )) { List <VFXDataAnchorController> inputs = null; if (!traversingOutEdges.TryGetValue(edge.output, out inputs)) { inputs = new List <VFXDataAnchorController>(); traversingOutEdges[edge.output] = inputs; } inputs.Add(edge.input); } var newSourceOutputs = traversingOutEdges.Keys.ToArray(); for (int i = 0; i < newSourceOutputs.Length; ++i) { VFXParameter newTargetParameter = m_TargetController.AddVFXParameter(Vector2.zero, VFXLibrary.GetParameters().First(t => t.model.type == newSourceOutputs[i].portType)); m_TargetController.LightApplyChanges(); VFXParameterController newTargetParamController = m_TargetController.GetParameterController(newTargetParameter); newTargetParamController.isOutput = true; var inputs = traversingOutEdges[newSourceOutputs[i]]; var linkedParameter = inputs.FirstOrDefault(t => t.sourceNode is VFXParameterNodeController); if (linkedParameter != null) { newTargetParamController.exposedName = (linkedParameter.sourceNode as VFXParameterNodeController).parentController.exposedName; } else { newTargetParamController.exposedName = newSourceOutputs[i].name; } //first the equivalent of sourceInput in the target VFXNodeController targetNode = null; if (newSourceOutputs[i].sourceNode is VFXBlockController) { var blockController = newSourceOutputs[i].sourceNode as VFXBlockController; if (m_TargetBlocks != null) { targetNode = m_TargetBlocks[m_SourceBlockControllers.IndexOf(blockController)]; } else { var targetContext = m_TargetControllers[m_SourceControllers.IndexOf(blockController.contextController)] as VFXContextController; targetNode = targetContext.blockControllers[blockController.index]; } } else { targetNode = m_TargetControllers[m_SourceControllers.IndexOf(newSourceOutputs[i].sourceNode)]; } VFXDataAnchorController targetAnchor = targetNode.outputPorts.FirstOrDefault(t => t.path == newSourceOutputs[i].path); if (targetAnchor != null) { VFXNodeController parameterNode = m_TargetController.AddVFXParameter(targetNode.position + new Vector2(400, 0), newTargetParamController, null); // Link the parameternode and the input in the target m_TargetController.CreateLink(parameterNode.inputPorts[0], targetAnchor); if (m_SourceSlotContainer is VFXOperator) { (m_SourceSlotContainer as VFXOperator).ResyncSlots(true); } m_SourceNodeController.ApplyChanges(); } //Link all the outputs to the matching input of the subgraph foreach (var input in inputs) { var port = m_SourceNodeController.outputPorts.FirstOrDefault(t => t.model == m_SourceSlotContainer.outputSlots.Last()); if (port != null) { m_SourceController.CreateLink(input, port); } } } }
void TransfertDataEdges() { m_SourceControllersWithBlocks = m_SourceControllers.Concat(m_SourceControllers.OfType <VFXContextController>().SelectMany(t => t.blockControllers)); // Search for links between with inputs in the selected part and the output in other parts of the graph. Dictionary <VFXDataAnchorController, List <VFXDataAnchorController> > traversingInEdges = new Dictionary <VFXDataAnchorController, List <VFXDataAnchorController> >(); foreach (var edge in m_SourceController.dataEdges.Where( t => { if (parameterNodeControllers.Contains(t.output.sourceNode)) { return(false); } var inputInControllers = m_SourceControllersWithBlocks.Contains(t.input.sourceNode); var outputInControllers = m_SourceControllersWithBlocks.Contains(t.output.sourceNode); return(inputInControllers && !outputInControllers); } )) { List <VFXDataAnchorController> outputs = null; if (!traversingInEdges.TryGetValue(edge.input, out outputs)) { outputs = new List <VFXDataAnchorController>(); traversingInEdges[edge.input] = outputs; } outputs.Add(edge.output); } var newSourceInputs = traversingInEdges.Keys.ToArray(); for (int i = 0; i < newSourceInputs.Length; ++i) { VFXParameter newTargetParameter = m_TargetController.AddVFXParameter(Vector2.zero, VFXLibrary.GetParameters().First(t => t.model.type == newSourceInputs[i].portType)); m_TargetController.LightApplyChanges(); VFXParameterController newTargetParamController = m_TargetController.GetParameterController(newTargetParameter); newTargetParamController.exposed = true; var outputs = traversingInEdges[newSourceInputs[i]]; var linkedParameter = outputs.FirstOrDefault(t => t.sourceNode is VFXParameterNodeController); if (linkedParameter != null) { newTargetParamController.exposedName = (linkedParameter.sourceNode as VFXParameterNodeController).parentController.exposedName; } else { newTargetParamController.exposedName = newSourceInputs[i].name; } //first the equivalent of sourceInput in the target VFXNodeController targetNode = null; Vector2 position; if (newSourceInputs[i].sourceNode is VFXBlockController) { var blockController = newSourceInputs[i].sourceNode as VFXBlockController; if (m_TargetBlocks != null) { targetNode = m_TargetBlocks[m_SourceBlockControllers.IndexOf(blockController)]; position = blockController.contextController.position; } else { var targetContext = m_TargetControllers[m_SourceControllers.IndexOf(blockController.contextController)] as VFXContextController; targetNode = targetContext.blockControllers[blockController.index]; position = blockController.contextController.position; } } else { targetNode = m_TargetControllers[m_SourceControllers.IndexOf(newSourceInputs[i].sourceNode)]; position = targetNode.position; } VFXDataAnchorController targetAnchor = targetNode.inputPorts.First(t => t.path == newSourceInputs[i].path); position.y += targetAnchor.model.owner.inputSlots.IndexOf(targetAnchor.model) * 32; VFXNodeController parameterNode = m_TargetController.AddVFXParameter(position - new Vector2(200, 0), newTargetParamController, null); // Link the parameternode and the input in the target m_TargetController.CreateLink(targetAnchor, parameterNode.outputPorts[0]); if (m_SourceSlotContainer is VFXOperator) { (m_SourceSlotContainer as VFXOperator).ResyncSlots(true); } else if (m_SourceSlotContainer is VFXSubgraphBlock) { VFXSubgraphBlock blk = (m_SourceSlotContainer as VFXSubgraphBlock); blk.RecreateCopy(); blk.ResyncSlots(true); } else if (m_SourceSlotContainer is VFXSubgraphContext) { VFXSubgraphContext ctx = (m_SourceSlotContainer as VFXSubgraphContext); ctx.RecreateCopy(); ctx.ResyncSlots(true); } m_SourceNodeController.ApplyChanges(); //Link all the outputs to the matching input of the subgraph foreach (var output in outputs) { m_SourceController.CreateLink(m_SourceNodeController.inputPorts.First(t => t.model == m_SourceSlotContainer.inputSlots.Last()), output); } } }