You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.8 KiB
56 lines
1.8 KiB
using UnityEngine;
|
|
|
|
namespace UnityEditor.VFX.Block
|
|
{
|
|
class CollisionCylinderDeprecated : CollisionBase
|
|
{
|
|
public override string name { get { return "Collide with Cylinder (deprecated)"; } }
|
|
|
|
public class InputProperties
|
|
{
|
|
[Tooltip("Sets the cylinder with which particles can collide.")]
|
|
public Cylinder Cylinder = new Cylinder() { height = 1.0f, radius = 0.5f };
|
|
}
|
|
|
|
private string collisionTestSource
|
|
{
|
|
get
|
|
{
|
|
if (mode == Mode.Solid)
|
|
return @"
|
|
bool collision = abs(dir.y) < halfHeight && sqrLength < cylinderRadius * cylinderRadius;
|
|
";
|
|
else
|
|
return @"
|
|
bool collision = abs(dir.y) > halfHeight || sqrLength > cylinderRadius * cylinderRadius;
|
|
";
|
|
}
|
|
}
|
|
|
|
private string normalAndPushSource
|
|
{
|
|
get
|
|
{
|
|
if (mode == Mode.Solid)
|
|
return @"
|
|
n *= distToSide < distToCap ? float3(1,0,1) : float3(0,1,0);
|
|
position += n * min(distToSide,distToCap);
|
|
";
|
|
else
|
|
return @"
|
|
position += n * float3(max(0,distToSide).xx,max(0,distToCap)).xzy;
|
|
n *= distToSide > distToCap ? float3(1,0,1) : float3(0,1,0);
|
|
";
|
|
}
|
|
}
|
|
|
|
public override void Sanitize(int version)
|
|
{
|
|
var newCollisionCone = ScriptableObject.CreateInstance<CollisionConeDeprecatedV2>();
|
|
SanitizeHelper.MigrateBlockTShapeFromShape(newCollisionCone, this);
|
|
var newCollisionConeShape = ScriptableObject.CreateInstance<CollisionShape>();
|
|
SanitizeHelper.MigrateBlockCollisionShapeToComposed(newCollisionConeShape, newCollisionCone, CollisionShapeBase.Type.Cone);
|
|
ReplaceModel(newCollisionConeShape, this);
|
|
}
|
|
}
|
|
}
|