internal static void _SetCollisionMask(ModelVisual3D visual, CollisionMask value) { if (visual == null) throw new ArgumentNullException("visual"); TerrianCollisionMask3D collisionMask = (value as TerrianCollisionMask3D); if (collisionMask != null) { if (!(visual.Content is GeometryModel3D)) throw new InvalidOperationException("Current only GeometryModel3D models supported for TerrianCollisionMask3D."); collisionMask.Visual = visual; visual.SetValue(World.CollisionMaskProperty, value); } }
public void Initialise(World world) { if (_isInitialised) return; if (world == null) throw new ArgumentNullException("world"); _world = world; _collision = OnInitialise(world); if (_collision == null) { _collision = new NullCollision(_world); } _body = new CBody(_collision.NewtonCollision); _body.Destructor += _body_Destructor; _body.AutoFreeze = this.AutoPause; _body.UserData = this; _body.Matrix = _visualMatrix.Matrix; OnInitialiseEnd(); // this might adjust the _body.Matrix property // not initialised yet, nothing should be called on property changed event this.Transform = new MatrixTransform3D(_body.Matrix); _body.SetTransform += body_setTransform; _body.ApplyForceAndTorque += body_ApplyForceAndTorque; CalculateMass(this.Mass); world.AddBody(this); _isInitialised = true; }
public static void SetCollisionMask(Geometry3D geometry, CollisionMask value) { if (geometry == null) throw new ArgumentNullException("geometry"); geometry.SetValue(CollisionMaskProperty, value); }