protected new void OnEnable() { UnityEngine.Object[] allData = targets.Cast <VFXContext>().Select(t => t.GetData()).Distinct().Where(t => t != null).Cast <UnityEngine.Object>().ToArray(); if (allData.Length > 0) { dataObject = new SerializedObject(allData); spaceProperty = dataObject.FindProperty("m_Space"); } else { dataObject = null; spaceProperty = null; } UnityEngine.Object[] allSRPSubOutputs = targets.OfType <VFXAbstractRenderedOutput>().Select(t => t.subOutput).Where(t => t != null).ToArray(); srpSubOutputObject = allSRPSubOutputs.Length > 0 ? new SerializedObject(allSRPSubOutputs) : null; if (!serializedObject.isEditingMultipleObjects) { m_ViewController = VFXViewController.GetController(((VFXContext)target).GetGraph().GetResource()); m_ViewController.useCount++; m_ContextController = m_ViewController.GetRootNodeController((VFXContext)target, 0) as VFXContextController; } base.OnEnable(); }
void CreateDataEdges(VFXContextController updateContext, List <VFXParameter> parameters) { m_ViewController.ApplyChanges(); foreach (var param in parameters) { VFXParameterNodeController paramController = m_ViewController.allChildren.OfType <VFXParameterNodeController>().First(t => t.model == param); VFXDataAnchorController outputAnchor = paramController.outputPorts.First() as VFXDataAnchorController; System.Type type = outputAnchor.portType; bool found = false; foreach (var block in updateContext.blockControllers) { foreach (var anchor in block.inputPorts) { if (anchor.portType == type) { found = true; (anchor as VFXDataAnchorController).model.Link(outputAnchor.model); break; } } if (found) { break; } } } }