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();
    }
Beispiel #2
0
        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;
                    }
                }
            }
        }