Exemplo n.º 1
0
        protected override CollisionMask OnInitialise(Matrix3D initialMatrix)
        {
            if (Visual.Content != null)
            {
                TerrianCollisionMask3D terrianCollisionMask3D = null;
                CollisionMask          collisionMask          = _GetCollisionMask(this.Visual);
                if (collisionMask != null)
                {
                    if (!(collisionMask is TerrianCollisionMask3D))
                    {
                        throw new InvalidOperationException("Currently another type of CollisionMaskMask is attached to this visual.");
                    }
                    else
                    {
                        terrianCollisionMask3D = (TerrianCollisionMask3D)collisionMask;
                    }
                }
                else
                {
                    terrianCollisionMask3D = new TerrianCollisionMask3D();
                    _SetCollisionMask(this.Visual, terrianCollisionMask3D);
                }

                terrianCollisionMask3D.Initialise(this.World, initialMatrix);
                return(terrianCollisionMask3D);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 2
0
        protected override CollisionMask OnInitialise(Matrix3D initialMatrix)
        {
            if (Visual.Content != null)
            {
                TerrianCollisionMask3D terrianCollisionMask3D = null;
                CollisionMask collisionMask = _GetCollisionMask(this.Visual);
                if (collisionMask != null)
                {
                    if (!(collisionMask is TerrianCollisionMask3D))
                        throw new InvalidOperationException("Currently another type of CollisionMaskMask is attached to this visual.");
                    else
                        terrianCollisionMask3D = (TerrianCollisionMask3D)collisionMask;
                }
                else
                {
                    terrianCollisionMask3D = new TerrianCollisionMask3D();
                    _SetCollisionMask(this.Visual, terrianCollisionMask3D);
                }

                terrianCollisionMask3D.Initialise(this.World, initialMatrix);
                return terrianCollisionMask3D;
            }
            else
                return null;
        }
Exemplo n.º 3
0
        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);
            }
        }