5 using SiliconStudio.Core.Collections;
6 using SiliconStudio.Core.Mathematics;
26 if (InternalCollider == null)
return;
28 InternalCollider.Dispose();
29 InternalCollider = null;
53 InternalCollider.ActivationState = canSleep ? BulletSharp.ActivationState.ActiveTag : BulletSharp.ActivationState.DisableDeactivation;
57 InternalCollider.ActivationState = BulletSharp.ActivationState.DisableSimulation;
81 InternalCollider.ActivationState = value ? BulletSharp.ActivationState.ActiveTag : BulletSharp.ActivationState.DisableDeactivation;
96 return InternalCollider.IsActive;
106 InternalCollider.Activate(forceActivation);
115 public float Restitution
119 return InternalCollider.Restitution;
123 InternalCollider.Restitution = value;
133 public float Friction
137 return InternalCollider.Friction;
141 InternalCollider.Friction = value;
151 public float RollingFriction
155 return InternalCollider.RollingFriction;
159 InternalCollider.RollingFriction = value;
169 public float CcdMotionThreshold
173 return InternalCollider.CcdMotionThreshold;
177 InternalCollider.CcdMotionThreshold = value;
187 public float CcdSweptSphereRadius
191 return InternalCollider.CcdSweptSphereRadius;
195 InternalCollider.CcdSweptSphereRadius = value;
205 public bool IsTrigger
209 return (InternalCollider.CollisionFlags & BulletSharp.CollisionFlags.NoContactResponse) != 0;
213 if (value) InternalCollider.CollisionFlags |= BulletSharp.CollisionFlags.NoContactResponse;
214 else if (InternalCollider.CollisionFlags.HasFlag(BulletSharp.CollisionFlags.NoContactResponse)) InternalCollider.CollisionFlags ^= BulletSharp.CollisionFlags.NoContactResponse;
218 internal BulletSharp.CollisionObject InternalCollider;
226 public Matrix PhysicsWorldTransform
230 return InternalCollider.WorldTransform;
234 InternalCollider.WorldTransform = value;
253 public bool ContactsAlwaysValid {
get; set; }
256 internal bool NeedsCollisionCheck
260 return ContactsAlwaysValid || eventUsers > 0;
264 readonly
object eventsLock =
new Object();
266 event EventHandler<CollisionArgs> PrivateOnFirstContactBegin;
270 public event EventHandler<CollisionArgs> OnFirstContactBegin
277 PrivateOnFirstContactBegin += value;
285 PrivateOnFirstContactBegin -= value;
290 internal void PropagateOnFirstContactBegin(
CollisionArgs args)
292 var e = PrivateOnFirstContactBegin;
293 if (e == null)
return;
297 event EventHandler<CollisionArgs> PrivateOnContactBegin;
301 public event EventHandler<CollisionArgs> OnContactBegin
308 PrivateOnContactBegin += value;
316 PrivateOnContactBegin -= value;
323 var e = PrivateOnContactBegin;
324 if (e == null)
return;
328 event EventHandler<CollisionArgs> PrivateOnContactChange;
332 public event EventHandler<CollisionArgs> OnContactChange
339 PrivateOnContactChange += value;
347 PrivateOnContactChange -= value;
354 var e = PrivateOnContactChange;
355 if (e == null)
return;
359 event EventHandler<CollisionArgs> PrivateOnLastContactEnd;
363 public event EventHandler<CollisionArgs> OnLastContactEnd
370 PrivateOnLastContactEnd += value;
378 PrivateOnLastContactEnd -= value;
385 var e = PrivateOnLastContactEnd;
386 if (e == null)
return;
390 event EventHandler<CollisionArgs> PrivateOnContactEnd;
394 public event EventHandler<CollisionArgs> OnContactEnd
401 PrivateOnContactEnd += value;
409 PrivateOnContactEnd -= value;
416 var e = PrivateOnContactEnd;
417 if (e == null)
return;
421 readonly FastList<Contact> contacts =
new FastList<Contact>();
428 public FastList<Contact> Contacts
442 public string Tag {
get; set; }
451 public object EntityObject {
get; set; }
Collider(ColliderShape collider)
Initializes a new instance of the Collider class.
void Activate(bool forceActivation=false)
Attempts to awake the collider.
virtual void Dispose()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resourc...
using SiliconStudio.Paradox. Physics
Represents a 4x4 mathematical matrix.