load("//tools/lint:lint.bzl", "add_lint_tests")
load(
    "//tools/skylark:drake_cc.bzl",
    "drake_cc_binary",
    "drake_cc_googletest",
    "drake_cc_library",
)
load("//tools/skylark:test_tags.bzl", "vtk_test_tags")

package(default_visibility = ["//visibility:private"])

drake_cc_library(
    name = "bouncing_ball_vector",
    srcs = ["bouncing_ball_vector.cc"],
    hdrs = ["bouncing_ball_vector.h"],
    deps = [
        "//common:dummy_value",
        "//common:essential",
        "//common:name_value",
        "//common/symbolic:expression",
        "//systems/framework:vector",
    ],
)

drake_cc_library(
    name = "bouncing_ball_plant",
    srcs = ["bouncing_ball_plant.cc"],
    hdrs = ["bouncing_ball_plant.h"],
    deps = [
        ":bouncing_ball_vector",
        "//geometry:geometry_ids",
        "//geometry:scene_graph",
        "//systems/framework:leaf_system",
    ],
)

drake_cc_binary(
    name = "bouncing_ball_run_dynamics",
    srcs = ["bouncing_ball_run_dynamics.cc"],
    add_test_rule = 1,
    test_rule_args = [
        "--simulation_time=0.1",
    ],
    test_rule_tags = vtk_test_tags(),
    deps = [
        ":bouncing_ball_plant",
        "//geometry:drake_visualizer",
        "//geometry:scene_graph",
        "//geometry/render_vtk",
        "//lcm",
        "//systems/analysis:simulator",
        "//systems/framework:diagram",
        "//systems/lcm:lcm_pubsub_system",
        "//systems/primitives:constant_vector_source",
        "//systems/sensors:image_to_lcm_image_array_t",
        "//systems/sensors:rgbd_sensor",
        "@gflags",
    ],
)

drake_cc_binary(
    name = "simple_contact_surface_vis",
    srcs = ["simple_contact_surface_vis.cc"],
    add_test_rule = 1,
    test_rule_args = [
        "--simulation_time=0.01",
    ],
    deps = [
        "//geometry:drake_visualizer",
        "//geometry:scene_graph",
        "//lcm",
        "//lcmtypes:contact_results_for_viz",
        "//systems/analysis:simulator",
        "//systems/framework:diagram",
        "//systems/lcm:lcm_pubsub_system",
        "@gflags",
    ],
)

filegroup(
    name = "models",
    srcs = glob([
        "**/*.bin",
        "**/*.gltf",
        "**/*.ktx2",
        "**/*.mtl",
        "**/*.obj",
        "**/*.png",
        "**/*.sdf",
        "**/*.urdf",
        "**/*.xml",
    ]),
    visibility = [
        "//:__pkg__",
        "//geometry:__pkg__",
        "//geometry/render_gl:__pkg__",
        "//geometry/render_vtk:__pkg__",
    ],
)

drake_cc_library(
    name = "solar_system",
    srcs = ["solar_system.cc"],
    hdrs = ["solar_system.h"],
    data = [":models"],
    deps = [
        "//common",
        "//geometry:geometry_ids",
        "//geometry:geometry_roles",
        "//geometry:scene_graph",
        "//math:geometric_transform",
        "//systems/framework:leaf_system",
    ],
)

drake_cc_binary(
    name = "solar_system_run_dynamics",
    srcs = ["solar_system_run_dynamics.cc"],
    add_test_rule = 1,
    test_rule_args = [
        "--simulation_time=0.1",
    ],
    deps = [
        ":solar_system",
        "//geometry:drake_visualizer",
        "//geometry:scene_graph",
        "//lcm",
        "//systems/analysis:simulator",
        "//systems/framework:diagram",
        "//systems/primitives:constant_vector_source",
        "@gflags",
    ],
)

add_lint_tests(enable_clang_format_lint = False)
