void OnOutputEventRecieved(VFXOutputEventArgs args)
 {
     if (Application.isPlaying || (executeInEditor && canExecuteInEditor))
     {
         if (args.nameId == outputEvent)
         {
             OnVFXOutputEvent(args.eventAttribute);
         }
     }
 }
示例#2
0
        void ProcessVisualEffectEvent(VFXOutputEventArgs eventArgs)
        {
            if (eventArgs.nameId != s_outputEventNameId)
            {
                Debug.LogErrorFormat("Incorrect output event name : {0} (expected:{1})", eventArgs.nameId, s_outputEventNameId);
            }

            //texIndex isn't used in particle system but it should be reachable in these vfx event attribute.
            var  texIndex = eventArgs.eventAttribute.GetFloat(s_texIndexId);
            bool correct  = false;

            foreach (var value in s_acceptableTexIndexValues)
            {
                if (Mathf.Abs(value - texIndex) < 1e-5f)
                {
                    correct = true;
                    break;
                }
            }

            if (!correct)
            {
                Debug.LogError("Unable to retrieve texIndex, got : " + texIndex);
                return;
            }

            var newObject = GameObject.Instantiate(m_ObjectReference);

            newObject.GetComponent <Transform>().position = eventArgs.eventAttribute.GetVector3(s_positionNameId);
            var renderer        = newObject.GetComponent <Renderer>();
            var currentMaterial = renderer.material;

            currentMaterial = new Material(currentMaterial);
            currentMaterial.SetVector(s_customEmissionNameId, eventArgs.eventAttribute.GetVector3(s_colorNameId));
            renderer.material = currentMaterial;
            newObject.SetActive(true);
        }