using System;
using System.Collections.Generic;
using Cpp2IlInjected;
using UnityEngine;

namespace Obi
{
	// Token: 0x020004CB RID: 1227
	[Token(Token = "0x20004CB")]
	public class ObiParticleCache : ScriptableObject
	{
		// Token: 0x170002FE RID: 766
		// (get) Token: 0x06002B57 RID: 11095 RVA: 0x0005DAD0 File Offset: 0x0005BCD0
		[Token(Token = "0x170002FE")]
		public float Duration
		{
			[Token(Token = "0x6002B57")]
			[Address(RVA = "0x3FBE40", Offset = "0x3FAC40", VA = "0x1803FBE40")]
			get
			{
				return this.duration;
			}
		}

		// Token: 0x170002FF RID: 767
		// (get) Token: 0x06002B58 RID: 11096 RVA: 0x0005DAE4 File Offset: 0x0005BCE4
		[Token(Token = "0x170002FF")]
		public int FrameCount
		{
			[Token(Token = "0x6002B58")]
			[Address(RVA = "0xD23720", Offset = "0xD22520", VA = "0x180D23720")]
			get
			{
				return this.frames._size;
			}
		}

		// Token: 0x06002B59 RID: 11097 RVA: 0x0005DB04 File Offset: 0x0005BD04
		[Token(Token = "0x6002B59")]
		[Address(RVA = "0xD234C0", Offset = "0xD222C0", VA = "0x180D234C0")]
		public void OnEnable()
		{
			if (this.frames == (ulong)0L)
			{
				List<ObiParticleCache.Frame> list = new List();
				this.frames = list;
			}
			if (this.references == (ulong)0L)
			{
				List<int> list2 = new List();
				int num = 0;
				list2.Add(num);
				this.references = list2;
			}
		}

		// Token: 0x06002B5A RID: 11098 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002B5A")]
		[Address(RVA = "0xD235C0", Offset = "0xD223C0", VA = "0x180D235C0")]
		public int SizeInBytes()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002B5B RID: 11099 RVA: 0x0005DB50 File Offset: 0x0005BD50
		[Token(Token = "0x6002B5B")]
		[Address(RVA = "0xD230D0", Offset = "0xD21ED0", VA = "0x180D230D0")]
		public void Clear()
		{
			List<ObiParticleCache.Frame> list = this.frames;
			this.duration = 0f;
			list.Clear();
			this.references.Clear();
			List<int> list2 = this.references;
			int num = 0;
			list2.Add(num);
		}

		// Token: 0x06002B5C RID: 11100 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002B5C")]
		[Address(RVA = "0xD23160", Offset = "0xD21F60", VA = "0x180D23160")]
		private int GetBaseFrame(float time)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002B5D RID: 11101 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002B5D")]
		[Address(RVA = "0xD22EB0", Offset = "0xD21CB0", VA = "0x180D22EB0")]
		public void AddFrame(ObiParticleCache.Frame frame)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002B5E RID: 11102 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002B5E")]
		[Address(RVA = "0xD23200", Offset = "0xD22000", VA = "0x180D23200")]
		public void GetFrame(float time, bool interpolate, ref ObiParticleCache.Frame result)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002B5F RID: 11103 RVA: 0x0005DB98 File Offset: 0x0005BD98
		[Token(Token = "0x6002B5F")]
		[Address(RVA = "0xD23700", Offset = "0xD22500", VA = "0x180D23700")]
		public ObiParticleCache()
		{
		}

		// Token: 0x040033CF RID: 13263
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x40033CF")]
		public float referenceIntervalSeconds = 0.5f;

		// Token: 0x040033D0 RID: 13264
		[FieldOffset(Offset = "0x1C")]
		[Token(Token = "0x40033D0")]
		public bool localSpace = true;

		// Token: 0x040033D1 RID: 13265
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x40033D1")]
		[SerializeField]
		private float duration;

		// Token: 0x040033D2 RID: 13266
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x40033D2")]
		[SerializeField]
		private List<ObiParticleCache.Frame> frames;

		// Token: 0x040033D3 RID: 13267
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x40033D3")]
		[SerializeField]
		private List<int> references;

		// Token: 0x020004CC RID: 1228
		[Token(Token = "0x20004CC")]
		public class UncompressedFrame
		{
			// Token: 0x06002B60 RID: 11104 RVA: 0x0005DBC0 File Offset: 0x0005BDC0
			[Token(Token = "0x6002B60")]
			[Address(RVA = "0x6ADA10", Offset = "0x6AC810", VA = "0x1806ADA10")]
			public UncompressedFrame()
			{
				List<int> list = new List();
				this.indices = list;
				List<Vector3> list2 = new List();
				this.positions = list2;
				base..ctor();
			}

			// Token: 0x040033D4 RID: 13268
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x40033D4")]
			public List<int> indices;

			// Token: 0x040033D5 RID: 13269
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x40033D5")]
			public List<Vector3> positions;
		}

		// Token: 0x020004CD RID: 1229
		[Token(Token = "0x20004CD")]
		[Serializable]
		public class Frame
		{
			// Token: 0x06002B61 RID: 11105 RVA: 0x0005DBF0 File Offset: 0x0005BDF0
			[Token(Token = "0x6002B61")]
			[Address(RVA = "0x69F0E0", Offset = "0x69DEE0", VA = "0x18069F0E0")]
			public Frame()
			{
				/*
An exception occurred when decompiling this method (06002B61)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void Obi.ObiParticleCache/Frame::.ctor()

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	call:void(object::.ctor, ldloc:Frame[exp:object](this)); 	stfld:float32(Frame::time, ldloc:Frame(this), ldc.r4:float32(0.0)); 	stloc:class [mscorlib]System.Collections.Generic.List`1<valuetype [UnityEngine.CoreModule]UnityEngine.Vector3>(var_0_16, newobj:List`1[exp:class [mscorlib]System.Collections.Generic.List`1<valuetype [UnityEngine.CoreModule]UnityEngine.Vector3>](List`1::.ctor)); 	stfld:class [mscorlib]System.Collections.Generic.List`1<valuetype [UnityEngine.CoreModule]UnityEngine.Vector3>(Frame::positions, ldloc:Frame(this), ldloc:class [mscorlib]System.Collections.Generic.List`1<valuetype [UnityEngine.CoreModule]UnityEngine.Vector3>(var_0_16)); 	stloc:class [mscorlib]System.Collections.Generic.List`1<int32>(var_1_23, newobj:List`1[exp:class [mscorlib]System.Collections.Generic.List`1<int32>](List`1::.ctor)); 	stfld:class [mscorlib]System.Collections.Generic.List`1<int32>(Frame::indices, ldloc:Frame(this), ldloc:class [mscorlib]System.Collections.Generic.List`1<int32>(var_1_23)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}

			// Token: 0x06002B62 RID: 11106 RVA: 0x0005DC28 File Offset: 0x0005BE28
			[Token(Token = "0x6002B62")]
			[Address(RVA = "0x69EB10", Offset = "0x69D910", VA = "0x18069EB10")]
			public void Clear()
			{
				List<Vector3> list = this.positions;
				this.time = 0f;
				list.Clear();
				this.indices.Clear();
			}

			// Token: 0x06002B63 RID: 11107 RVA: 0x0005DC60 File Offset: 0x0005BE60
			[Token(Token = "0x6002B63")]
			[Address(RVA = "0x69F080", Offset = "0x69DE80", VA = "0x18069F080")]
			public int SizeInBytes()
			{
				List<Vector3> list = this.positions;
				List<int> list2 = this.indices;
				return list._size;
			}

			// Token: 0x06002B64 RID: 11108 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002B64")]
			[Address(RVA = "0x69EB80", Offset = "0x69D980", VA = "0x18069EB80")]
			public static void Lerp(ObiParticleCache.Frame a, ObiParticleCache.Frame b, ref ObiParticleCache.Frame result, float mu)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x040033D6 RID: 13270
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x40033D6")]
			public float time;

			// Token: 0x040033D7 RID: 13271
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x40033D7")]
			public List<Vector3> positions;

			// Token: 0x040033D8 RID: 13272
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x40033D8")]
			public List<int> indices;
		}
	}
}
