void UpdateParameter(VisualEffect vfx, GlueVFXDescriptor descriptor) { GlueVFXParameterType type = descriptor.parameterType; bool isInGameMode = Application.IsPlaying(gameObject); if (name.Length == 0) { return; } switch (type) { case GlueVFXParameterType.Bool: UpdateBool(vfx, isInGameMode, descriptor); break; case GlueVFXParameterType.Float: UpdateFloat(vfx, isInGameMode, descriptor); break; case GlueVFXParameterType.Vector2: UpdateVector2(vfx, isInGameMode, descriptor); break; case GlueVFXParameterType.Vector3: UpdateVector3(vfx, isInGameMode, descriptor); break; case GlueVFXParameterType.Vector4: UpdateVector4(vfx, isInGameMode, descriptor); break; } }
void UpdateFloat(VisualEffect vfx, bool isInGameMode, GlueVFXDescriptor descriptor) { if (!vfx.HasFloat(descriptor.parameterName)) { return; } float glueFloatValue; try { if (isInGameMode) { float[] glueFloatValues = GlueValue(descriptor.key, descriptor._fallbackFloats); descriptor._fallbackFloats = glueFloatValues; glueFloatValue = glueFloatValues[0]; } else { glueFloatValue = _vfx.GetFloat(descriptor.parameterName); } if (descriptor.useOverwrite) { glueFloatValue = descriptor.overwriteVector.x; } vfx.SetFloat(descriptor.parameterName, glueFloatValue); } catch (IndexOutOfRangeException) { Debug.Log($"Could not find a Gluee value for {descriptor.key}. Did you misspelled the key?"); } }
void UpdateVector4(VisualEffect vfx, bool isInGameMode, GlueVFXDescriptor descriptor) { if (!vfx.HasVector4(descriptor.parameterName)) { return; } Vector4 glueVector4Value; if (isInGameMode) { SharpDX.Vector4[] glueVector4Values = GlueValue(descriptor.key, descriptor._fallbackVectors4); descriptor._fallbackVectors4 = glueVector4Values; Vector4 castedVector4 = Vector4.zero; Utils.DXToUnityVector4(glueVector4Values[0], ref castedVector4); glueVector4Value = castedVector4; } else { glueVector4Value = _vfx.GetVector4(descriptor.parameterName); } if (descriptor.useOverwrite) { glueVector4Value.x = descriptor.overwriteVector.x; glueVector4Value.y = descriptor.overwriteVector.y; glueVector4Value.z = descriptor.overwriteVector.z; glueVector4Value.w = descriptor.overwriteVector.w; } vfx.SetVector4(descriptor.parameterName, glueVector4Value); }