SpringCollision.cs

A component that listens for physics collisions and drives a skinned model parameter and a rigidbody impulse. On collision start it sets a material/skin parameter named "springparam" to 1 and applies a large upward impulse to the Rigidbody; on collision stop it resets the parameter to 0.

Native Interop
using Sandbox;

public sealed class SpringCollision : Component, Component.ICollisionListener
{
	[Property] public SkinnedModelRenderer Spring { get; set; }
	[Property] public Rigidbody rb { get; set; }
	void ICollisionListener.OnCollisionStart( Collision collision )

	{
		Spring.Set( "springparam", 1 );
		rb.ApplyImpulse( Vector3.Up * 50000f );



	}
	void ICollisionListener.OnCollisionStop( CollisionStop collision )
	{
		Spring.Set( "springparam", 0 );
	}
	void ICollisionListener.OnCollisionUpdate( Collision collision )
	{

	}
}