using System;
using Il2CppInterop.Common.Attributes;
using Il2CppInterop.Runtime;
using Il2CppInterop.Runtime.InteropTypes;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSystem;

namespace UnityEngine.PostProcessing
{
	// Token: 0x02000588 RID: 1416
	public class PostProcessingComponent<T> : PostProcessingComponentBase where T : PostProcessingModel
	{
		// Token: 0x1700333A RID: 13114
		// (get) Token: 0x06009753 RID: 38739 RVA: 0x0026D728 File Offset: 0x0026B928
		// (set) Token: 0x06009754 RID: 38740 RVA: 0x0026D778 File Offset: 0x0026B978
		public unsafe T model
		{
			[CallerCount(10)]
			[CachedScanResults(RefRangeStart = 7233, RefRangeEnd = 7243, XrefRangeStart = 7233, XrefRangeEnd = 7243, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
			get
			{
				IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
				IntPtr* ptr = null;
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(PostProcessingComponent<T>.NativeMethodInfoPtr_get_model_Public_get_T_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				return IL2CPP.PointerToValueGeneric<T>(intPtr, false, true);
			}
			[CallerCount(0)]
			[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 0, XrefRangeEnd = 0, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
			set
			{
				IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
				checked
				{
					IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
					IntPtr* ptr2 = ptr;
					T ptr4;
					if (!typeof(T).IsValueType)
					{
						T t = value;
						if (!(t is string))
						{
							ref T ptr3 = (ptr4 = IL2CPP.Il2CppObjectBaseToPtr(t as Il2CppObjectBase));
							if ((ref ptr3) != null)
							{
								ptr4 = ref ptr3;
								if (IL2CPP.il2cpp_class_is_valuetype(IL2CPP.il2cpp_object_get_class(ref ptr3)))
								{
									ptr4 = IL2CPP.il2cpp_object_unbox(ref ptr3);
								}
							}
						}
						else
						{
							ptr4 = IL2CPP.ManagedStringToIl2Cpp(t as string);
						}
					}
					else
					{
						ptr4 = ref value;
					}
					*ptr2 = ref ptr4;
					IntPtr intPtr2;
					IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(PostProcessingComponent<T>.NativeMethodInfoPtr_set_model_Internal_set_Void_T_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
					Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				}
			}
		}

		// Token: 0x06009755 RID: 38741 RVA: 0x0026D824 File Offset: 0x0026BA24
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 617109, XrefRangeEnd = 617114, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe virtual void Init(PostProcessingContext pcontext, T pmodel)
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(pcontext);
			}
			IntPtr* ptr2 = ptr + checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr);
			T ptr4;
			if (!typeof(T).IsValueType)
			{
				T t = pmodel;
				if (!(t is string))
				{
					ref T ptr3 = (ptr4 = IL2CPP.Il2CppObjectBaseToPtr(t as Il2CppObjectBase));
					if ((ref ptr3) != null)
					{
						ptr4 = ref ptr3;
						if (IL2CPP.il2cpp_class_is_valuetype(IL2CPP.il2cpp_object_get_class(ref ptr3)))
						{
							ptr4 = IL2CPP.il2cpp_object_unbox(ref ptr3);
						}
					}
				}
				else
				{
					ptr4 = IL2CPP.ManagedStringToIl2Cpp(t as string);
				}
			}
			else
			{
				ptr4 = ref pmodel;
			}
			*ptr2 = ref ptr4;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(IL2CPP.il2cpp_object_get_virtual_method(IL2CPP.Il2CppObjectBaseToPtr(this), PostProcessingComponent<T>.NativeMethodInfoPtr_Init_Public_Virtual_New_Void_PostProcessingContext_T_0), IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x06009756 RID: 38742 RVA: 0x0026D8F4 File Offset: 0x0026BAF4
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 617114, XrefRangeEnd = 617115, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe override PostProcessingModel GetModel()
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(IL2CPP.il2cpp_object_get_virtual_method(IL2CPP.Il2CppObjectBaseToPtr(this), PostProcessingComponent<T>.NativeMethodInfoPtr_GetModel_Public_Virtual_PostProcessingModel_0), IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			IntPtr intPtr3 = intPtr;
			return (intPtr3 != 0) ? new PostProcessingModel(intPtr3) : null;
		}

		// Token: 0x06009757 RID: 38743 RVA: 0x0026D958 File Offset: 0x0026BB58
		[CallerCount(54)]
		[CachedScanResults(RefRangeStart = 217890, RefRangeEnd = 217944, XrefRangeStart = 217890, XrefRangeEnd = 217944, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe PostProcessingComponent()
			: this(IL2CPP.il2cpp_object_new(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr))
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(PostProcessingComponent<T>.NativeMethodInfoPtr__ctor_Protected_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x06009758 RID: 38744 RVA: 0x0026D9A4 File Offset: 0x0026BBA4
		// Note: this type is marked as 'beforefieldinit'.
		static PostProcessingComponent()
		{
			Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr = IL2CPP.il2cpp_class_from_type(Type.internal_from_handle(IL2CPP.il2cpp_class_get_type(IL2CPP.GetIl2CppClass("Assembly-CSharp.dll", "UnityEngine.PostProcessing", "PostProcessingComponent`1"))).MakeGenericType(new Il2CppReferenceArray<Type>(new Type[] { Type.internal_from_handle(IL2CPP.il2cpp_class_get_type(Il2CppClassPointerStore<T>.NativeClassPtr)) })).TypeHandle.value);
			IL2CPP.il2cpp_runtime_class_init(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr);
			PostProcessingComponent<T>.NativeFieldInfoPtr__model_k__BackingField = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr, "<model>k__BackingField");
			PostProcessingComponent<T>.NativeMethodInfoPtr_get_model_Public_get_T_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr, 100675065);
			PostProcessingComponent<T>.NativeMethodInfoPtr_set_model_Internal_set_Void_T_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr, 100675066);
			PostProcessingComponent<T>.NativeMethodInfoPtr_Init_Public_Virtual_New_Void_PostProcessingContext_T_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr, 100675067);
			PostProcessingComponent<T>.NativeMethodInfoPtr_GetModel_Public_Virtual_PostProcessingModel_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr, 100675068);
			PostProcessingComponent<T>.NativeMethodInfoPtr__ctor_Protected_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<PostProcessingComponent<T>>.NativeClassPtr, 100675069);
		}

		// Token: 0x06009759 RID: 38745 RVA: 0x0026DA87 File Offset: 0x0026BC87
		public PostProcessingComponent(IntPtr pointer)
			: base(pointer)
		{
		}

		// Token: 0x17003339 RID: 13113
		// (get) Token: 0x0600975A RID: 38746 RVA: 0x0026DA90 File Offset: 0x0026BC90
		// (set) Token: 0x0600975B RID: 38747 RVA: 0x0026DABC File Offset: 0x0026BCBC
		public unsafe T _model_k__BackingField
		{
			get
			{
				IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this) + (IntPtr)IL2CPP.il2cpp_field_get_offset(PostProcessingComponent<T>.NativeFieldInfoPtr__model_k__BackingField);
				return IL2CPP.PointerToValueGeneric<T>(intPtr, true, false);
			}
			set
			{
				IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
				IntPtr intPtr2 = intPtr + (IntPtr)IL2CPP.il2cpp_field_get_offset(PostProcessingComponent<T>.NativeFieldInfoPtr__model_k__BackingField);
				Type typeFromHandle = typeof(T);
				if (!typeFromHandle.IsValueType)
				{
					if (!string.Equals(typeFromHandle.FullName, "System.String"))
					{
						IntPtr intPtr4;
						IntPtr intPtr3 = (intPtr4 = IL2CPP.Il2CppObjectBaseToPtr(value as Il2CppObjectBase));
						if (intPtr3 != 0)
						{
							intPtr4 = intPtr3;
							if (IL2CPP.il2cpp_class_is_valuetype(IL2CPP.il2cpp_object_get_class(intPtr3)))
							{
								IntPtr intPtr5 = intPtr3;
								cpblk(intPtr2, IL2CPP.il2cpp_object_unbox(intPtr3), IL2CPP.il2cpp_class_value_size(IL2CPP.il2cpp_object_get_class(intPtr5), (UIntPtr)0));
								return;
							}
						}
						IL2CPP.il2cpp_gc_wbarrier_set_field(intPtr, intPtr2, intPtr4);
					}
					else
					{
						IL2CPP.il2cpp_gc_wbarrier_set_field(intPtr, intPtr2, IL2CPP.ManagedStringToIl2Cpp(value as string));
					}
				}
				else
				{
					*intPtr2 = value;
				}
			}
		}

		// Token: 0x04006594 RID: 26004
		private static readonly IntPtr NativeFieldInfoPtr__model_k__BackingField;

		// Token: 0x04006595 RID: 26005
		private static readonly IntPtr NativeMethodInfoPtr_get_model_Public_get_T_0;

		// Token: 0x04006596 RID: 26006
		private static readonly IntPtr NativeMethodInfoPtr_set_model_Internal_set_Void_T_0;

		// Token: 0x04006597 RID: 26007
		private static readonly IntPtr NativeMethodInfoPtr_Init_Public_Virtual_New_Void_PostProcessingContext_T_0;

		// Token: 0x04006598 RID: 26008
		private static readonly IntPtr NativeMethodInfoPtr_GetModel_Public_Virtual_PostProcessingModel_0;

		// Token: 0x04006599 RID: 26009
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Protected_Void_0;
	}
}
