//=============================================================================
// KFKActorSpawnable_Door
//=============================================================================
// A custom KActor that will hide if it lands in an akward position
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//  - Author 4/15/2014
//=============================================================================

class KFKActorSpawnable_Door extends KFKActorSpawnable;

event OnSleepRBPhysics()
{
	HideNonFlatMesh();
}

/** If a door lands at an awkward angle, hide it as soon as we can no longer see it */
simulated function HideNonFlatMesh()
{
	if ( !CheckOnFlatGround() )
	{
		StaticMeshComponent.SetActorCollision(false, false);

		if ( `TimeSince( LastRenderTime ) > 1.0 )
		{
			StaticMeshComponent.SetHidden(TRUE);
		}
		else
		{
			SetTimer(1.0f, false, nameof(HideNonFlatMesh), self);
		}
	}
}

/** Check if the door is laying flat on the ground after being destroyed */
function bool CheckOnFlatGround()
{
	local vector DoorX, DoorY, DoorZ;

    GetAxes(Rotation, DoorX, DoorY, DoorZ);
	return ( DoorX.Z < 0.95f ) ? false : true; 
}

defaultproperties
{
	bCallRigidBodyWakeEvents=true
	RemoteRole=ROLE_None
	LifeSpan=0.f
}
