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

namespace Obi
{
	// Token: 0x02000523 RID: 1315
	[Token(Token = "0x2000523")]
	public class ObiParticleCache : ScriptableObject
	{
		// Token: 0x17000323 RID: 803
		// (get) Token: 0x06002E20 RID: 11808 RVA: 0x00064DB4 File Offset: 0x00062FB4
		[Token(Token = "0x17000323")]
		public float Duration
		{
			[Token(Token = "0x6002E20")]
			[Address(RVA = "0x41EBF0", Offset = "0x41DBF0", VA = "0x18041EBF0")]
			get
			{
				return this.duration;
			}
		}

		// Token: 0x17000324 RID: 804
		// (get) Token: 0x06002E21 RID: 11809 RVA: 0x00064DC8 File Offset: 0x00062FC8
		[Token(Token = "0x17000324")]
		public int FrameCount
		{
			[Token(Token = "0x6002E21")]
			[Address(RVA = "0xE54890", Offset = "0xE53890", VA = "0x180E54890")]
			get
			{
				return this.frames._size;
			}
		}

		// Token: 0x06002E22 RID: 11810 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E22")]
		[Address(RVA = "0xE54630", Offset = "0xE53630", VA = "0x180E54630")]
		public void OnEnable()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E23 RID: 11811 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E23")]
		[Address(RVA = "0xE54730", Offset = "0xE53730", VA = "0x180E54730")]
		public int SizeInBytes()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E24 RID: 11812 RVA: 0x00064DE8 File Offset: 0x00062FE8
		[Token(Token = "0x6002E24")]
		[Address(RVA = "0xE54240", Offset = "0xE53240", VA = "0x180E54240")]
		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: 0x06002E25 RID: 11813 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E25")]
		[Address(RVA = "0xE542D0", Offset = "0xE532D0", VA = "0x180E542D0")]
		private int GetBaseFrame(float time)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E26 RID: 11814 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E26")]
		[Address(RVA = "0xE54020", Offset = "0xE53020", VA = "0x180E54020")]
		public void AddFrame(ObiParticleCache.Frame frame)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E27 RID: 11815 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E27")]
		[Address(RVA = "0xE54370", Offset = "0xE53370", VA = "0x180E54370")]
		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: 0x06002E28 RID: 11816 RVA: 0x00064E30 File Offset: 0x00063030
		[Token(Token = "0x6002E28")]
		[Address(RVA = "0xE54870", Offset = "0xE53870", VA = "0x180E54870")]
		public ObiParticleCache()
		{
		}

		// Token: 0x040036B9 RID: 14009
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x40036B9")]
		public float referenceIntervalSeconds = 0.5f;

		// Token: 0x040036BA RID: 14010
		[FieldOffset(Offset = "0x1C")]
		[Token(Token = "0x40036BA")]
		public bool localSpace = true;

		// Token: 0x040036BB RID: 14011
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x40036BB")]
		[SerializeField]
		private float duration;

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

		// Token: 0x040036BD RID: 14013
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x40036BD")]
		[SerializeField]
		private List<int> references;

		// Token: 0x02000524 RID: 1316
		[Token(Token = "0x2000524")]
		public class UncompressedFrame
		{
			// Token: 0x06002E29 RID: 11817 RVA: 0x00064E58 File Offset: 0x00063058
			[Token(Token = "0x6002E29")]
			[Address(RVA = "0x6A94E0", Offset = "0x6A84E0", VA = "0x1806A94E0")]
			public UncompressedFrame()
			{
				List<int> list = new List();
				this.indices = list;
				List<Vector3> list2 = new List();
				this.positions = list2;
				base..ctor();
			}

			// Token: 0x040036BE RID: 14014
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x40036BE")]
			public List<int> indices;

			// Token: 0x040036BF RID: 14015
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x40036BF")]
			public List<Vector3> positions;
		}

		// Token: 0x02000525 RID: 1317
		[Token(Token = "0x2000525")]
		[Serializable]
		public class Frame
		{
			// Token: 0x06002E2A RID: 11818 RVA: 0x00064E88 File Offset: 0x00063088
			[Token(Token = "0x6002E2A")]
			[Address(RVA = "0x699BD0", Offset = "0x698BD0", VA = "0x180699BD0")]
			public Frame()
			{
				/*
An exception occurred when decompiling this method (06002E2A)

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: 0x06002E2B RID: 11819 RVA: 0x00064EC0 File Offset: 0x000630C0
			[Token(Token = "0x6002E2B")]
			[Address(RVA = "0x699600", Offset = "0x698600", VA = "0x180699600")]
			public void Clear()
			{
				List<Vector3> list = this.positions;
				this.time = 0f;
				list.Clear();
				this.indices.Clear();
			}

			// Token: 0x06002E2C RID: 11820 RVA: 0x00064EF8 File Offset: 0x000630F8
			[Token(Token = "0x6002E2C")]
			[Address(RVA = "0x699B70", Offset = "0x698B70", VA = "0x180699B70")]
			public int SizeInBytes()
			{
				List<Vector3> list = this.positions;
				List<int> list2 = this.indices;
				return list._size;
			}

			// Token: 0x06002E2D RID: 11821 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002E2D")]
			[Address(RVA = "0x699670", Offset = "0x698670", VA = "0x180699670")]
			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: 0x040036C0 RID: 14016
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x40036C0")]
			public float time;

			// Token: 0x040036C1 RID: 14017
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x40036C1")]
			public List<Vector3> positions;

			// Token: 0x040036C2 RID: 14018
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x40036C2")]
			public List<int> indices;
		}
	}
}
