{trigger:cp_Fahrgastpendel}
	1 (S.L.cp_Fahrgastpendel_drag)
{end}

{trigger:cp_Fahrgastpendel_2}
	1 (S.L.cp_Fahrgastpendel_2_drag)
{end}

{trigger:cp_Fahrgastpendel_off}
	0 (S.L.cp_Fahrgastpendel_drag)
{end}

{trigger:cp_Fahrgastpendel_2_off}
	0 (S.L.cp_Fahrgastpendel_2_drag)
{end}

{trigger:cp_Fahrgastpendel_drag}
	(L.L.cp_Fahrgastpendel_drag)
	{if}
		(L.L.cp_Fahrgastpendel_Pos) (L.S.mouse_y) 500 / + 1 min 0 max s0
		l0 (L.L.cp_Fahrgastpendel_Pos) - (L.S.Timegap) / (S.L.cp_Fahrgastpendel_Speed)
		l0 (S.L.cp_Fahrgastpendel_Pos)
	{endif}
{end}

{trigger:cp_Fahrgastpendel_2_drag}
	(L.L.cp_Fahrgastpendel_2_drag)
	{if}
		(L.L.cp_Fahrgastpendel_2_Pos) (L.S.mouse_y) 500 / + 1 min 0 max s0
		l0 (L.L.cp_Fahrgastpendel_2_Pos) - (L.S.Timegap) / (S.L.cp_Fahrgastpendel_2_Speed)
		l0 (S.L.cp_Fahrgastpendel_2_Pos)
	{endif}
{end}

{macro:Fahrgastpendel}
'Sollwert: (wenn mindestens ein Typ an der Stelle durchgeht)
	1 (M.V.GetHumanCountOnPathLink) 1 min s4

'Wenn ein Fahrgast durchwill, dann überschreibe die "Drag"-Eigenschaft:
	l4 {if} 0 (S.L.cp_Fahrgastpendel_drag) (S.L.cp_Fahrgastpendel_2_drag) {endif}

'1:====================================

'Differenz * InvTrägheit = Beschleunigung
	l4 (L.L.cp_Fahrgastpendel_Pos) - (L.L.cp_Fahrgastpendel_traeg) * s1

	(L.L.cp_Fahrgastpendel_drag) !
	{if}

'Anwendung einer Reibungskraft:
		l1 (L.L.cp_Fahrgastpendel_Speed) sgn (L.L.cp_Fahrgastpendel_reib) * - s0
'Prüfen, ob sich die Beschleunigung infolge der Reibung umkehrt - dann wird sie auf 0 gesetzt:
		l0 l1 * 0 < {if} 0 s0 {endif}
'Anwenden der Beschleunigung:
		(L.L.cp_Fahrgastpendel_Speed) l0 (L.S.Timegap) * + (S.L.cp_Fahrgastpendel_Speed)
'Anwenden der Position:
		(L.L.cp_Fahrgastpendel_Pos) (L.L.cp_Fahrgastpendel_Speed) (L.S.Timegap) * + (S.L.cp_Fahrgastpendel_Pos) s0
	{else}
		(L.L.cp_Fahrgastpendel_Pos) s0
	{endif}


'Limits: (Anschlag an Haltestange mit 10% Abprallstärke)
	l0 0 <
	{if}
		0 (S.L.cp_Fahrgastpendel_Pos)
		(T.L.ev_fahrgastpendel_zu)
		(L.L.cp_Fahrgastpendel_Speed) (L.L.cp_Fahrgastpendel_refl) * (S.L.cp_Fahrgastpendel_Speed)
	{endif}
'(anderes Ende ohne Reflexion)
	l0 1 >
	{if}
		1 (S.L.cp_Fahrgastpendel_Pos)
		0 (S.L.cp_Fahrgastpendel_Speed)
	{endif}

'2:====================================

'Differenz * InvTrägheit = Beschleunigung
	l4 (L.L.cp_Fahrgastpendel_2_Pos) - (L.L.cp_Fahrgastpendel_2_traeg) * s1

	(L.L.cp_Fahrgastpendel_2_drag) !
	{if}

'Anwendung einer Reibungskraft:
		l1 (L.L.cp_Fahrgastpendel_2_Speed) sgn (L.L.cp_Fahrgastpendel_2_reib) * - s0
'Prüfen, ob sich die Beschleunigung infolge der Reibung umkehrt - dann wird sie auf 0 gesetzt:
		l0 l1 * 0 < {if} 0 s0 {endif}
'Anwenden der Beschleunigung:
		(L.L.cp_Fahrgastpendel_2_Speed) l0 (L.S.Timegap) * + (S.L.cp_Fahrgastpendel_2_Speed)
'Anwenden der Position:
		(L.L.cp_Fahrgastpendel_2_Pos) (L.L.cp_Fahrgastpendel_2_Speed) (L.S.Timegap) * + (S.L.cp_Fahrgastpendel_2_Pos) s0
	{else}
		(L.L.cp_Fahrgastpendel_2_Pos) s0
	{endif}


'Limits: (Anschlag an Haltestange mit 10% Abprallstärke)
	l0 0 <
	{if}
		0 (S.L.cp_Fahrgastpendel_2_Pos)
		(T.L.ev_fahrgastpendel_2_zu)
		(L.L.cp_Fahrgastpendel_2_Speed) (L.L.cp_Fahrgastpendel_2_refl) * (S.L.cp_Fahrgastpendel_2_Speed)
	{endif}
'(anderes Ende ohne Reflexion)
	l0 1 >
	{if}
		1 (S.L.cp_Fahrgastpendel_2_Pos)
		0 (S.L.cp_Fahrgastpendel_2_Speed)
	{endif}

	(L.L.cp_Fahrertuer_pos) 0.49 >
	{if}
		(L.L.cp_Fahrgastpendel_2_Pos) s0
	
		(L.L.cp_Fahrertuer_pos) (F.L.cp_fahrgastpendel_2_min) (L.L.cp_Fahrgastpendel_2_Pos) max (S.L.cp_Fahrgastpendel_2_Pos)
		l0 (L.L.cp_Fahrgastpendel_2_Pos) - abs 0.05 <
		{if}
			0 (S.L.cp_Fahrgastpendel_2_Speed)
		{endif}
	{endif}
	
	(L.L.cp_Fahrertuer_pos) 0.615 >
	{if}
		(L.L.cp_Fahrgastpendel_Pos) s0
	
		(L.L.cp_Fahrertuer_pos) (F.L.cp_fahrgastpendel_min) (L.L.cp_Fahrgastpendel_Pos) max (S.L.cp_Fahrgastpendel_Pos)
		l0 (L.L.cp_Fahrgastpendel_Pos) - abs 0.05 <
		{if}
			0 (S.L.cp_Fahrgastpendel_Speed)
		{endif}
	{endif}
{end}
