Ejemplo n.º 1
0
        void RenderEntityOverCursor( Camera camera )
        {
            Vec2 mouse = renderTargetUserControl1.GetFloatMousePosition();

            Ray ray = camera.GetCameraToViewportRay( mouse );

            MapObject mapObject = null;

            Map.Instance.GetObjects( ray, delegate( MapObject obj, float scale )
            {
                if( obj is StaticMesh )
                    return true;
                mapObject = obj;
                return false;
            } );

            if( mapObject != null )
            {
                camera.DebugGeometry.Color = new ColorValue( 1, 1, 0 );
                camera.DebugGeometry.AddBounds( mapObject.MapBounds );
            }
        }
Ejemplo n.º 2
0
        void RenderEntityOverCursor(Camera camera)
        {
            Vec2 mouse = renderTarget.GetFloatMousePosition();
            _mouseOver = null;

            if (mouse.X < 0 || mouse.X > 1 || mouse.Y < 0 || mouse.Y > 1)
                _worldViewModel.ClearMouseOverEntity();
            else
            {
                // Find entity under cursor of mouse
                Ray ray = camera.GetCameraToViewportRay(mouse);
                Map.Instance.GetObjects(ray, delegate(MapObject obj, float scale)
                {
                    if (obj.UserData == null || !(obj.UserData is EntityModel))
                        return true;
                    _mouseOver = obj;
                    return false;
                });

                if (_mouseOver != null)
                {
                    // Put a yellow box around it and a tooltip
                    camera.DebugGeometry.Color = new ColorValue(1, 1, 0);
                    camera.DebugGeometry.AddBounds(_mouseOver.MapBounds);
                    _worldViewModel.SetMouseOverEntity(((EntityModel)_mouseOver.UserData).Id);
                }
                else
                    _worldViewModel.ClearMouseOverEntity();

                RayCastResult result = PhysicsWorld.Instance.RayCast(ray, (int)ContactGroup.CastOnlyCollision);
                _mouseIntersection = result.Position;
                if (result.Shape != null)
                {
                    camera.DebugGeometry.Color = new ColorValue(1, 0, 0);
                    camera.DebugGeometry.AddSphere(new Sphere(result.Position, 0.2f));
                }
            }
            SetToolTipString();

            // Show all selected entities with a blue box around them
            // except MouseOver as it will be yellow
            camera.DebugGeometry.Color = new ColorValue(0.5f, 0.5f, 1);
            foreach (MapObject mo in _worldViewModel.SelectedEntities
                .Select(evm => Entities.Instance.GetByName(evm.Entity.Id.ToString()))
                .OfType<MapObject>()
                .Where(mo => mo != _mouseOver))
                camera.DebugGeometry.AddBounds(mo.MapBounds);
        }