namespace BP
{
	namespace Actors
	{
		class Barrel : BP::ScriptActor
		{
			//------------------------------------------------------------------------------------------------------------------------
			Barrel(kActor@ actor)
			{
				super(actor);
			}
			//------------------------------------------------------------------------------------------------------------------------
			void BP_OnStart()
			{
				if (self.IsMarked())
				{
					Dispose();
					return;
				}
				
				int barrelRenderActorID;
				if (self.Definition().GetInt("BP_RenderActor", barrelRenderActorID))
				{
					self.RunFxEvent("Actor_Hide");
					kVec3 renderOffset = Math::vecZero;
					self.Definition().GetVector("BP_RenderOffset", renderOffset);
					self.SetTarget(BP::Spawn::Actor(barrelRenderActorID, self.Origin() + renderOffset, self.Yaw()));
				}
			}
			//------------------------------------------------------------------------------------------------------------------------
			void BP_OnDeath(kDamageInfo& in dmgInfo)
			{
				BP::Spawn::Particle("particles/Medium_explosion.particle", @self, self.Origin(), kQuat(self.Pitch(), 0, self.Yaw()));
				self.PlaySound("sounds/shaders/Explosion Medium 1.ksnd");
				self.Mark(true);
				Dispose();
			}
			//------------------------------------------------------------------------------------------------------------------------
			void Dispose()
			{
				if (self.GetTarget() !is null)
				{
					self.GetTarget().Remove();
				}
				self.Remove();
			}
			//------------------------------------------------------------------------------------------------------------------------
		};
	}
}
